2013-07-28 14 views
5

C'è un modo per far capire a IdeaVim il layout russo in modalità diverse da Input? Nel mio Vimrc hoIdeaVim e layout russo

set keymap=russian-jcukenwin 

così posso cambiare le lingue in VIM premendo Ctrl +^e relativamente felice con quello. Ma sembra che IdeaVim non legge o capisce questa impostazione. Può essere molto fastidioso interrompere la digitazione di qualcosa (ad esempio un commento) in russo, passare alla modalità comando e bloccarla. C'è qualche soluzione?

risposta

0

Привіт! La risposta breve è no, non c'è soluzione. A meno che non voglia modificare IdeaVim.

Quando si preme un tasto, è possibile ottenere informazioni diverse sull'evento. Nel nostro caso, i pezzi più interessanti sono hardware key code e key value. Il primo è identico per s, ы e in, che si trovano sulla stessa chiave; quest'ultimo differisce da un layout all'altro. Poiché IdeaVim uses key values per i collegamenti (e nelle azioni delle impostazioni sono anche associati ai valori chiave), non è possibile attivare azioni mentre si utilizza un layout in cui il valore della chiave è diverso. Di conseguenza, funzionerà bene in un layout tedesco, ad esempio.

Consiglierei comunque di evitare di scrivere commenti in russo.

5

Per prima cosa ho provato a utilizzare langmap come in questo gist ma IdeaVim non supporta langmap.

Poi ho cercato di usare map così ho fatto questa soluzione:

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

È possibile personalizzare per il layout della tastiera.

Ma dimenticato che IdeaVim non supporta vimscript e cmap e ho aggiunto echo 'map '.ruChar.' '.enChar (line commentato), codice aggiunto dall'alto per .vimrc e aperto vim da linea di comando in modo che mi stampato tutti map comandi. Ho aggiunte al .ideavimrc e aggiunto mappatura delle pipe (|) carattere:

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

Ora ho IdeaVim lavorare con il layout cirillico in condizioni normali, selezionare e modalità Operator-pending visivi +.

+0

Grazie, funziona per me! Be 'quasi. Ho realizzato che combinazioni come 'ciw' o' daw' continuano a non funzionare. Sembra che 'i' e' a' non vengano gestiti correttamente quando usati come 'dentro' e 'intorno'. Qualche idea su come può essere risolto? –

+0

Queste combinazioni non funzionano anche per me :(Non ho ancora trovato la soluzione Se poi la prego di postare qui. – mixel

+0

Grazie mille! Ho aggiunto che la codifica dovrebbe essere ANSI – zhekaus