vim - IdeaVim 和俄语布局

标签 vim keyboard-layout ideavim

有没有办法让IdeaVim在输入以外的模式下理解俄语布局?在我的 .vimrc 中,我有

set keymap=russian-jcukenwin

所以我可以通过按 Ctrl+^ 在 VIM 中切换语言,对此我感到比较满意。但似乎IdeaVim 没有阅读或理解这个设置。停止用俄语输入某些内容(例如评论),切换到命令模式并卡住可能会非常烦人。有什么解决方法吗?

最佳答案

首先我尝试使用 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 在正常、视觉+选择和操作符挂起模式下使用西里尔字母布局。

关于vim - IdeaVim 和俄语布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17905207/

相关文章:

regex - 如何通过第一个 "testing"或 "preview"搜索部分在 Vim 中有效地搜索和替换?

windows - 如何获取当前键盘布局的代码页?

intellij-idea - 我如何告诉 IntelliJ IdeaVim 重新获取 .ideavimrc

java - Linux 键盘布局

vim - .ideavimrc 中有用的自定义

ideavim - 映射以在 IdeaVim 中用 Action 注释掉多行?

Vim:病原体中 vimball 插件的建议

python - 预建的 GVim 7.3。 +python 支持的二进制文件

vim - julia-vim 中的 Julia 语法高亮

Android键盘布局语言