VIM缩写中的光标位置
有没有办法告诉VIM在缩略语扩展后将光标放在某个位置? 假设您在.gvimrc中有类似的内容VIM缩写中的光标位置,vim,Vim,有没有办法告诉VIM在缩略语扩展后将光标放在某个位置? 假设您在.gvimrc中有类似的内容 iabberv <? <?=|?> iabberv 您希望将光标放置在自动显示管道字符的位置。在本例中,我使用的快速解决方案是在缩写处插入一些按键: iabbrev <? <?=?><Left><Left> 它的作用与第一个例子相同。如果用空格展开缩写,它将有一个额外的空格。您可以通过在缩写中使用(退格)来删除它。或者用展开,这样就不会
iabberv <? <?=|?>
iabberv
您希望将光标放置在自动显示管道字符的位置。在本例中,我使用的快速解决方案是在缩写处插入一些按键:
iabbrev <? <?=?><Left><Left>
它的作用与第一个例子相同。如果用空格展开缩写,它将有一个额外的空格。您可以通过在缩写中使用
(退格)来删除它。或者用
展开,这样就不会留下任何空间
更正:由于缩写首先展开,然后插入空格,因此需要在帮助(map.txt)中找到一个小函数:
这最好放在.vimrc
中。现在,以下缩写将完全按照预期使用:
:iabbrev <silent> <? <?=?><Left><Left><C-R>=Eatchar('\s')<CR>
:iabbrev=Eatchar('\s')
它有点混乱,但有一个外部函数调用,可以删除空白,应该可以正常工作。可以通过以下方法完成:
”
“在{rtp}/ftpluvin/vim/vim_snippets.vim中
inoreab如果
\=InsertSeq('if','if!cursorhere!\nendif!mark!')
其他插件也提供类似的功能。您需要的是代码片段。我使用snipmate来实现这一点。我尝试了iabbrev hha,但它删除了“=”字符:)我应该放在哪里?这正是我想要的,除了这个问题。非常抱歉在回答之前没有测试
功能。我在一个合适的解决方案中进行了编辑。很酷,它可以工作,接受这个答案:)我是这样使用的:iabbrev hha=Eatchar('\s')
你应该看看,它太棒了!
func Eatchar(pat)
let c = nr2char(getchar(0))
return (c =~ a:pat) ? '' : c
endfunc
:iabbrev <silent> <? <?=?><Left><Left><C-R>=Eatchar('\s')<CR>
"
" in {rtp}/ftpluvin/vim/vim_snippets.vim
inoreab <buffer> <silent> if
\ <C-R>=InsertSeq('if', 'if!cursorhere!\nendif!mark!')<CR>