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

时间:2020-03-05 18:52:06  来源:igfitidea点击:

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

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

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

解决方案

回答

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

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

回答

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

回答

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

默认情况下,我们还可以使用视觉选择" v"。选择后,我们可以"拉","剪"等。

至于注释掉该块,我通常使用" VISUAL"将其选中,然后执行

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

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

回答

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

回答

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

回答

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

还有一种巧妙的方法可以在没有插件的情况下注释掉一个块。可以说我们在python中工作,并且是注释字符。对希望使用井号的列进行可视的块选择,然后键入I#ESCAPE。要进入可视块模式,请在Windows上按C-q或者在Linux上按C-v。

回答

使用标记。

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

ma

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

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

:'a,.d

输入" ma"已为光标下方的字符设置了标记" a"。

移至文本块底部后,我们输入的命令说"从包含标记a('''a)所描述字符的行到当前行(.)delete。 "

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

:'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++)

N.B. " a"(撇号a)是指包含以" a"标记的字符的行。 ``a''(反引号-a)表示由a标记的字符。

回答

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

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

回答

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

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

回答

我的区块注释技术:

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

进行选择。

在选择仍然有效的情况下,按Shift +I。这使我们进入列插入模式。

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

ESC键。

回答

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

:。,+ 40s / ^ //

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

回答

标记将是我们要开始的最简单的mb,而我要结束的最简单的mb

:'b,'ed

从标记b删除到标记e

在可视模式下注释掉40行

V40j:s/^/#/

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

回答

我们应该注意普通模式命令[count] CTRL + D。
可以选择将"滚动"选项从10更改为[count],然后向下滚动那么多行。再按一次CTRL-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以相同的方式工作,但向上滚动。

回答

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

:20,200d

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

:20,200m300

等等。

回答

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

增强评论

书呆子评论者

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

回答

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

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