如何使用vim自动删除[*]类型的模式

时间:2015-08-13 23:57:26

标签: vim vi

我有一个带有大量参考文献[1],[2],...,[70]等的文本文档。如何使用vi自动删除它们?也就是说,删除与模式匹配的所有内容:[*]。

3 个答案:

答案 0 :(得分:3)

尝试运行此命令:

:%s/\[[0-9]\+\]//g

它会在括号\[[0-9]\+\]中找到所有数字模式,并在所有行:s上用空字符串替换g所有出现%

要运行它,请从正常模式开始,然后键入上面的命令,包括冒号。

答案 1 :(得分:1)

只是为了开发@ user156213非常好的答案:

:
%     —→ make the regex match the whole file range (from line 1 to last line)
s     —→ use the substitute regex command
/     —→ separator for the regex to match against
\[    —→ look for a [ character on a line
[0-9] —→ look for any digit
\+    —→ look for 1 or more occurence of thee the previous pattern
\]    —→ look for a ] character
/     —→ separator between the match regex and the replacement string
/     —→ end of the replacement string (i.e.: nothing)
g     —→ apply the match multiple times each line

这里显示的是与自动机相同的正则表达式:

Regular expression visualization

答案 2 :(得分:0)

%s/\[[^]]*\]//g

或非贪婪:

%s/\[.\{-}\]//g

两者都能做你想做的事:delete everything that matches the pattern: [*].