Vim缩写 - 以插入模式结束

时间:2014-06-01 03:04:13

标签: vim abbreviation

通过几个指南来设置一些简单的Vim缩写。我几乎就在那里,我似乎无法找到如何结束IN插入模式。

我有什么:

iab cl console.log()<Esc>F%s<c-o>:call getchar()<CR><Left><Left>

会发生什么:

cl expands to console.log() and the cursor is placed over )

我想要发生什么:

Same thing except I want to enter insert mode.

我尝试过的事情:

After <Left> I've tried:  <Insert>, i, and <Ins> with no luck.

2 个答案:

答案 0 :(得分:1)

问题是缩写遇到错误并停止执行。

这部分<Esc>F%s<c-o>:call getchar()<CR>对我没有意义,看起来会导致错误。它的多个部分可能是问题。但很可能是F%,因为它无法找到倒退的百分号。

我认为固定映射应该是这样的(但我认为这不符合你想要的)它确实以插入模式结束,因为缩写成功完成并且缩写没有做任何事情退出插入模式。

iab cl console.log()<Left>

看看这个https://stackoverflow.com/a/11865489/1890567删除尾部空格。来自缩写。

答案 1 :(得分:0)

最终解决方案(使用来自提供的线程FDinoff的信息)是:

func Eatchar(pat)
  let c = nr2char(getchar(0))
  return (c =~ a:pat) ? '' : c
endfunc

iabbr cl console.log();<Left><Left><C-R>=Eatchar('\s')<CR>