注释多行的函数 Vimrc
Function to Comment Multiple Lines Vimrc
所以我目前喜欢这个在 vim 中评论多行的解决方案:
- 按
CTRL-v
(进入可视块模式)
- Select 您要评论的行
- 按
Shift-i
(进入插入模式)
- 输入您的语言使用的任何注释字符
- 按
ESC ESC
(按两次转义键可以更快地显示结果)
但我需要一些帮助将这些步骤映射到我的 vimrc 文件中。
我目前使用以下注释行:
vnoremap ;/ <C-v>0I// <ESC>
对于那些想要解释该命令的作用的人:
当你在视觉模式下使用这个时,你基本上键入 ;/
(视觉、视觉线和视觉块模式都可以工作,因为 <C-v>
部分强制你进入视觉块模式,哪个是正确的)。
0I
部分将使您在行首进入插入模式。
// <ESC>
部分将插入注释字符 //
并让您回到普通模式。
我需要帮助的部分是取消注释行。我如何在我的 vimrc 中编写一个基本上可以让我切换 //
字符的函数?
理想情况下,解决方案包括以下内容:
- Select 编辑行
- 按下
;/
- 如果没有
//
个字符,那么它将插入
- 如果有
//
个字符,那么它将删除它们
将此放入您的 .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>
所以我目前喜欢这个在 vim 中评论多行的解决方案:
- 按
CTRL-v
(进入可视块模式) - Select 您要评论的行
- 按
Shift-i
(进入插入模式) - 输入您的语言使用的任何注释字符
- 按
ESC ESC
(按两次转义键可以更快地显示结果)
但我需要一些帮助将这些步骤映射到我的 vimrc 文件中。 我目前使用以下注释行:
vnoremap ;/ <C-v>0I// <ESC>
对于那些想要解释该命令的作用的人:
当你在视觉模式下使用这个时,你基本上键入 ;/
(视觉、视觉线和视觉块模式都可以工作,因为 <C-v>
部分强制你进入视觉块模式,哪个是正确的)。
0I
部分将使您在行首进入插入模式。
// <ESC>
部分将插入注释字符 //
并让您回到普通模式。
我需要帮助的部分是取消注释行。我如何在我的 vimrc 中编写一个基本上可以让我切换 //
字符的函数?
理想情况下,解决方案包括以下内容:
- Select 编辑行
- 按下
;/
- 如果没有
//
个字符,那么它将插入 - 如果有
//
个字符,那么它将删除它们
将此放入您的 .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>