簡體   English   中英

注釋多行Vimrc的功能

[英]Function to Comment Multiple Lines Vimrc

所以我目前喜歡這種在vim中注釋多行的解決方案:

  1. CTRL-v (進入可視塊模式)
  2. 選擇您要評論的行
  3. Shift-i (進入插入模式)
  4. 輸入您的語言使用的任何注釋字符
  5. ESC ESC (兩次按ESC ESC鍵可使結果顯示更快)

但是,我需要一些幫助將這些步驟映射到我的vimrc文件中。 我目前使用以下注釋行:

vnoremap ;/ <C-v>0I// <ESC>

對於那些想要解釋命令功能的人:

您基本上是在視覺模式下鍵入;/來使用它(視覺,視覺線條和視覺塊模式都可以使用,因為<Cv>部分會迫使您進入視覺塊模式,這是正確的)。

0I部分將使您在行的開頭進入插入模式。

// <ESC>部分將插入注釋字符//並使您回到“普通”模式。

我需要幫助的部分是取消注釋。 如何在vimrc中編寫一個函數,基本上可以讓我切換//字符?

理想情況下,解決方案將涉及以下內容:

  1. 選擇線
  2. ;/
  3. 如果沒有//字符,則將其插入
  4. 如果有//字符,它將刪除它們

將其放在您的.vimrc文件中:

vnoremap <silent> ;/ :call ToggleComment()<cr>

function! ToggleComment()
        if matchstr(getline(line(".")),'^\s*\/\/.*$') == ''
                :execute "s:^://:"
        else
                :execute "s:^\s*//::"
        endif
endfunction

檢查評論插件。 它允許所有語言具有一種綁定。

使用python腳本非常容易

function! Comment()
python3 << EOF
import vim
r = vim.current.range
line = vim.current.buffer[r.start]
if line.startswith('// '):
    vim.current.buffer[r.start] = vim.current.buffer[r.start].replace('// ', '')
else:
    vim.current.buffer[r.start] = '// ' + vim.current.buffer[r.start]
EOF
endfunction

" ctrl slash
noremap <C-_> :call Comment()<CR>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM