在文件中每行的开头和结尾添加字符

时间:2010-07-10 10:28:11

标签: regex vim replace

在每行的开头和结尾添加一些字符的最佳方法是什么?可以使用Vim或其他方式完成吗?

4 个答案:

答案 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