vim - VIM 缩写中的光标位置

标签 vim

有没有办法告诉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/

相关文章:

c++ - 如何在 .vimrc 中添加自定义语法高亮?

ruby-on-rails - Vim ruby​​, rails omnicompletion : "Error loading rails environment". 如何配置 vim-ruby 的自动完成以与 rails 一起工作?

vim - 删除当前括号的突出显示,但保留匹配对

Windows 8 上超高显示 (3200-1800) 上的 vim

vim - 有没有办法像帮助系统一样建立自己的vim知识库

javascript - 必要时用空格填充相等性/同一性 (==/===) (vim)

vim - 如何检查 vim 中某个键是否已映射?

vim - 你如何在 Vim 中回显现有的设置?

python - vim python 导航到导入的文件

vim - 在脚本上方滚动 vim - 如何实现