有沒有什麼辦法讓IdeaVim瞭解輸入模式之外的俄羅斯佈局?在我的.vimrc中,我有IdeaVim和俄羅斯佈局
set keymap=russian-jcukenwin
所以我可以通過按Ctrl + ^來切換VIM中的語言,並且相對滿意。但似乎IdeaVim沒有閱讀或理解這個設置。以俄語停止輸入某些內容(例如註釋),切換到命令模式並卡住是非常煩人的。有什麼解決方法嗎?
有沒有什麼辦法讓IdeaVim瞭解輸入模式之外的俄羅斯佈局?在我的.vimrc中,我有IdeaVim和俄羅斯佈局
set keymap=russian-jcukenwin
所以我可以通過按Ctrl + ^來切換VIM中的語言,並且相對滿意。但似乎IdeaVim沒有閱讀或理解這個設置。以俄語停止輸入某些內容(例如註釋),切換到命令模式並卡住是非常煩人的。有什麼解決方法嗎?
Привіт!簡短的回答是否定的,沒有解決方法。除非你願意修改IdeaVim。
當按下某個鍵時,可以獲得關於該事件的不同信息。對於我們的情況,最有趣的作品是hardware key code
和key value
。前者對於s,和和是相同的,它們位於相同的鍵上;後者因佈局而異。由於用於綁定的IdeaVim uses key values(並且在設置操作中也綁定了鍵值),因此在使用鍵值不同的佈局時不可能觸發操作。因此,例如,它在德國的佈局中會運行良好。
我會建議你避免用俄語寫評論。
首先,我嘗試使用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使用西里爾佈局在正常工作時,視覺+選擇和操作符等待模式。
謝謝,它適合我!好吧,差不多。 我意識到像'ciw'或'daw'這樣的組合仍然不起作用。看起來像'i'和'a'在用作'inside'和'around'時沒有正確處理。任何想法如何解決這個問題? –
這些組合對我也不起作用:(我還沒有找到解決方案,如果你願意的話請在這裏發帖 – mixel
非常感謝!我補充說,編碼應該是ANSI – zhekaus