1

我希望有一个命令来切换python 代码行/块中的注释。

我在我的.vimrc文件中使用以下代码:

" (un-)commenting
" comment line, selection with Ctrl-N,Ctrl-N
au BufEnter *.py nnoremap ,c mn:s/^\(\s*\)#*\(.*\)/\1#\2/ge<CR>:noh<CR>`n
au BufEnter *.py inoremap ,c <C-O>mn<C-O>:s/^\(\s*\)#*\(.*\)/\1#\2/ge<CR><C-O>:noh<CR><C-O>`n
au BufEnter *.py vnoremap ,c mn:s/^\(\s*\)#*\(.*\)/\1#\2/ge<CR>:noh<CR>gv`n
"
" " uncomment line, selection with Ctrl-N,N
au BufEnter *.py nnoremap ,u mn:s/^\(\s*\)#\([^ ]\)/\1\2/ge<CR>:s/^#$//ge<CR>:noh<CR>`n
au BufEnter *.py inoremap ,u <C-O>mn<C-O>:s/^\(\s*\)#\([^ ]\)/\1\2/ge<CR><C-O>:s/^#$//ge<CR><C-O>:noh<CR><C-O>`n
au BufEnter *.py vnoremap ,u mn:s/^\(\s*\)#\([^ ]\)/\1\2/ge<CR>gv:s/#\n/\r/ge<CR>:noh<CR>gv`n

(改编自这个 StackOverflow 条目

但是,您是否有一种切换方式,也就是说,如果未注释,则使用相同的快捷方式进行评论,或者如果已评论,则使用相同的快捷方式进行评论?

4

2 回答 2

5

还有来自NERD Tree的制造商Scrooloose的NERD 评论者。它似乎比vim-commentary更广泛

我使用的唯一地图是<leader>c<space>,c对于我的配置),切换评论。

于 2013-05-25T13:15:03.467 回答
4

你可以使用 Tim Pope 的vim-commentary插件。然后你可以创建一个映射,例如

nmap ,cc <Plug>CommentaryLine

使用此映射,您可以使用相同的键序列进行注释和取消注释。它还会自动适应文件类型。对于不支持的文件类型,您可以commentstring手动设置。

默认映射是gcc,它完全符合您的要求:切换注释/未注释。

于 2013-05-25T12:54:51.970 回答