是否有一些方法可以告诉VIM将缩放扩展后的光标放在某个位置?假设你在.gvimrc中有这样的东西
iabberv <? <?=|?>
Run Code Online (Sandbox Code Playgroud)
并且您希望将光标放在管道字符自动的位置.
unp*_*680 10
我在这种情况下使用的快速解决方案是在缩写中插入一些按键:
iabbrev <? <?=?><Left><Left>
Run Code Online (Sandbox Code Playgroud)
将光标放在左边两个位置后=
.
以这种方式,可以使用各种运动键,如<End>
,<Home>
或甚至返回到正常模式与<Esc>
和通常的命令正常模式的命令.那么这个例子就是
iabbrev <? <?=?><Esc>hha
Run Code Online (Sandbox Code Playgroud)
它与第一个例子的作用相同.如果使用空格展开缩写,则会有一个额外的空格.你可以通过或者扩展,<BS>
在缩写中使用(退格)来摆脱它.<C-]>
不留空间.
更正:由于首先扩展缩写,然后插入空格,您需要在帮助(map.txt)中找到一个小函数:
func Eatchar(pat)
let c = nr2char(getchar(0))
return (c =~ a:pat) ? '' : c
endfunc
Run Code Online (Sandbox Code Playgroud)
这是最好的.vimrc
.现在,以下缩写将完全按照预期的方式工作:
:iabbrev <silent> <? <?=?><Left><Left><C-R>=Eatchar('\s')<CR>
Run Code Online (Sandbox Code Playgroud)
它有点乱,但有一个外部函数调用,删除空白区域,它应该运行良好.