我有一个很大的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
键映射来切换行注释。它可以用吗?
项目中还有其他文件包含类似的功能。那么如何在项目的所有文件中注释这些行呢?
如果我需要取消注释那些行怎么办?
答案 0 :(得分:5)
:global/{pat}/{cmd}
命令将在每个匹配模式{cmd}
上运行命令{pat}
。您可以通过:normal
命令执行tComment命令。它们一起看起来像这样:
:g/@login_required/norm gcc
如需更多帮助,请参阅:
:h :g
:h :norm
答案 1 :(得分:3)
如果你想评论某些行,然后稍后取消注释相同的行,我会在注释中使用某种“标记”来使工作更轻松。
所以要发表评论,例如:
1,$s/^\(.*@login_require\)/#FOO \1/
然后取消注释:
1,$s/^#FOO //
您可以选择#FOO
,以免在其他任何地方使用它用于其他目的。您甚至可以选择更简单的内容,例如##
...真正以#
开头的任何您尚未使用的内容。
答案 2 :(得分:1)
这不适用于VIM,但我认为更容易在所有项目中注释掉多个文件:
sed -i 's/@login_required/#login_required/g' *
或目录中的文件:
find ./ -type f -exec sed -i 's/@login_required/#login_required/g' {} \;
答案 3 :(得分:0)
包含string
的注释行:
:%s/\(.*string\)/# \1/c
%s
-全局替代\(.*string\)
-匹配模式# \1
-替换,\1
用于匹配的模式c
-替换前先确认类似地,取消注释:
:%s/# \(.*string\)/\1/c