在 Vim 中,选择、删除或注释掉大部分多屏幕文本的最佳方法是什么?

StackOverflow https://stackoverflow.com/questions/58584

  •  09-06-2019
  •  | 
  •  

在像 Eclipse 这样的 IDE 中选择延伸到多个屏幕的大量文本相当容易,因为您可以使用鼠标,但是最好的方法是什么,例如:选择并删除多屏幕文本块或写入例如三个大方法导出到另一个文件,然后在 Vim 中删除它们以进行测试,当通过 putty/ssh 使用它时,您无法使用鼠标?

我可以轻松地拉到行尾或拉到代码块末尾,但如果文本延伸到多个屏幕,或者其中有很多空行,我觉得我的在 Vim 中,双手被束缚。有什么解决办法吗?

还有一个相关问题:有没有办法以某种方式选择 40 行,然后将它们全部注释掉(用“#”或“//”),就像大多数 IDE 中常见的那样?

有帮助吗?

解决方案

嗯,首先,你可以设置 vim 使用鼠标,这将允许您选择文本,就像在 Eclipse.

您还可以使用视觉选择 - v, , 默认情况下。选择后,您可以 yank, cut, , ETC。

至于注释掉该块,我通常选择它 VISUAL, , 然后做

:'<,'>s/^/# /

将每行的开头替换为 #. 。(这 '<'> 标记是视觉选择的开始和结束。

其他提示

使用标记。

转到要删除的文本块的顶部并输入

ma

该线上的任何地方。不需要冒号。

然后转到块的末尾并输入以下内容:

:'a,.d

进入 ma 已设置标记 a 对于光标下的字符。

移动到文本块底部后输入的命令显示“从包含标记描述的字符的行 a ('A) 到当前行 (.) d埃莱特。”

这种东西也可以用于其他事情。

:'a,.ya b     - yank from 'a to current line and put in buffer 'b'
:'a,.ya B     - yank from 'a to current line and append to buffer 'b'
:'a,.s/^/#/   - from 'a to current line, substitute '#' for line begin
(i.e. comment out in Perl)
:'s,.s#^#//#  - from 'a to current line, substitute '//' for line begin
(i.e. comment out in C++)

注意: 'a (撇号-a) 指的是包含由 标记的字符的行 a. 。``一个(backtick-a) refers to the character marked by一个`。

要插入注释,请使用以下命令选择行的开头字符 控制键-v (块视觉,不是“v”字符视觉或“V”行视觉)。然后使用“I”进入插入模式,在第一行输入注释字符(例如“#”),最后使用“Esc”转义到正常模式。瞧!

要删除评论,请使用 blockwise-visual 选择评论,然后使用 ' 删除它们X'.

使用可视块命令 v(或 V 表示整行, C-V 对于矩形块)。在视觉块模式下,您可以使用任何运动命令,包括搜索;我经常使用 } 跳到下一个空行。标记块后,您可以将其添加到文件、删除、复制或其他操作。如果执行命令并且可视块消失,请使用 gv 重新选择同一块。有关更多信息,请参阅:help Visual-Change。

我认为 vim 附带了一些特定于语言的脚本,可以以适合您选择的语言的方式注释代码块之类的事情。

V (大写 V),然后按 40j 选择 40 行,然后按 d 删除它们。或者正如@zigdon 回复的那样,您可以将它们注释掉。

视觉模式是您主要问题的解决方案。至于注释掉代码片段,vim.org 上有很多插件,我目前使用的是 tComment.vim。

还有一种无需插件即可注释掉块的巧妙方法。假设你在 python 中工作,# 是注释字符。对您想要散列符号所在的列进行可视化块选择,然后输入 I#ESCAPE。要进入可视块模式,请在 Windows 上按 C-q 或在 Linux 上按 C-v。

或者您可能想尝试一下这个脚本......

http://www.vim.org/scripts/script.php?script_id=23

我的块评论技术:

控制键+V 启动块视觉模式。

做出您的选择。

在评选活动仍在进行的情况下, 转移+. 。这将使您进入列插入模式。

输入注释字符“#”或“//”或其他字符。

ESC键。

如果您想对一系列行执行操作,并且您知道行号,则可以将该范围放在命令行上。例如,要删除第 20 到 200 行,您可以执行以下操作:

:20,200d

要将第 20 行到第 200 行移动到第 300 行,您可以使用:

:20,200m300

等等。

为了注释行,我建议使用以下插件之一:

增强型评论

书呆子评论员

我发现自己现在更多地使用 NERD,但我已经使用EnhancedCommentify 多年了。

使用 转移+V 进入视觉模式,然后您可以选择行并删除/更改它们。

我注释掉 40 行的常用方法是将光标放在第一行并输入命令:

:.,+40s/^/#/

(在这里通过40行前进,用哈希替换启动,空间)似乎比其他一些方法更长,但我喜欢用键盘而不是鼠标做事。

目前第一个答案不太正确?要评论选择按':'和键入命令:'<,'> s/^/#/g

('<, '> - 将自动出现)

您应该了解正常模式命令 [count]控制键-D。它可以选择将“滚动”选项从 10 更改为 [count],然后向下滚动那么多行。紧迫 控制键-D 再次将再次向下滚动相同的行。

所以尝试输入

V     "visual line selection mode
30    "optionally set scroll value to 30
CTRL-D  "jump down a screen, repeated as necessary
y      " yank your selection

CTRL-U 的工作方式相同,但向上滚动。

v 进入可视块模式,您可以像在大多数常见编辑器中使用 Shift 一样进行选择,稍后您可以执行通常使用普通命令执行的任何操作(替换 :'<,'>s/^/#/ 以在前面加上注释,例如),其中“<,”>表示选定的视觉块而不是所有文本。

标记将是最简单的 MB 你想从哪里开始 一旦完成,你就可以做任何你想做的事情

:'b,'ed

从标记中删除 标记 e

注释掉在可视模式下可以做的 40 行

V40j:s/^/#/

将从序列开始处注释掉 40 行

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top