VIM块插入

13

我想在VIM中选定的文本块(Ruby注释)开头插入一个哈希符号。我已经使用可视模式选择了行,但如何对所有行执行相同的操作?

4个回答

17

您有两个主要选项:

  • 选择块可视模式(ctrl-v),然后使用 I 在整个块的左侧插入相同的内容。类似地,A 附加;请参见块操作符

  • 在普通可视(v)或可视行(V)模式下选择行,然后对它们中的所有行运行相同的命令,例如 s/^/# /normal I#。当您拥有可视选择时键入 :,自动将其作为行范围(由 '<,'> 表示)。


块状视觉模式对我不起作用,但正常模式可以。在块状视觉模式下,我选择了每行的第一个字符,结果删除了所有字符,没有得到我想要的结果。不过第二种方法有效,谢谢! - tesserakt
@tesmar:我经常使用这个功能,我知道它是有效的——你可能只是做错了一些小事情。按下“ctrl-v”,选择你想要的内容(只需要第一个字符就可以,就像你之前做的那样),然后输入“I# <Esc>”。 - Cascabel
你说得对,我意识到我需要按下Ctrl+V后它就起作用了。感谢你的提示! - tesserakt
我正在使用Redhat/Centos vim VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Jul 7 2012 08:03:48),但在可视块上既不能使用I也不能使用A - gerrytan
@gerrytan 好的,文档确实说“{如果没有编译|+visualextra|功能,则不可用}”- vim --version 的完整输出将告诉您它是否已构建具有该功能。但我很确定早在2012年之前就已经存在了 - 我记得在CentOS 5上使用过这个功能,并且已记录为包含在正常编译中。您是否有多个打包版本的vim? 您没有使用vim-tiny,是吗? - Cascabel
Ubuntu 14.04自带的默认vim(作为“vi”安装)不包括“visualextra”,因此无法在其中使用块插入。通过“sudo apt-get install vim”安装更全面的版本,其中激活了“visualextra”。 - Gabriel Grant

5
在可视化模式下执行以下操作:
:'<,'>s/^/#

实际上,当你按下:键时,'<,'>会自动插入。


2

建议使用这个。

命令模式下,设置行号以查看行数。

:10,50s/^/#/g

逗号前的第一个数字是起始行,逗号后的第二个数字是结束行。两个数字都包含在内。


这不是处理可视选择的正确方式。 - Cascabel
@Jefromi,是的,但它在执行所需结果时更快。 - Dez
当然,如果您已经知道行号,那就可以了。但是,如果最快的方法是指定选择nVnV}}}呢?为什么要强迫自己查找行号呢?只需使用nVn:s/.../.../即可。 - Cascabel

0

另外一个问题可能已经复制了这个问题,所以从如何在Visual Block模式下插入的地方来到这里。

强烈建议大家查看这份速查表:http://www.rayninfo.co.uk/vimtips.html

随着人们对VIM进行更多研究,他们将看到很多% s / ^ /#,前面带有%符号,通过用:“'&lt;,'&gt;”替换%符号,弹出的符号可以进行插入等操作。


:'<,'>s/^/# (applied on selected lines only)

:%s/^/# (applied globally)

分享一下我在调研如何在不同行添加超链接的过程中得出的两个建议。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接