IdeaVim和俄罗斯布局

pu82cl6c  于 2023-08-05  发布在  其他
关注(0)|答案(4)|浏览(111)

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

set keymap=russian-jcukenwin

字符串
所以我可以通过按Ctrl+^在VIM中切换语言,我对此比较满意。但似乎IdeaVim并不读取或理解此设置。它可以是非常恼人的停止键入的东西(例如评论)在俄语,切换到命令模式和卡住。是否有任何变通方法?

6qfn3psc

6qfn3psc1#

首先,我尝试使用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(|)字符:

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在正常,视觉+选择和操作员挂起模式下使用西里尔文布局。

j1dl9f46

j1dl9f462#

您可以安装FcitxIdeaVimExtension
~/.ideavimrc中添加以下行:

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

字符串
IDE将在正常模式下切换到英语,并在插入模式下恢复以前的输入语言。
在Ubuntu Gnome(Fcitx - ArchWiki)上安装和配置Fcitx:
1.使用sudo apt install fcitx安装
1.创建包含以下内容的~/.pam_environment文件:

XMODIFIERS DEFAULT=@im=fcitx
GTK_IM_MODULE DEFAULT=fcitx
QT_IM_MODULE DEFAULT=fcitx


1.添加启动应用程序:


的数据
1.安装Input Method Panel Gnome扩展。
对于Vim,您可能需要安装fcitx.vim插件。

3ks5zfa0

3ks5zfa03#

简单的回答是没有,没有变通方法.除非你愿意修改IdeaVim。
当按下一个键时,人们可以得到关于该事件的不同信息。对于我们的例子,最有趣的部分是hardware key codekey value。前者对于位于同一键上的s、ы和是相同的;后者因布局而异。由于IdeaVim uses key values用于绑定(并且在设置中,操作也绑定到键值),因此在使用键值不同的布局时无法触发操作。因此,例如,它将在德国布局中工作得很好。
无论如何,我建议你避免用俄语写评论。

k4emjkb1

k4emjkb14#

Windows上出现问题。
您的.ideavimrc文件必须与项目文件的编码相同。
在我的例子中,当我的项目文件使用UTF-8时,IdeaVim使用windows-1251编码创建了.ideavimrc。配置不起作用。我改变了编码,重新加载骑士,它终于适用。

相关问题