1. 程式人生 > 其它 >5.9 Linux Vim批量註釋和自定義註釋

5.9 Linux Vim批量註釋和自定義註釋

使用 Vim 編輯 Shell 指令碼,在進行除錯時,需要進行多行的註釋,每次都要先切換到輸入模式,在行首輸入註釋符#再退回命令模式,非常麻煩。

連續行的註釋其實可以用替換命令來完成。換句話說,在指定範圍行加#註釋,可以使用 ":起始行,終止行 s/^/#/g",例如:

:1,10s/^/#/g

表示在第 1~10 行行首加"#"註釋。"^"意為行首;"g"表示執行替換時不詢問確認。如果希望每行互動詢問是否執行,則可將 "g" 改為 "c"。

取消連續行註釋,則可以使用 ":起始行,終止行s/^#//g",例如:

:1,10s/^#//g

意為將行首的"#"替換為空,即刪除。

當然,使用語言不同,註釋符號或想替換的內容不同,都可以採用此方法,靈活運用即可。

新增"//"註釋要稍微麻煩一些,命令格式為 ":起始行,終止行 s/^////g"。例如:

:1,5s/^/\/\//g

表示在第 1~5 行行首加"//"註釋,因為 "/" 前面需要加轉義字元 "",所以寫出來比較奇特。

以上方法可以解決連續行的註釋問題,如果是非連續的多行就不靈了,這時我們可以定義快捷鍵簡化操作。格式如下:

:map 快捷鍵 執行命令

如定義快捷鍵 "Ctrl+P" 為在行首新增 "#" 註釋,可以執行 :map^P l#<Esc>。其中 "^P" 為定義快捷鍵 "Ctrl+P"。注意:必須同時按 "Ctrl+V+P" 快捷鍵生成 "^P" 方可有效,或先按 "Ctrl+V" 再按 "Ctrl+P" 也可以,直接輸入 "^P" 是無效的。

l#<Esc> 就是此快捷鍵要觸發的動作,"l" 為在游標所在行行首插入,"#" 為要輸入的字元,"" 表示退回命令模式。"" 要逐個字元輸入,不可直接按鍵盤上的 Esc 鍵。

設定成功後,直接在任意需要註釋的行上按 "Ctrl+P" 快捷鍵,就會自動在行首加上 "#" 註釋。取消此快捷鍵定義,輸入 :unmap^P 即可。

我們可以延伸一下,如果想取消檔案行首的快捷鍵,則可以設定 :map^B 0x,快捷鍵為 Ctrl+B, "0" 表示跳到行首,"x" 表示刪除游標所在處字元。

再如,有時我們寫完指令碼等檔案,需要在末尾註釋中加入自己的郵箱,則可以直接定義每次按快捷鍵 "Ctrl+E" 實現插入郵箱,定義方法為 :map^E [email protected]<Esc>

。其中 "a" 表示在當前字元後插入,[email protected] 為插入的郵箱,<Esc> 表示插入後返回命令模式。

所以,通過定義快捷鍵,我們可以把前面講到的命令組合起來使用。

將快捷鍵對應的命令儲存在 .vimrc 檔案中,即可在每次使用 Vim 時自動呼叫,非常方便。