IdeaVim和俄罗斯布局

时间:2013-07-28 05:14:08

标签: vim keyboard-layout ideavim

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

set keymap=russian-jcukenwin

所以我可以通过按Ctrl + ^来切换VIM中的语言,并且相对满意。但似乎IdeaVim没有阅读或理解这个设置。用俄语停止键入某些内容(例如注释),切换到命令模式并卡住会非常烦人。有没有解决方法?

3 个答案:

答案 0 :(得分:6)

首先,我尝试使用此gist中的langmap,但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在正常,视觉+选择和操作员待定模式下使用西里尔文布局。

答案 1 :(得分:0)

Привіт!简短的回答是否定的,没有解决方法。除非你愿意修改IdeaVim。

按下某个键后,可以获得有关该事件的不同信息。对于我们的案例,最有趣的部分是hardware key codekey value。前者对于 s ыі是相同的,它们位于同一个键上;后者与布局不同。由于IdeaVim uses key values用于绑定(并且在设置操作中也绑定到键值),因此在使用键值不同的布局时无法触发操作。因此,它可以在德国布局中很好地工作。例如。

我建议你不要用俄语写评论。

答案 2 :(得分:0)

您需要安装fcitxIdeaVimExtension并在~/.ideavimrc文件中添加以下行:

set keep-english-in-normal-and-restore-in-insert

IDE将在正常模式下切换为英语,并在插入模式下恢复以前的输入语言。

在Ubuntu Gnome(source)上安装和配置fcitx:

  1. 安装sudo apt install fcitx
  2. 使用以下内容创建~/.pam_environment文件:
XMODIFIERS DEFAULT=@im=fcitx
GTK_IM_MODULE DEFAULT=fcitx
QT_IM_MODULE DEFAULT=fcitx
  1. 添加启动应用程序:

fcitx startup program

  1. 安装Input Method Panel Gnome扩展。

对于Vim,您需要安装fcitx.vim插件。