首页 / 知识

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

2023-04-15 02:27:00

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

In Vim, what is the best way to select, delete, or comment out large portions of multi-screen text?

由于可以使用鼠标,因此在Eclipse之类的IDE中选择在多个屏幕上扩展的大量文本是相当容易的,因为这是最好的方法,例如 选择和删除多屏文字块或写例如 三种大方法导出到另一个文件,然后通过腻子/ ssh在无法使用鼠标的情况下在Vim中删除它们以进行测试。

我可以轻松地将其拖到行尾或将其拖到代码块末尾,但是如果文本在许多屏幕上延伸,或者其中有很多空白行,我会感觉像 双手绑在Vim中。 有什么办法吗?

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


好吧,首先,您可以将vim设置为使用鼠标,这将允许您选择文本,就像在Eclipse中一样。

默认情况下,您还可以使用可视选择-v。选择后,您可以yankcut等。

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

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

#替换每行的开头。 ('<'>标记是视觉选择的开始和。


使用标记。

转到要删除的文本块的顶部,然后输入

1
ma

在那条线上的任何地方。不需要冒号。

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

1
:'a,.d

输入ma会为光标下方的字符设置标记a

移至文本块底部后输入的命令说:"从包含标记a('a)描述的字符的行到当前行(.)d删除。"

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

1
2
3
4
5
6
:'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 A`。


要插入注释,请使用CTRL-v选择行的开头字符(逐行可视,而不是'v'字符明智或'V'逐行可视)。然后使用" I"进入插入模式,在第一行输入您的注释字符(例如"#"),最后使用" Esc"转至正常模式。瞧!

要删除注释,请使用逐块可视方式选择注释,然后使用" x"将其删除。


使用可视块命令v(或V表示整行,C-V表示矩形块)。在可视块模式下,您可以使用任何运动命令,包括搜索;我经常使用}跳到下一个空白行。标记该块后,您可以将它:w到文件,删除,拉动或其他任何方式。如果执行命令并且可视块消失了,请使用gv重新选择同一块。有关更多信息,请参见:help visual-change。

我认为vim随附了特定于语言的脚本,这些脚本以适合您选择的语言的方式进行注释,例如注释代码块。


可视模式是解决您的主要问题的方法。至于注释部分代码,vim.org上有许多用于此目的的插件,目前我正在使用tComment.vim。

还有一种简洁的方法可以注释掉没有插件的块。假设您使用python工作,并且#是注释字符。对希望使用井号的列进行可视的块选择,然后键入I#ESCAPE。要进入可视块模式,请在Windows上按C-q或在Linux上按C-v。


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


我的区块注释技术:

Ctrl + V启动逐块可视模式。

进行选择。

在选择仍处于活动状态的情况下,请输入Shift + I。这使您进入列插入模式。

输入您要注释的字符"#"或" //"或其他内容。

退出。


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

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


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

1
:20,200d

要将20到200行移动到300行所在的位置,可以使用:

1
:20,200m300

等等。


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

EnhancedCommentify

书呆子评论员

这些天,我发现自己更多地使用NERD,但是多年来我一直使用EnhancedCommentify。


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


您应该注意普通模式命令[count] CTRL-D
可以选择将"滚动"选项从10更改为[count],然后向下滚动那么多行。再次按CTRL-D将再次向下滚动相同的行。

所以尝试输入

1
2
3
4
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以相同的方式工作,但向上滚动。


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

:。,+ 40s / ^ /#/

(对于这里,通过40行,用哈希,空格代替行首)
似乎比建议的其他方法更长一些,但是我喜欢用键盘而不是鼠标来做事。


目前第一个答案不太正确?
要注释掉选择,请按":"并键入命令
:'<,'> s / ^ /#/ g

(" <,'>-会自动出现)


标记将是您要开始的最简单的mb,而我要结束的最简单的mb。完成此操作后,您几乎可以做任何想做的事情

1
:'b,'ed

从标记b删除到标记e

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

1
V40j:s/^/#/

将从您开始序列的位置注释掉40行


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


选择删除文本注释

最新内容

相关内容

猜你喜欢