在Vim中,如何在选择的每一行的开头插入字符?
例如,假设我的语言的注释系统不允许像//
这样的块注释,我想在每行的开头加/* */
来注释掉一段代码。我该怎么办?
有关更多信息和阅读,请在Vim Tips Wiki中查看“ Inserting text in multiple lines”。
c#<ESC>p
[c
将其挂到“#”]
vip
:选择并标记整个段落
shift-i
:在行首插入文本]2):%规范I ABC
这将每行的开头替换为“ //”:
:%s!^!//!
这将每条选定的行的开头(使用可视模式进行选择)替换为“ //”:
:'<,'>s!^!//!
[Note gv
(在正常模式下)恢复了最后的视觉选择,这有时会派上用场。
搜索和替换的一般模式是:
: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
对新来者来说可能更容易的另一种方法:
还有另一种方式:
这将在每行的开头添加#
:
如果您想对此一见钟情,请将其放入.vimrc:
:'<,'>g/^/norm I//