2013-07-28 145 views
5

有沒有什麼辦法讓IdeaVim瞭解輸入模式之外的俄羅斯佈局?在我的.vimrc中,我有IdeaVim和俄羅斯佈局

set keymap=russian-jcukenwin 

所以我可以通過按Ctrl + ^來切換VIM中的語言,並且相對滿意。但似乎IdeaVim沒有閱讀或理解這個設置。以俄語停止輸入某些內容(例如註釋),切換到命令模式並卡住是非常煩人的。有什麼解決方法嗎?

回答

0

Привіт!簡短的回答是否定的,沒有解決方法。除非你願意修改IdeaVim。

當按下某個鍵時,可以獲得關於該事件的不同信息。對於我們的情況,最有趣的作品是hardware key codekey value。前者對於s,是相同的,它們位於相同的鍵上;後者因佈局而異。由於用於綁定的IdeaVim uses key values(並且在設置操作中也綁定了鍵值),因此在使用鍵值不同的佈局時不可能觸發操作。因此,例如,它在德國的佈局中會運行良好。

我會建議你避免用俄語寫評論。

5

首先,我嘗試使用langmap,如gist,但IdeaVim不支持langmap

下一個我試圖用map所以我做了這個解決方案:

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

您可以自定義你的鍵盤佈局。

但是我忘記了IdeaVim不支持Vimscript中和cmap和我加入echo 'map '.ruChar.' '.enChar(註釋行),所附代碼從上方.vimrc和從命令行打開VIM所以印刷我所有map命令。我將他們添加到.ideavimrc和所附管的映射(|)字符:

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

現在我有IdeaVim使用西里爾佈局在正常工作時,視覺+選擇和操作符等待模式。

+0

謝謝,它適合我!好吧,差不多。 我意識到像'ciw'或'daw'這樣的組合仍然不起作用。看起來像'i'和'a'在用作'inside'和'around'時沒有正確處理。任何想法如何解決這個問題? –

+0

這些組合對我也不起作用:(我還沒有找到解決方案,如果你願意的話請在這裏發帖 – mixel

+0

非常感謝!我補充說,編碼應該是ANSI – zhekaus