注释多行Vimrc的功能

时间:2016-07-30 00:29:47

标签: vim comments

所以我现在喜欢这个解决方案来评论vim中的多行:

  1. CTRL-v(进入可视屏蔽模式)
  2. 选择要评论的行
  3. Shift-i(进入插入模式)
  4. 输入您的语言使用的任何评论字符
  5. ESC ESC(按两次退出键可使结果显得更快)
  6. 但我想帮助将这些步骤映射到我的vimrc文件中。 我目前使用以下内容来评论:

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

    对于那些想要解释命令功能的人:

    当你在可视模式下使用它时,你基本上输入;/(Visual,Visual Line和Visual Block模式都可以工作,因为<C-v>部分会强制你进入Visual Block模式,哪个是对的)。

    0I部分会让您在行的开头处进入插入模式。

    // <ESC>部分会插入注释字符//并让您重新进入普通模式。

    我需要帮助的部分是取消注释线条。如何在我的vimrc中编写一个基本上让我切换//个字符的函数?

    理想情况下,解决方案将涉及以下内容:

    1. 选择行
    2. ;/
    3. 如果没有//个字符,则会插入
    4. 如果有//个字符,则会删除它们

3 个答案:

答案 0 :(得分:6)

将其放入.vimrc文件中:

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

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

答案 1 :(得分:0)

检查评论插件。它允许对所有语言都有一个绑定。

答案 2 :(得分:0)

使用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>