如何自动完成现有文本周围的一段文本

时间:2019-04-11 14:45:51

标签: vim

我在服务器上有一些代码。

我需要继续围绕现有代码片段重复相同的编辑。

例如现有代码:

int hello = 1;

我需要对此进行修改

#ifndef X 
int hello = 1;
#else
#endif

有没有一种方法可以创建自动完成的包装器?

#ifndef X
{existing code}
#else
#endif

谢谢。

2 个答案:

答案 0 :(得分:2)

如果您要使用相同的复杂版本,则可以为其创建一个宏(:help q)。

答案 1 :(得分:2)

将vim Ultisnips与VISUAL选择选项一起使用:

snippet wrap "inserts text around visual selection" w
#ifndef X
${0:${VISUAL}}
#else
#endif
endsnippet

在安装Ultisnips之后,设置一个映射来编辑代码片段:

map <Leader>u :UltiSnipsEdit<cr>

现在,您可以复制上面显示的代码段,并根据需要进行相应更改。 UltiSnips的默认触发器是 Tab ,但您可以轻松更改它:

let g:UltiSnipsExpandTrigger="<tab>"
let g:UltiSnipsJumpForwardTrigger="<c-b>"
let g:UltiSnipsJumpBackwardTrigger="<c-z>"

如何使用它?

选择要与其他文本“换行”的行,按 Tab ,然后键入wrap,最后键入 Tab 。注意:我使用自动换行是因为在代码段创建过程中可以选择,但是您也可以更改它。