[英]vim: comment/uncomment all lines in file containing a string
我有一个大的python
文件如下:
@login_required
@user_passes_test(lambda u: u.is_superuser)
def foo():
//function body
@login_required
@user_passes_test(lambda u: u.is_superuser)
def foobar():
//function body
.
.
.
像这样,文件中有许多功能。 我想评论包含模式login_required
或user_passes_test
所有行。 如何评论这些线?
我使用tComment插件。 所以我可以使用gcc
key-mapping切换行注释。 可以用吗?
项目中还有其他文件包含类似的功能。 那么如何在项目的所有文件中注释这些行?
如果我需要取消注释这些行,我该怎么办?
:global/{pat}/{cmd}
命令将在每个匹配模式的行{cmd}
上运行命令{cmd}
{pat}
。 您可以通过:normal
命令执行tComment命令。 它们一起看起来像这样:
:g/@login_required/norm gcc
有关更多帮助请参阅:
:h :g
:h :norm
如果你想评论某些行,然后取消注释相同的行,我会在注释中使用某种“标记”来使工作更容易。
所以要评论,例如:
1,$s/^\(.*@login_require\)/#FOO \1/
然后取消注释:
1,$s/^#FOO //
您可以选择#FOO
以免在其他地方用于其他目的。 你甚至可以选择更简单的东西,比如##
......真的是以你尚未使用的#
开头的东西。
这不适用于VIM,但我认为更容易在所有项目中注释掉多个文件:
sed -i 's/@login_required/#login_required/g' *
或者目录中的文件:
find ./ -type f -exec sed -i 's/@login_required/#login_required/g' {} \;
包含string
注释行:
:%s/\(.*string\)/# \1/c
%s
- 全球替代品 \\(.*string\\)
- 要匹配的模式 # \\1
- 替换, \\1
表示匹配的模式 c
- 替换前确认 同样,要取消注释:
:%s/# \(.*string\)/\1/c
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.