我在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并没有找到任何关于如何执行命令的信息。
答案 0 :(得分:2)
我不确定实际上是否可行。
一个非常糟糕的解决方法是:
iabbr forr for(int i=0; i<len; i++) <Esc>hhhhhhhhhh
但那太糟糕了。
相反,你可能会对插件感兴趣 Vim-snippets和 Ultisnips或 neosnippets:他们允许进入 预先编码的代码片段,其中一些部分已准备好进行更改。我觉得是这样的 你需要什么。
答案 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
设置为插入模式。