2013-07-28 27 views
5

Có cách nào để làm cho IdeaVim hiểu bố cục tiếng Nga ở các chế độ khác ngoài Nhập liệu không? Trong .vimrc của tôi, tôi cóIdeaVim và bố cục tiếng Nga

set keymap=russian-jcukenwin 

vì vậy tôi có thể chuyển đổi ngôn ngữ bằng VIM bằng cách nhấn Ctrl +^và tương đối hài lòng với điều đó. Nhưng có vẻ như IdeaVim không đọc hoặc hiểu cài đặt này. Nó có thể rất khó chịu để dừng gõ một cái gì đó (ví dụ bình luận) bằng tiếng Nga, chuyển sang chế độ lệnh và bị kẹt. Có bất kỳ công việc xung quanh?

Trả lời

0

Привіт! Câu trả lời ngắn gọn là không, không có cách giải quyết nào. Trừ khi bạn sẵn sàng sửa đổi IdeaVim.

Khi nhấn một phím, người ta có thể nhận được thông tin khác về sự kiện. Đối với trường hợp của chúng tôi, các phần thú vị nhất là hardware key codekey value. Tên cũ giống hệt với s, ыі, nằm trên cùng một khóa; thứ hai khác với bố cục để bố cục. Vì IdeaVim uses key values cho các ràng buộc (và trong các hành động cài đặt cũng bị ràng buộc với các giá trị khóa), bạn không thể kích hoạt các hành động trong khi sử dụng bố cục nơi giá trị khóa khác nhau. Kết quả là, nó sẽ làm việc tốt trong một bố trí của Đức, ví dụ.

Tôi khuyên bạn nên tránh viết nhận xét bằng tiếng Nga.

5

Trước tiên, tôi đã cố gắng sử dụng langmap như trong số này gist nhưng IdeaVim không hỗ trợ langmap.

Tiếp theo, tôi cố gắng sử dụng map vì vậy tôi làm giải pháp này:

let rumap = 'йцукенгшщзхъфывапролджэёячсмитьбюЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ' 
let enmap = 'qwertyuiop[]asdfghjkl;''\zxcvbnm,.QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>' 
let mapLen = strchars(rumap) 
let i = 0 
while i < mapLen 
    let ruChar = matchstr(rumap, ".", byteidx(rumap, i)) 
    let enChar = enmap[i] 
    "echo 'map '.ruChar.' '.enChar 
    execute 'map '.ruChar.' '.enChar 
    execute 'cmap '.ruChar.' '.enChar 
    let i += 1 
endwhile 

map Ё \| 
cmap Ё \| 

Bạn có thể tùy chỉnh nó cho bố trí bàn phím của bạn.

Nhưng tôi quên rằng IdeaVim không hỗ trợ vimscript và cmap và tôi đã thêm echo 'map '.ruChar.' '.enChar (dòng nhận xét), mã nối từ trên xuống .vimrc và mở vim từ dòng lệnh để nó in cho tôi tất cả map lệnh. Chúng tôi được gửi tới .ideavimrc và nối bản đồ của ống (|) nhân vật:

map й q 
map ц w 
map у e 
map к r 
map е t 
map н y 
map г u 
map ш i 
map щ o 
map з p 
map х [ 
map ъ ] 
map ф a 
map ы s 
map в d 
map а f 
map п g 
map р h 
map о j 
map л k 
map д l 
map ж ; 
map э ' 
map ё \ 
map я z 
map ч x 
map с c 
map м v 
map и b 
map т n 
map ь m 
map б , 
map ю . 
map Й Q 
map Ц W 
map У E 
map К R 
map Е T 
map Н Y 
map Г U 
map Ш I 
map Щ O 
map З P 
map Х { 
map Ъ } 
map Ф A 
map Ы S 
map В D 
map А F 
map П G 
map Р H 
map О J 
map Л K 
map Д L 
map Ж : 
map Э " 
map Я Z 
map Ч X 
map С C 
map М V 
map И B 
map Т N 
map Ь M 
map Б < 
map Ю > 
map Ё /| 

Bây giờ tôi có IdeaVim làm việc với bố trí Cyrillic trong bình thường, lựa chọn và chế độ của nhà điều hành cấp phát thị giác +.

+0

Cảm ơn, nó phù hợp với tôi! Vâng, gần như. Tôi nhận ra rằng các kết hợp như 'ciw' hoặc' daw' vẫn không hoạt động. Có vẻ như 'i' và' a' không được xử lý đúng khi được sử dụng như 'bên trong' và 'xung quanh'. Bất kỳ ý tưởng làm thế nào điều này có thể được cố định? –

+0

Những kết hợp này cũng không có tác dụng với tôi :(Tôi chưa tìm được giải pháp. Nếu sau đó bạn sẽ đăng nó ở đây. – mixel

+0

Cảm ơn rất nhiều! Tôi đã thêm rằng mã hóa phải là ANSI – zhekaus

Các vấn đề liên quan