如何在vi / Vim中的多行选择的开头插入文本

问题描述 投票:396回答:13

Vim中,如何在选择的每一行的开头插入字符?

例如,假设我的语言的注释系统不允许像//这样的块注释,我想在每行的开头加/* */来注释掉一段代码。我该怎么办?

vim editing viemu
13个回答
702
投票
  • Esc进入“命令模式”
  • 使用Ctrl + V进入可视块模式
  • 移动 / 以选择要在行中显示的文本列评论。
  • 然后按Shift + i并键入要插入的文本。
  • 然后按Esc,等待1秒钟,插入的文本将出现在每一行上。

有关更多信息和阅读,请在Vim Tips Wiki中查看“ Inserting text in multiple lines”。


2
投票
例如将此放到您的vimrc中:

1
投票
并执行c#<ESC>p

[c将其挂到“#”]


1
投票

vip:选择并标记整个段落

    [shift-i:在行首插入文本]

0
投票
1)进入命令模式

2):%规范I ABC


177
投票

这将每行的开头替换为“ //”:

:%s!^!//!

这将每条选定的行的开头(使用可视模式进行选择)替换为“ //”:

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

[Note gv(在正常模式下)恢复了最后的视觉选择,这有时会派上用场。


81
投票

搜索和替换的一般模式是:

:s/search/replace/

将“搜索”的第一次出现替换为当前行的“替换”

:s/search/replace/g

用“替换”替换当前行的所有“搜索”,“ g”表示“全局”的缩写]]

此命令仅将当前行的每次出现的“搜索”替换为“替换”。 %用于搜索整个文件。要以交互方式确认每个替换,请添加一个'c'进行确认:

:%s/search/replace/c

交互式确认用整个文件的“替换”替换“搜索”

代替%字符,您可以使用行号范围(请注意,'^'字符是对于行首的特殊搜索字符)

:14,20s/^/#/

在第14-20行的开头插入一个'#'字符

如果要使用其他注释字符(例如//),请更改命令定界符:

:14,20s!^!//!

在第14-20行的开头插入一个'//'字符序列

或者您总是可以转义//字符,例如:

:14,20s/^/\/\//

在第14-20行的开头插入一个'//'字符序列

如果您在编辑器中看不到行号,只需键入以下内容

:set nu

34
投票

对新来者来说可能更容易的另一种方法:


25
投票

还有另一种方式:


18
投票

这将在每行的开头添加#


14
投票

如果您想对此一见钟情,请将其放入.vimrc:


9
投票
:'<,'>g/^/norm I//

3
投票
选择一些文本:
© www.soinside.com 2019 - 2024. All rights reserved.