如何使用VIM将方括号添加到文件的行尾

时间:2014-06-12 19:51:36

标签: vim

我有一个超过500000行的文本文件。我正在使用VIM编辑这些文件。

我的文字在每一行都有方括号。不幸的是,有些线路没有关闭方括号。

some text [ text

some text [ text]

some text [ text]

some text [ text

some text [ text]

我需要我的文字

some text [text]

some text [text]

some text [text]

some text [text]

some text [text]

我想知道如何使用Vim完成上述结果。

3 个答案:

答案 0 :(得分:3)

:%s/[^\]]$/&]

替换EOL之前的每个最后一个字符,它不是],后面跟着],实际上是在没有的情况下添加一个尾随括号。

现在,在您的初始代码段中,左括号与后面的单词之间用空格隔开,因此您可能需要运行第二次替换来清理整个内容:

:%s/\[\s*/[

答案 1 :(得分:2)

有很多方法:

  • 视觉区块 - <c-v>然后选择所有线条,然后按$A]<esc>
  • substitue - :%s/$/]/
  • 通过正常的前命令 - :%normal A]
  • 宏 - qqA]jq然后通过500000@q
  • 执行

就个人而言,我会选择替换。

答案 2 :(得分:0)

@ PeterRincker的解决方案似乎很棒,可以在所选行的末尾添加]

以下建议在一个命令中将]添加到不以]结尾的所有非空行文件(或使用],后跟空格):

:%s/[^\]]\+ *$/&]/