在每行的开头和结尾添加一些字符的最佳方法是什么?可以使用Vim或其他方式完成吗?
答案 0 :(得分:64)
在vim中,你可以做到
:%s/^\(.*\)$/"\1"/
s/regex/replace/
是搜索n替换的vim命令。%
使其适用于整个文件^
和$
分别表示该行的开头和结尾。(.*)
捕获两者之间的所有内容。需要在vim regex中转义(
和)
。\1
将捕获的内容置于两个引号之间。答案 1 :(得分:53)
简单:
%s/.*/"&"
说明:默认情况下,模式被解释为可能的最大匹配,因此.*
被解释为整行,不需要^
和$
。虽然\(
... \)
可用于选择模式的一部分,但整个模式不需要它,而&
表示整个模式。
代换。和
除非有其他内容,否则不需要搜索或替换中的最终/
;把它拿出去可能会被认为是懒惰。 (如果是的话,我很懒。)
答案 2 :(得分:3)
建议%s
的两个答案是完美的,我希望你能学会爱%s
并经常使用它。但如果您发现自己想要经常包围其他文本块,那么您应该查看surround.vim插件,这样您就可以通过以下四个按键执行您所要求的操作:{{1}还有许多其他有用的内置环绕目标。例如,要用双引号括起当前单词:yss"
,并将周围的单引号更改为双引号:csw"
。
surround.vim是我最喜欢的vim插件之一,我每天都会使用它。
答案 3 :(得分:2)
更好的util将被sed(特别是如果你需要编写脚本)
cat foo.txt | sed s/^\(.*\)$/"\1"/g