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

关于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 / ^ /#/加上注释(例如)),其中" <,">表示选定的可视块,而不是所有文本。


推荐阅读

    linux删除第一行命令?

    linux删除第一行命令?,单位,系统,命令,标的,不了,数字,连续,名称,档案,文件,m

    linux删除本行命令?

    linux删除本行命令?,系统,本行,档案,命令,资料,商业,文件,终端,目录,文件名,L

    linux删除命令文件夹?

    linux删除命令文件夹?,系统,数据,通用,文件夹,命令,文件,环境,百度,不了,名

    linux压缩文本的命令?

    linux压缩文本的命令?,系统,图片,命令,设备,工具,位置,软件,管理,文件,目录,

    linux删除第一行命令?

    linux删除第一行命令?,单位,系统,命令,标的,不了,数字,连续,名称,档案,文件,m

    linux里删除区间命令?

    linux里删除区间命令?,系统,命令,情况,档案,不了,名称,目录,文件,文件夹,分

    linux命令安条件删除?

    linux命令安条件删除?,系统,命令,不了,通用,名称,文件夹,文件,目录,软件,子

    linux输入文本命令?

    linux输入文本命令?,系统,位置,电脑,工作,首开,命令,终端,模式,指令,字符,如

    linux文件夹删除命令?

    linux文件夹删除命令?,系统,命令,不了,档案,名称,通用,文件夹,文件,目录,指

    删除命令linux命令?

    删除命令linux命令?,系统,不了,档案,名称,命令,文件夹,文件,环境,数据,目录,l

    linux删除最近命令?

    linux删除最近命令?,档案,名称,不了,命令,文件,系统,目录,文件夹,指令,参数,l

    删除小文件linux命令?

    删除小文件linux命令?,系统,工作,地址,信息,命令,通用,目录,文件,文件夹,功

    linux脚本注释命令?

    linux脚本注释命令?,代码,系统,工作,名称,地方,脚本,命令,信息,状态,简介,lin

    linux命令标记注释?

    linux命令标记注释?,地址,基础,系统,底部,命令,文件,参数,注释,程序,控制台,3

    linux快速删除命令行?

    linux快速删除命令行?,系统,软件,名称,数据,命令,文件,档案,不了,电脑,通用,l

    删除linux文件命令?

    删除linux文件命令?,名称,不了,文件夹,命令,文件,目录,方法,指令,子目录,选

    linux下删除用户命令?

    linux下删除用户命令?,系统,代码,邮箱,用户组,命令,用户,名称,管理,电脑,账

    linux的删除所有命令?

    linux的删除所有命令?,不了,系统,名称,命令,文件夹,文件,目录,档案,数据,环

    linux删除类型命令?

    linux删除类型命令?,系统,档案,命令,文件,名称,环境,数据,不了,目录,文件夹,

    linux使用命令的方法?

    linux使用命令的方法?,系统,信息,工具,标准,数据,命令,左下角,目录,文件夹,