vim中的多个有向图

use*_*249 3 vim hotkeys digraphs

您可能知道,可以使用有向图在vim中输入一些特定字符(例如,在输入模式下,Ctrl + K Rg产生®).

有没有办法,定义热键,进入允许我输入多个有向图的模式?例如,要写"sayon​​ara"而不是"Ctrl + K sa Ctrl + K yo Ctrl + K na Ctrl + K ra"来获得"さよなら".

Ben*_*oit 5

不是我知道的.但是你可以想象这个:

exec 'normal! i' . substitute('sayonara', '\(..\)', nr2char(11) . '\1', 'g')
Run Code Online (Sandbox Code Playgroud)

nr2char(11)是一个CTRL-K字符.

如果你想要一个映射(例如在视觉模式中点击选择上的F1来转换它;仅在单行字符选择上使用它):

xnoremap <f1> d:exec 'normal! a' . substitute(@", '\(..\)', nr2char(11) . '\1', 'g')<ENTER>
Run Code Online (Sandbox Code Playgroud)

可能有更多正确的方法(不删除默认寄存器的内容)但我今天太懒了.我怀疑一些Stackers可能想用更干净的代码发布另一个答案,他们会得到我的upvote.