替换尾随{

时间:2013-03-09 14:12:57

标签: regex vim

我有一个文字

int strlindex(char s[], char t[]) {

我想换成

int strlindex(char s[], char t[]);

使用Vim。我试过了

%s/\{$/;/g

但无济于事。有什么想法吗?

4 个答案:

答案 0 :(得分:3)

也许你在{

之后有一些空白

%s/{\s*$/;/g

答案 1 :(得分:3)

我从你问题的代码中看到的是,你想要这样做:

:%s/\s*{\s*$/;/

一些注释

  • 除非您使用{very magic
  • ,否则不应逃避\v
  • {之前有一个空格,显然您希望在结果中删除它。所以我们需要在\s*
  • 之前{
  • {$之间可能还有空格。所以我添加了另一个\s*
  • 您不需要g标记,一行只有一个$
  • 你在%之前有一个s/../../它会在整个文件中替换它。如果具有此结构的正常函数,则将删除{在替换后进行双重检查,以确保它不会破坏您的代码。

答案 2 :(得分:2)

通常在Vim中,正则表达式{是一个文字括号,不需要转义。这适用于magicnon-magic正则表达式(例外情况是指定very-magic选项 - 有关详细信息,请参阅help: magic

所以这会奏效:

%s/{$/;/g

答案 3 :(得分:1)

此处不需要转义,%s/{$/;/g工作正常。