繁体   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