2014-01-05 73 views
0

線我有一個大python文件,如下所示:VIM:註釋/取消註釋所有文件,其中包含一個字符串

@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鍵盤映射來切換行註釋。它可以被使用嗎?

項目中還有其他文件包含類似的功能。那麼如何在項目中的所有文件中註釋這些行呢?

再次如果我需要取消註釋那些行我怎麼辦?

+0

你有沒有考慮您的解決方案正則表達式?例如:%s/^ login_required/^ @ login_required/g – ygoncho

+0

好的。我得到了一個正則表達式':g/pattern/s/^ /;',我可以通過它來評論這些行。但如何取消它們呢? –

+0

如何尋找「//模式」?或\\ \ /模式使用\作爲轉義字符)和changinng回到「模式」 – ygoncho

回答

5

:global/{pat}/{cmd}命令將在每行匹配模式{pat}上運行命令{cmd}。您可以通過:normal命令執行tComment命令。總之,它看起來是這樣的:

:g/@login_required/norm gcc 

如需更多幫助,請參見:

:h :g 
:h :norm 
1

這會不會是用VIM,但我認爲更簡單的方法在所有的項目中,多個文件註釋:

sed -i 's/@login_required/#login_required/g' * 

或文件目錄:

find ./ -type f -exec sed -i 's/@login_required/#login_required/g' {} \; 
2

如果你想評論某些行,然後取消註釋那些相同的行,我會在評論中使用某種「標記」來使工作更輕鬆。

所以發表評論,例如:

1,$s/^\(.*@login_require\)/#FOO \1/ 

然後取消註釋:

1,$s/^#FOO // 

你會選擇#FOO以免使用任何其他地方用於其它目的。你甚至可以選擇一些簡單的東西,比如## ......任何以#開頭的東西,你還沒有使用。

相關問題