繁体   English   中英

vim:注释/取消注释包含字符串的文件中的所有行

[英]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_requireduser_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM