如何在Vim for Python代码中切换注释和取消注释

How to toggle between comment and uncomment in Vim for Python code

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

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

1
2
3
4
5
6
7
8
9
10
11
12
" (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/#
/
/ge<CR>:noh<CR>gv`n

(改编自此StackOverflow条目)

但是,你是一种进行切换的方法,也就是说,如果它被注释,则使用相同的快捷方式进行注释,如果它被注释,则取消注释?


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

我使用的唯一地图是c(我的配置,c),切换评论。


您可以使用Tim Pope的vim-appmentary插件。 然后,您可以创建一个映射

1
nmap ,cc <Plug>CommentaryLine

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

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