首先,找到一個模式,選擇正確的線條。如果您有:set hls
,它將有助於發現比賽。我認爲像/#.*\/\/$
是你想要的東西。
接下來,選擇行註釋掉與
:g/<pattern>/s/^/#/
如果#
將註釋掉該行,並與
:g/<pattern>/s/^# //
取消註釋它們現在,你想要一個命令來切換。您可以使用變量來跟蹤切換狀態,也可以通過檢查匹配的行來嘗試找出當前狀態。使用變量似乎更簡單。
變量可能是全局的,緩衝區本地的,或腳本本地的。我喜歡使用腳本局部變量以避免混亂命名空間。在這種情況下,使用腳本局部變量可能意味着vim在切換緩衝區時會感到困惑,所以讓我們使用一個緩衝區局部變量,如b:commentToggle
。
第一次調用該函數時,它注意到該變量未設置,因此請使用search()
查找以#
(這裏有一個空格!)開始的行,並以我們已有的模式結束。 n
標誌表示不移動光標,並且w
表示環繞文件末尾(例如使用'wrapscan'
集合進行搜索)。如果找到該模式,search()
函數返回行號(從1開始!),否則返回0。請參閱:help search()
。
這似乎是一個小的測試工作:
fun! CommentToggle()
if !exists('b:commentToggle')
let b:commentToggle = !search('^# .*#.*\/\/$', 'nw')
endif
if b:commentToggle == 1
g/#.*\/\/$/s/^/#/
else
g/#.*\/\/$/s/^# //e
endif
let b:commentToggle = !b:commentToggle
endfun
nnoremap <F4> :call CommentToggle()<CR>
如果你想要把#
在第一個非空的前面,然後在search()
命令中使用^\s*#
; s/\ze\S/# /
或s/\S/\1# /
第一行:g
行; s/^\s*\zs# //
在第二個:g
行。請參閱:help /\zs
,:help /\ze
和:help sub-replace-special
。
您使用哪種語言?查看某種可以在運行程序時打開或關閉的日誌框架可能會更好。或者可能是一個命令行標誌。 – FDinoff
我使用python(剛剛更新了答案)。我想添加'if(debugFlag == True):...',但我不太喜歡它,因爲它進一步擴展了與程序邏輯無關的代碼, (最低限度)減慢程序。 – efie
Python有一個日誌框架。 http://docs.python.org/2/library/logging。html你應該可以很容易地禁用它。我不擔心該計劃的放緩。除非您確定(使用分析器)日誌報表實際上是問題。 – FDinoff