在我~/.vim/ftplugin/tex/insert.vim
的文件中,我有以下映射
; <Nul> is ctrl-space
imap <Nul> \,
imap <Nul><Nul> ~
imap <Nul><Nul><Nul> \enspace
imap <Nul><Nul><Nul><Nul> \quad
imap <Nul><Nul><Nul><Nul><Nul> \qquad
这允许我通过按下ctrl-space来插入不同宽度的空格,每次按下都会使空白更长。当我输入第一个ctrl-space时,我得到一个X
,它等着我看看我是否想要输入更多的ctrl-spaces或者如果我已经完成了。
我想知道是否有办法显示空间是什么,要么直接输入到缓冲区,要么再次按下它就更改它,或者将它放在状态栏中直到我完成。
我认为这可能的方法是检查光标前的字符是\,
,如果它们是用下一个空格替换它,如果不是,请检查其余的空格我可以如果没有空格,则输入并最后输入\,
。我只是不知道如何完成这样的键盘映射。
答案 0 :(得分:1)
您当前的地图解决方案基于映射超时。在此之前,Vim正在等待更多输入,并且尚未插入任何内容。为了以后修改插入的内容,您需要完全替换方法。
这可以通过:map <expr> <Nul>
实现,检查光标前的内容,然后返回<BS>
个字符以擦除后面的替换文字。
使用mjbrownie/swapit插件,您将获得&#34;切换替代品&#34;功能(使用<C-a>
/ <C-x>
)免费:只需将以下内容放入~/.vim/ftplugin/tex/swapit.vim
:
SwapList spaces \, ~ \enspace \quad \qqad
当您知道自己想要的内容(或初始插入内容)时,可以保留原始<Nul>
映射以快速插入,并且稍后仅使用swapit进行修改。