Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何注释掉vim中多个文件中以特定模式开始/结束的代码块?_Vim - Fatal编程技术网

如何注释掉vim中多个文件中以特定模式开始/结束的代码块?

如何注释掉vim中多个文件中以特定模式开始/结束的代码块?,vim,Vim,我正在注释多个名为foo1.tex,…,foo9.tex的文件中的代码块。每个块在以“{\bf Solution.}”开头和以“\end{ex}”结尾的一行之间有多行 第1~100行是要注释掉的行。您可以创建以下宏: qq启动寄存器中的宏q 然后,搜索要注释的部分的开头: /{\\bf Solution.} j k 下一行至第一行进行评论: /{\\bf Solution.} j k 进入块视觉模式: ctrl-v 搜索该节的结尾: /\\end{ex} 到最后一行进行评论: /

我正在注释多个名为foo1.tex,…,foo9.tex的文件中的代码块。每个块在以“{\bf Solution.}”开头和以“\end{ex}”结尾的一行之间有多行


第1~100行是要注释掉的行。

您可以创建以下宏:

qq
启动寄存器中的宏
q

然后,搜索要注释的部分的开头:

/{\\bf Solution.}
j
k
下一行至第一行进行评论:

/{\\bf Solution.}
j
k
进入块视觉模式:

ctrl-v
搜索该节的结尾:

/\\end{ex}
到最后一行进行评论:

/{\\bf Solution.}
j
k
进入插入模式,并添加注释:

I% 
返回正常模式并停止宏录制:

<escape>q
要在所有打开的文件上运行它,您可以执行以下操作:

:bufdo norm @q

它将注释单个块,因此如果有多个块要注释,则需要重复该操作

非常感谢您快速而精彩的回答!还有一个问题:既然我需要多次键入“@q”,有没有办法自动执行这些操作@padawin在给定文件中,您可以执行以下操作:
%s/{\\bf Solution.}//n
计算存在的“Solution”块的数量,然后调用宏的次数:
42@q
(称为42次,当然,用实际计数替换为42次)