我想知道在Vim中是否有任何键映射允许我缩进某些行代码(是否这些行已在可视模式下选择,或在当前光标位置上方/下方的n行)。

所以基本上可以转换以下内容

def my_fun(x, y):
    return x + y

to

#def my_fun(x, y):
#    return x + y

我可以使用#或“”来注释掉相关的行。理想情况下,如果给定的行已被注释掉,我还希望使用相同的键映射来取消注释。


当前回答

有很多用于vim的注释插件——其中一些是多语言的——而不仅仅是python。如果你使用像Vundle这样的插件管理器,那么你可以搜索它们(一旦你安装了Vundle)使用例如:

:PluginSearch comment

你会得到一个结果窗口。或者你也可以在vim-scripts中搜索注释插件。

正如在其他答案中提到的,NERDCommenter是一个很好的答案-有关使用它的更多信息,请参阅这个答案。注意:<前导>键通常是\。例如,要注释掉一行,输入:\cc

其他回答

不需要插件或映射。试试内置的“norm”命令,它可以在每个选定的行上执行您想要的任何命令。

添加#注释

1. shift V to visually select lines
2. :norm i#

删除#注释

1. visually select region as before
2. :norm x

如果你的注释是缩进的,你可以这样做:norm ^x

注意,这些只是普通的vim命令,前面加了“:norm”,以便在每行上执行它们。

关于使用“norm”命令的更详细的答案在这里

在Vim中注释/取消注释行有什么快速方法?

CtrlK评论(可视模式):

vnoremap <silent> <C-k> :s#^#\##<cr>:noh<cr>

取消注释(可视模式)的CtrlU:

vnoremap <silent> <C-u> :s#^\###<cr>:noh<cr>

NERDcommenter是一个优秀的注释插件,它可以自动检测一些文件类型及其相关的注释字符。使用病原体安装非常容易。

注释<leader>cc。用<leader>cu.取消注释。并切换注释<leader>c<space>。

(vim中默认的<leader>键是\)

坦率地说,我使用一个tcomment插件来链接。它可以处理几乎所有的语法。它定义了漂亮的移动,使用它与一些特定于python的文本块匹配器使它成为一个强大的工具。

您可以将以下映射添加到您的.vimrc

vnoremap <silent> # :s/^/#/<cr>:noh<cr>
vnoremap <silent> -# :s/^#//<cr>:noh<cr>

突出你的区块:

Shift+v

#注释第一列中的行。

-#以同样的方式取消注释。