2013-07-28 11 views
5

Czy jest jakiś sposób, aby IdeaVim zrozumiał układ rosyjski w trybach innych niż Input? W moim .vimrc mamIdeaVim i układ rosyjski

set keymap=russian-jcukenwin 

więc mogę przełączać języki w VIM wciskając Ctrl +^i stosunkowo zadowolony z tego. Ale wydaje się, że IdeaVim nie odczytuje ani nie rozumie tego ustawienia. Może być bardzo denerwujące, aby przestać pisać coś (na przykład komentarz) po rosyjsku, przełączyć się w tryb poleceń i utknąć. Czy istnieje jakieś obejście?

Odpowiedz

0

Привіт! Krótka odpowiedź brzmi: nie, nie ma obejścia. Jeśli nie chcesz modyfikować IdeaVim.

Po naciśnięciu klawisza można uzyskać różne informacje o zdarzeniu. W naszym przypadku najciekawsze elementy to: hardware key code i . Pierwsza z nich jest identyczna dla ,,, , , która znajduje się na tym samym klawiszu; ten ostatni różni się od układu do układu. Ponieważ IdeaVim uses key values dla powiązań (oraz w działaniach ustawień są również powiązane z wartościami kluczy), nie jest możliwe wyzwolenie akcji podczas korzystania z układu, w którym wartość klucza jest inna. W konsekwencji na przykład będzie dobrze działać w układzie niemieckim.

Zalecam, aby unikać pisania komentarzy po rosyjsku.

5

Najpierw próbowałem użyć langmap jak w tym gist, ale IdeaVim nie obsługuje langmap.

Następny Próbowałem użyć map więc zrobiłem tego rozwiązania:

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 Ё \| 

można dostosować go do układu klawiatury.

Ale zapomniałem, że IdeaVim nie obsługuje vimscript i cmap i dodałem echo 'map '.ruChar.' '.enChar (skomentowany linia), kod dołączony do .vimrc z góry i otworzył vim z linii poleceń, dlatego drukowane mi wszystkie map poleceń. I dodaje je do .ideavimrc i dołączane odwzorowanie potoku (|) Charakter:

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 Ё /| 

Teraz mam IdeaVim pracy z cyrylicą w układzie normalnym, wybierz i operator-pending tryby wizualnych +.

+0

Dzięki, to działa dla mnie! Cóż prawie. Zdałem sobie sprawę, że kombinacje takie jak 'ciw' lub' daw' nadal nie działają. Wygląda na to, że 'i' i' a' nie są poprawnie obsługiwane, gdy są używane jako "wewnątrz" i "w pobliżu". Jakieś pomysły, jak to naprawić? –

+0

Te kombinacje też nie działają dla mnie :(Nie znalazłem jeszcze rozwiązania.Jeśli następnie wyślemy tutaj .. – mixel

+0

Wielkie dzięki! Dodałem, że kodowanie powinno być ANSI – zhekaus

Powiązane problemy