注释多行的函数 Vimrc

Function to Comment Multiple Lines Vimrc

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

  1. CTRL-v(进入可视块模式)
  2. Select 您要评论的行
  3. Shift-i(进入插入模式)
  4. 输入您的语言使用的任何注释字符
  5. ESC ESC(按两次转义键可以更快地显示结果)

但我需要一些帮助将这些步骤映射到我的 vimrc 文件中。 我目前使用以下注释行:

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

对于那些想要解释该命令的作用的人:

当你在视觉模式下使用这个时,你基本上键入 ;/(视觉、视觉线和视觉块模式都可以工作,因为 <C-v> 部分强制你进入视觉块模式,哪个是正确的)。

0I 部分将使您在行首进入插入模式。

// <ESC> 部分将插入注释字符 // 并让您回到普通模式。

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

理想情况下,解决方案包括以下内容:

  1. Select 编辑行
  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>