gpt4 book ai didi

python - Vim:更改整个代码库中的函数调用签名

转载 作者:行者123 更新时间:2023-11-30 22:21:59 26 4
gpt4 key购买 nike

我正在慢慢地将 Vim 变成我的首选 IDE,带有 ctags 和静态分析/自动完成/等插件(例如 vim-jedi、youcompleteme 等)。但我还没有找到任何可以完成一项特定任务的东西:

假设我有一个函数(我将在这里使用 Python):

def my_function(outFile, foo, bar):
outFile.write(foo[bar])

后来我更改了它的签名,因此 outFile 位置参数是一个命名参数:

def my_function(foo, bar, outFile=None):
if outFile is None:
outFile = getDefaultOutfile()
outFile.write(foo[bar])

现在我想更改整个代码库中的所有旧调用:

my_function(oF, f, b)

my_function(f, b, outFile=oF)

在 Vim(或其他 Linux 实用程序,例如 sed)中是否有一种简单的方法可以做到这一点?我知道 PyCharm 等可以做到这一点,但我还不打算跳槽。

最佳答案

您可以执行以下正则表达式替换:

:s/\vmy_function\((\w*), (\w*), (\w*)\)/my_function(\2, \3, outfile=\1)/g

阅读vimregex ,特别是捕获组。基本上,任何 (\w*) 匹配的内容都将被保存并命名为 \1 (然后 \2\3 >等)供我们以后替换时使用。

值得注意的是,这适用于您的示例,但如果存在额外或缺失的空格,则不起作用。为了使其更加健壮,您可以将其更改为:

:s/\vmy_function\((\w*),\s*(\w*),\s*(\w*)\)/my_function(\2, \3, outfile=\1)/g

关于python - Vim:更改整个代码库中的函数调用签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48463926/

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