使用 vi 或 vim 注释掉由行号指定的多行代码

And*_*rew 25 vim vi

我从这个 Stack Overflow 问题中了解到,可以使用vi/vim注释掉指定范围的行号。例如,假设我有以下 bash 脚本:

#!/bin/bash

This
is
my
very
very
great
script
Run Code Online (Sandbox Code Playgroud)

现在假设我想通过8注释掉行号6(包含单词veryverygreat)使用#注释字符。在vi/ 中vim,我可以简单地输入:6,8s/^/#以获得以下内容:

#!/bin/bash

This
is
my
#very
#very
#great
script
Run Code Online (Sandbox Code Playgroud)

其中注释掉了第 6 行到第 8 行。

我的问题是,是否可以键入一个类似的单行代码来删除#6 行到第 8 行的注释字符(但不会删除文件中的任何其他注释行)?

话虽如此,我意识到关于我是否实际使用vivim. 在实践中,我script.sh使用命令打开一个文件vi script.sh。此外,当我输入命令时which vi,我获得/usr/bin/vi. 然而,当我简单地输入vi并按下 时Enter,我得到了这个:

~                              VIM - Vi IMproved
~
~                               version 7.2.330
~                           by Bram Moolenaar et al.
~                 Vim is open source and freely distributable
~
~                           Sponsor Vim development!
~                type  :help sponsor<Enter>    for information
~
~                type  :q<Enter>               to exit
~                type  :help<Enter>  or  <F1>  for on-line help
~                type  :help version7<Enter>   for version info
Run Code Online (Sandbox Code Playgroud)

这似乎表明我实际上正在使用vim. 我正在使用 SSH 从我的 PC 访问远程 Ubuntu Linux 集群。我没有使用 Ubuntu Linux GUI。

jof*_*fel 24

您可以使用:

:6,8s/^#//
Run Code Online (Sandbox Code Playgroud)

但是使用 Block Visual 选择模式要容易得多:转到第 6 行的开头,按Ctrl-v,转到第 8 行并按x

还有“NERD评论者”插件。

  • `NERD评论者`是我认为去这里的方式!+1为此 (2认同)

ter*_*don 7

我知道您的问题指定使用vivim但这里有一些其他选项,无需手动打开文件:

  • 这不是“必须手动打开文件”的问题,因为通常您在编辑时决定通过目视检查对哪些行进行评论:) 但是可以肯定,这是一个很好的完整性答案。 (2认同)
  • @PauloAlmeida 你当然是对的。我只是认为它可能很有用,因为 OP 已经知道行号(因为用于注释它们的第一个命令),并且无论如何,我展示的工具可以应用于各种问题。 (2认同)