有没有办法告诉VIM在缩写扩展后将光标放在某个位置?
假设你在 .gvimrc 中有这样的东西
iabberv <? <?=|?>
并且您想将光标放置在自动管道字符的位置。
最佳答案
在这种情况下,我使用的一个快速解决方案是在缩写中插入一些按键:
iabbrev <? <?=?><Left><Left>
将光标左移两个位置,在
=
之后.通过这种方式,您可以使用各种移动键,例如
<End>
, <Home>
,甚至用 <Esc>
返回正常模式并命令通常的正常模式命令。然后这个例子是iabbrev <? <?=?><Esc>hha
它的作用与第一个示例相同。如果用空格扩展缩写,它将多出一个空格。您可以使用
<BS>
摆脱它(退格)在缩写。或使用 <C-]>
扩展这将没有空间。更正:由于是先扩展缩写,然后插入空格,所以需要在帮助(map.txt)中找到一个小函数:
func Eatchar(pat)
let c = nr2char(getchar(0))
return (c =~ a:pat) ? '' : c
endfunc
这个最好放在
.vimrc
.现在,以下缩写将完全按预期工作::iabbrev <silent> <? <?=?><Left><Left><C-R>=Eatchar('\s')<CR>
它有点乱,但是有一个外部函数调用可以删除空白,它应该可以很好地工作。
关于vim - VIM 缩写中的光标位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3320182/