Vim 命令注释掉选定的行?

标签 vim

假设我有一堆行:

@Override
public void draw(Graphics g) {
    g.setColor(Color.MAGENTA);
    g.fillRect(rectangle.x, rectangle.y, rectangle.width, rectangle.height);
    g.setColor(Color.BLACK);
    g.drawRect(rectangle.x, rectangle.y, rectangle.width, rectangle.height);
}

当我想用 // 注释掉它们时(我更喜欢行注释而不是 block 注释),我所做的是:

  • 将光标置于 @ 前面符号
  • Ctrl-V :切换进入 block 选模式
  • 选择一直到 } 的列使用多次命中 j 的右括号
  • Shift-I : 进入 block 插入
  • 类型 //
  • ESC兴奋
  • Enter完成命令

--> 这些行现在已被注释掉。

是否有一种不需要进行 block 选择的更简单的方法?我发现我可以使用类似 :'<, '>s/^/\/\///g 的替换但这有两个问题:

  1. 它的输入非常笨拙且容易出错(需要输入多个正斜杠和反斜杠) 逃脱)
  2. 它将注释符号 ( // ) 放在开头 该行(位置 0),不在第一个字符所在的位置 该行的内容是(因此缩进丢失)。

如何插入//使用 Vi 在所选行的每行第一个字符的位置上?

最佳答案

您可以为 :substitute 定义自定义映射或命令。

但是,有几个评论器插件可以很好地做到这一点,并且这些插件是通用的(并且通常是可扩展的),因此它们适用于任何文件类型:

我强烈建议使用其中一个插件,而不是尝试自己重新发明一个糟糕的解决方案。

关于Vim 命令注释掉选定的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58536199/

相关文章:

vim - 当靠近顶部/底部时自动滚动 vim 屏幕?

vim - 在 Vim 中,如何设置在插件加载后运行的自动命令?

windows - !start 在 vi​​m 命令行中找不到

vim - 在 Vim 中,运行命令并将标准输出重定向到特定缓冲区

vim - 如何向 syntastic vim 插件添加 c++11 支持?

search - 在 VsVim 中启用文本高亮显示

node.js - 使用 vim 和 CoffeeScript 的 Node 检查器

git - Vim 忽略自动命令中的特定文件

vim - 如何在 Vimscript 中调用自增自减普通模式命令?

python - vim:使用 python 的 omnifunc 错误完成代码