在 Vim 中取消注释的更智能方法

在 Vim 中取消注释的更智能方法

我认为进行评论的一个好方法是键映射。我需要注释/取消注释 C 风格代码,这是我的映射

nnoremap <leader>c 0<insert>//<Esc>                                                                  
nnoremap <leader>' 0xx

第二个用于取消注释,它只是将光标移动到行首并删除两次。

我想知道是否有可能在这里写一个 if 语句,我的意思是将光标移动到行首并检查前两个字符是否是反斜杠,如果是,则删除两次,如果不是,则不执行任何操作

谢谢

答案1

我想知道是否有可能在这里写一个 if 语句,我的意思是将光标移动到行首并检查前两个字符是否是反斜杠,如果是,则删除两次,如果不是,则不执行任何操作

这当然是可能的。但是,如果使用简单的正则表达式完成,就会简单得多:

nnoremap <leader>' :s/^\/\/<cr>

值得庆幸的是,我们可以选择使用什么分隔符,因此如果我们更改分隔符,我们就不需要转义斜杠:

nnoremap <leader>' :s;^//<cr>

附带说明一下,如果您在宏中运行它,并且在开头没有注释的行上运行它,它将阻止宏运行。如果你希望这种情况发生,请添加标志/e,例如:

nnoremap <leader>' :s;^//;;e<cr>

此外,如果您还想取消注释某些空格后的注释行,例如:

//Remove these comments
    //And these ones too

然后我会这样做:

nnoremap <leader>' :s;^\s*//<cr>

相关内容