gpt4 book ai didi

regex - 有一个像样的 Vim regexp OR 命令吗?查找不匹配的 if else 的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-03 07:44:07 25 4
gpt4 key购买 nike

我的脚本中有一些不匹配的 if 和 fi 语句。我想删除除 if 、 else 和 fi 之外的所有内容。这样我就可以看到结构了。为什么要与如此强大的编辑器如此努力地工作?我需要一个用于正则表达式的 BIGFATOR 运算符,或者一些我一直没有意识到的顿悟......我不关心正则表达式的武断,只是在 VIM7.2 中实际工作。

:g/[ ^\t]if [/print

将打印出 ifs

:g/[ ^\t]fi/print

将打印出 fi

我想做的是或者条件

:g/[ ^\t]fi BIGFATOROPERATOR [ ^\t]fi/print

我在以下方面取得了成功...但我觉得我工作得太努力了!

:call TripMatch('[ ^\t]*if [', 'else', 'fi[ \t$]')

function! TripMatch(str1, str2, str3)

let var1 = a:str1

let var2 = a:str2

let var3 = a:str3

let max = line("$")

let n = 1

for n in range (1, max)

let currentline = getline(n)

if currentline =~? var1

echo n "1:" currentline

else

if currentline =~? var2

echo n "2:" currentline

else

if currentline =~? var3

echo n "3:" currentline

else

let foo = "do nothing"

endif

endif

endif

endfor

endfunction

最佳答案

:g/[ ^\t]if\|[ ^\t]fi/print

BIGFATOROPERATOR\|。它被称为 alternation operator 。在 PCRE 中,它是简单的 |。它在 Vim/ex 中被转义,因为 | 在其他地方用于通用命令(或某些东西 - FIXME)。

关于regex - 有一个像样的 Vim regexp OR 命令吗?查找不匹配的 if else 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/680022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com