Vim - 如何在没有最后一个字符的情况下替换匹配?

时间:2016-08-17 08:33:14

标签: vim replace

我想修复具有以下模式的代码中的每一行:

int main() {

int main()
{

同样适用于if语句和循环。简单地说 - 固定支架。我将它们与:

相匹配
:%s/.*\(.*\).*{/&^?^M{/gc

但我得到以下输出:

int main() {
{

如何用匹配(&)替换我的模式,但没有最后一个字符或特别没有“{”?

1 个答案:

答案 0 :(得分:3)

%s/.*(.\{-})[^{]*\zs{/\r&/

此命令适用于您的示例,如果需要,可添加标记ggc。但是,如果将缩进应用于真实源文件,您可能需要检查缩进是否也正确。

我认为应该有代码样式修复的特殊工具..你应该检查它。 IMO,Vim / shell脚本将是这些源代码批量编辑的最后一个选项。