微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VIM缩写中的光标位置

有没有办法告诉VIM将光标放在缩写后的某个位置?
假设你在.g vimrc中有这样的东西
iabberv <? <?=|?>

并且要将光标放在管道字符自动的位置.

在这种情况下,我使用的一个快速解决方案是将一些按键插入缩写:
iabbrev <? <?=?><Left><Left>

将光标放在左边的两个位置之后.

以这种方式,您可以使用各种移动键,例如< End>,< Home>,甚至可以使用&Esc>返回到正常模式.并命令常用的普通模式命令.那个例子就是

iabbrev <? <?=?><Esc>hha

它和第一个例子是一样的.如果使用空格扩展缩写,则会有一个额外的空格.您可以通过使用< BS> (backspace)缩写.或者用< 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>

这有点凌乱,但是有一个外部函数调用来消除空白,它应该很好.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐