【问题标题】:Vim abbreviations - end in insert modeVim 缩写 - 以插入模式结束
【发布时间】:2014-06-01 12:35:03
【问题描述】:

通过几个指南来设置一些简单的 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.

【问题讨论】:

标签: vim abbreviation


【解决方案1】:

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

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

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

iab cl console.log()<Left>

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

【讨论】:

  • &lt;Esc&gt;F%s&lt;c-o&gt;:call getchar()&lt;CR&gt; 删除前面的空格,取自:vim.wikia.com/wiki/Use_abbreviations_for_frequently-used_words。至于您发布的内容,虽然它确实以插入模式结束,但它会在光标前放置一个空格。
  • 您的链接提供了问题的答案,谢谢!
  • @diplosaurus 是的,那部分是断章取义的。除非您在缩写中加上%,否则它不起作用。
【解决方案2】:

最终解决方案(使用来自 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 2023-03-09
    • 2012-02-03
    • 2017-03-14
    • 2014-11-20
    • 2013-04-14
    相关资源
    最近更新 更多