vim comment/uncomment 有一个映射

vim comment/uncomment with one mapping

我是 vim 的新人 (bie)。我有以下映射来评论我的 python 代码:

nmap cc 0i#<ESC>

我想要相同的映射来取消注释一行。我想我需要一个函数来检查该行的第一个字符。你知道我是怎么做到这些把戏的吗?

谢谢。

编辑:它与 question 不同,我想知道没有插件如何做到这一点。

有这个plugin。非常好,他适用于多种语言。

你不应该尝试自己(糟糕地)实现它;这是一个已解决的问题,您可以从几个不错的插件中进行选择。有关插件列表,请参阅 Comment Lines according to a given filetype


不过,作为一种学习经验,尝试映射是很好的。这是一种使用 :help map-expr 首先检查该行是否存在评论的方法:

nnoremap <expr> cc getline('.') =~# '^#' ? '0x' : '0i#<ESC>'

PS: You should use :noremap;它使映射不受重新映射和递归的影响。