Vim中的缩写跟随命令

时间:2015-09-27 05:15:36

标签: vim

我在Vim中有以下缩写。

iabbr forr  for(int i=0; i<len; i++)

它工作正常,但我希望光标在iabbr之后向左移动。

到目前为止,我试过了以下内容:

iabbr forr for(int i=0; i<len; i++) :10h

10h - move the cursor to left 10 characters from current position

它不起作用,它只打印所有文本,包括:10h

问题:

如何在缩写后执行命令? 我经历了:help iabbr并没有找到任何关于如何执行命令的信息。

3 个答案:

答案 0 :(得分:2)

我不确定实际上是否可行。

一个非常糟糕的解决方法是:

iabbr forr  for(int i=0; i<len; i++) <Esc>hhhhhhhhhh

但那太糟糕了。

相反,你可能会对插件感兴趣 Vim-snippetsUltisnipsneosnippets:他们允许进入 预先编码的代码片段,其中一些部分已准备好进行更改。我觉得是这样的 你需要什么。

答案 1 :(得分:2)

您可以使用表达式映射/缩写:

:iabbr <expr> forr  'for(int i=0; i<len; i++) '."\<esc>".repeat('h',10)

请阅读:h map-expression中的帮助以获取有关此内容的详细信息。

或者,你可以设置一个标记并跳转到它:

:iabbr forr  for(int i=0; i<<C-O>malen; i++) <C-O>`a

答案 2 :(得分:0)

我认为你所寻找的只是

iabbr forr  for(int i=0; i<len; i++)<ESC>10hi

<ESC>设置为普通模式,最后i设置为插入模式。