Vim 如何围绕现有文本自动完成一段文本

Vim 如何围绕现有文本自动完成一段文本,vim,Vim,我在服务器上有一些代码 我需要对现有代码的各个部分重复相同的编辑 例如现行守则: int hello=1 我需要编辑这个 #ifndef X int hello = 1; #else #endif 有没有一种方法可以创建一个自动完成的包装器 #ifndef X {existing code} #else #endif 谢谢。如果您有相同的复杂版本要做,我会为它制作一个宏:help q。如果您有相同的复杂版本要做,我会为它制作一个宏:help q。使用vim和视觉选择选项: snippet

我在服务器上有一些代码

我需要对现有代码的各个部分重复相同的编辑

例如现行守则:

int hello=1

我需要编辑这个

#ifndef X 
int hello = 1;
#else
#endif
有没有一种方法可以创建一个自动完成的包装器

#ifndef X
{existing code}
#else
#endif

谢谢。

如果您有相同的复杂版本要做,我会为它制作一个宏:help q。

如果您有相同的复杂版本要做,我会为它制作一个宏:help q。

使用vim和视觉选择选项:

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。注意:我之所以使用换行是因为我在创建代码段时选择了换行,但您也可以更改它。

使用vim和可视选择选项:

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。注意:我之所以使用wrap是因为我在创建代码段时选择了wrap,但是您也可以更改它