gopls 替换整个项目中的变量

标签 go

问题源于 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/

相关文章:

go - 多种版本的go

amazon-s3 - 在 S3 上部署 Go 二进制文件

go - 项目之间的类型冲突

xml - 如何在没有单独结构的情况下获取 xml 名称标签变体

go - "glide get"和"go get"安装不同的版本

go - 时间打印为 '0x814ff30'

go - 如何使用 Go 反射 pkg 获取 slice 结构字段的类型?

http - Golang http客户端为什么有MaxConnsPerHost没有MaxConns

memory-management - go程序中函数中的神秘和过度内存分配

go - 新的去;如何使用数学/大