在Vim中,如何在选择中的每一行的开头插入字符?
例如,假设我的语言的注释系统不允许像/* */这样的块注释,我想通过在每一行的开头预先添加//来注释掉一个代码块。我该怎么做呢?
在Vim中,如何在选择中的每一行的开头插入字符?
例如,假设我的语言的注释系统不允许像/* */这样的块注释,我想通过在每一行的开头预先添加//来注释掉一个代码块。我该怎么做呢?
当前回答
搜索和替换的一般模式是:
:s/search/replace/
将当前行中第一次出现的'search'替换为'replace'
:s/search/replace/g
将当前行中所有出现的'search'替换为'replace', 'g'是'global'的缩写
此命令将只替换当前行中出现的'search'。%用于搜索整个文件。要交互式地确认每个替换,需要添加一个'c'来确认:
:%s/search/replace/c
交互式确认替换'搜索'与'替换'为整个文件
你可以使用一个行号范围来代替%字符(注意'^'字符是一个特殊的搜索字符,用于行开始):
:14,20s/^/#/
在第14-20行开始处插入'#'字符
如果你想使用另一个注释字符(比如//),那么改变你的命令分隔符:
:14,20s!^!//!
在第14-20行开始处插入'//'字符序列
或者你可以像这样转义//字符:
:14,20s/^/\/\//
在第14-20行开始处插入'//'字符序列
如果在编辑器中看不到行号,只需键入以下内容
:set nu
其他回答
它将每一行的开头替换为"//":
:%s!^!//!
它将每一行的开头(使用可视模式选择)替换为"//":
:'<,'>s!^!//!
注意,gv(在正常模式下)恢复最后的可视选择,这有时很方便。
另一种方法对新人来说可能更容易:
some█
code
here
把光标放在第一行上,例如by
gg
然后输入以下命令进入插入模式并添加文本:
I / /空间
// █some
code
here
按Esc返回命令模式并使用有向图:
j。j。
// some
// code
//█here
J是一个运动命令,向下走一行。重复您所执行的最后一个编辑命令。
在每行开头插入“ABC”:
进入命令模式 %定额I ABC
如果有人的多行选择实际上是一个段落,则不需要手动选择行。Vim可以为您做到这一点:
Vip:选择并标记整个段落 Shift-i:在行首插入文本 转义:离开插入模式/进入正常模式[行开头仍然选中] 转义:取消选择行开头
搜索和替换的一般模式是:
:s/search/replace/
将当前行中第一次出现的'search'替换为'replace'
:s/search/replace/g
将当前行中所有出现的'search'替换为'replace', 'g'是'global'的缩写
此命令将只替换当前行中出现的'search'。%用于搜索整个文件。要交互式地确认每个替换,需要添加一个'c'来确认:
:%s/search/replace/c
交互式确认替换'搜索'与'替换'为整个文件
你可以使用一个行号范围来代替%字符(注意'^'字符是一个特殊的搜索字符,用于行开始):
:14,20s/^/#/
在第14-20行开始处插入'#'字符
如果你想使用另一个注释字符(比如//),那么改变你的命令分隔符:
:14,20s!^!//!
在第14-20行开始处插入'//'字符序列
或者你可以像这样转义//字符:
:14,20s/^/\/\//
在第14-20行开始处插入'//'字符序列
如果在编辑器中看不到行号,只需键入以下内容
:set nu