问题源于 gorename
不支持模块。有一个名为 gopls
的替换工具,但这个例子并不详尽,所以我想知道是否有办法在整个项目中重命名一个变量(否则我无法理解重命名部分的用处)
gopls rename --help says:
Usage: rename [flags]
Example: gopls rename helper/helper.go:8:6 gopls rename helper/helper.go:#53
有没有办法重命名整个项目中的变量,如
gorename
能做什么?
最佳答案
我建议您使用 gopls 作为 LSP 服务器来与您的编辑器集成。你的编辑器应该提供一个 lsp-rename 命令来方便地调用重命名功能。
至于在命令行上使用 gopls rename,如果你有这个模块:
--- go.mod ---
module foo
--- foo.go ---
package foo
var Foo = 123
在模块目录中,运行
gopls rename -d foo.go:3:5 Hello
预览差异(“3:5”表示第 3 行第 5 列):% gopls rename -d foo.go:3:5 Hello
--- /Users/muir/scratch/foo/foo.go.orig
+++ /Users/muir/scratch/foo/foo.go
@@ -1,3 +1,3 @@
package foo
-var Foo = 123
+var Hello = 123
然后运行
gopls rename -w foo.go:3:5 Hello
写出更改。假设您使用的是最新版本的 gopls,这将在整个模块中重命名。
关于gopls 替换整个项目中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60933580/