Vim

在 Vim 中取消註釋的更簡單的方法

  • January 12, 2018

我認為做評論的一個好方法是鍵映射。我需要註釋/取消註釋 c 樣式程式碼,這是我的映射

nnoremap <leader>c 0<insert>//<Esc>                                                                  
nnoremap <leader>' 0xx

第二個是取消註釋,它只是將游標移動到行首並刪除2次。

我想知道這裡有沒有可能寫一個if語句,我的意思是把游標移到行首並檢查前兩個字元是否是反斜杠,如果是,則刪除兩次,如果不是,什麼都不做

謝謝

我想知道這裡有沒有可能寫一個if語句,我的意思是把游標移到行首並檢查前兩個字元是否是反斜杠,如果是,則刪除兩次,如果不是,什麼都不做

這當然是可能的。但是,如果使用簡單的正則表達式,它會簡單得多:

nnoremap <leader>' :s/^\/\/<cr>

幸運的是,我們可以選擇要使用的分隔符,因此如果我們更改分隔符,我們不需要轉義斜杠:

nnoremap <leader>' :s;^//<cr>

附帶說明一下,如果您在宏中執行它,並且在開頭沒有註釋的行上執行它,它將停止執行宏。如果您希望發生這種情況,請添加/e標誌,例如:

nnoremap <leader>' :s;^//;;e<cr>

此外,如果您還想取消註釋某些空格後的註釋行,例如:

//Remove these comments
   //And these ones too

然後我會這樣做:

nnoremap <leader>' :s;^\s*//<cr>

引用自:https://unix.stackexchange.com/questions/416683