关于 YouCompleteMe 的 golang 代码提示

2018-04-07 22:20:48 +08:00
 denggj28

最近转到 go 开发,编辑器还是用的 vim 配合 ycm,之前写 py 一直没问题,但是现在写 go,ycm 就不正常了,体现在标准库可以正常提示,第三方的就不行,自定义包有时可以有时不可以。 我是用的 glide,第三方包都是在项目的 vendor 下,我看了 gocode,已经支持 vendor 目录了,是不是 ycm 的 gocode 还是旧版的缘故?看 gocode 是提示找不到库,所以不能提示

附上 ycm 的日志:

Printing YouCompleteMe debug information...
-- Client logfile: /var/folders/n9/3xkfkvg14hg1y5s6gb0rt2hm0000gn/T/ycm_V4rMdM.log
-- Server Python interpreter: /usr/bin/python
-- Server Python version: 2.7.10
-- Server has Clang support compiled in: True
-- Clang version: clang version 6.0.0 (tags/RELEASE_600/final)
-- Extra configuration file found and loaded
-- Extra configuration path: /Users/noisyguy/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py
-- Go completer debug information:
--   Gocode running at: http://127.0.0.1:56711
--   Gocode process ID: 8520
--   Gocode executable: /Users/noisyguy/.vim/bundle/YouCompleteMe/third_party/ycmd/third_party/gocode/gocode
--   Gocode logfiles:
--     /var/folders/n9/3xkfkvg14hg1y5s6gb0rt2hm0000gn/T/gocode_56711_stdout_iv8Bgf.log
--     /var/folders/n9/3xkfkvg14hg1y5s6gb0rt2hm0000gn/T/gocode_56711_stderr_ieYfnG.log
--   Godef executable: /Users/noisyguy/.vim/bundle/YouCompleteMe/third_party/ycmd/third_party/godef/godef
-- Server running at: http://127.0.0.1:56707
-- Server process ID: 8389
-- Server logfiles:
--   /var/folders/n9/3xkfkvg14hg1y5s6gb0rt2hm0000gn/T/ycmd_56707_stdout_cGL9ys.log
--   /var/folders/n9/3xkfkvg14hg1y5s6gb0rt2hm0000gn/T/ycmd_56707_stderr_Bqz6zK.log

gocode 日志:

696975 2018/04/07 21:43:02 Import path "github.com/json-iterator/go" was not resolved
696976 2018/04/07 21:43:02 Gocode's build context is:
696977 2018/04/07 21:43:02  GOROOT: /usr/local/go
696978 2018/04/07 21:43:02  GOPATH: /Users/noisyguy/go
696979 2018/04/07 21:43:02  GOOS: darwin
696980 2018/04/07 21:43:02  GOARCH: amd64
696981 2018/04/07 21:43:02  BzlProjectRoot: ""
696982 2018/04/07 21:43:02  GBProjectRoot: ""
696983 2018/04/07 21:43:02  lib-path: ""
696984 2018/04/07 21:43:02 Import path "github.com/PuerkitoBio/goquery" was not resolved
696985 2018/04/07 21:43:02 Gocode's build context is:
696986 2018/04/07 21:43:02  GOROOT: /usr/local/go
696987 2018/04/07 21:43:02  GOPATH: /Users/noisyguy/go
696988 2018/04/07 21:43:02  GOOS: darwin
696989 2018/04/07 21:43:02  GOARCH: amd64
696990 2018/04/07 21:43:02  BzlProjectRoot: ""
696991 2018/04/07 21:43:02  GBProjectRoot: ""
696992 2018/04/07 21:43:02  lib-path: ""
696993 2018/04/07 21:43:02 Error parsing input file (inner block):
696994 2018/04/07 21:43:02  160:72: expected selector or type assertion, found ';'
696995 2018/04/07 21:43:02  160:73: missing ',' in argument list
696996 2018/04/07 21:43:02  160:78: expected operand, found ')'
696997 2018/04/07 21:43:02  164:9: expected ')', found 'return'
696998 2018/04/07 21:43:02  164:16: missing ',' in argument list
696999 2018/04/07 21:43:02  164:19: expected operand, found ','
697000 2018/04/07 21:43:02  166:5: missing ',' in argument list
697001 2018/04/07 21:43:02  166:14: missing ',' in argument list
697002 2018/04/07 21:43:02  166:17: expected operand, found 'range'
697003 2018/04/07 21:43:02  170:5: missing ',' in argument list
697004 2018/04/07 21:43:02  170:20: missing ',' before newline in argument list
697005 2018/04/07 21:43:02  171:1: expected operand, found '}'
697006 2018/04/07 21:43:02  171:2: expected ')', found 'EOF'
697007 2018/04/07 21:43:02  171:2: expected ';', found 'EOF'
697008 2018/04/07 21:43:02  171:2: expected ';', found 'EOF'
697009 2018/04/07 21:43:02  171:2: expected ';', found 'EOF'
697010 2018/04/07 21:43:02  171:2: expected '{', found 'EOF'
697011 2018/04/07 21:43:02  171:2: expected '}', found 'EOF'
697012 2018/04/07 21:43:02  171:2: expected '}', found 'EOF'
697013 2018/04/07 21:43:02  171:2: expected '}', found 'EOF'
697014 2018/04/07 21:43:02  171:2: missing ',' in argument list
697015 2018/04/07 21:43:02 extracted expression tokens: titleTag.First()
697016 2018/04/07 21:43:02 Offset: 0
697017 2018/04/07 21:43:02 Number of candidates found: 0
697018 2018/04/07 21:43:02 Candidates are:
4222 次点击
所在节点    Go 编程语言
39 条回复
bolide2005
2018-04-07 22:35:35 +08:00
虽然很多人都觉得用 vim 开发很 old school,很 geek,但我觉得在这个年代,如果不是机器性能太差,一个顺手的 IDE 才是真正的生产力工具 -- 来自一个曾经用一整周的业余时间折腾各版本 vim 和各类 vim 插件,最后爱上 jetbrains 的人:pycharm 和 goland,真的好用
cholerae
2018-04-07 22:39:49 +08:00
@bolide2005 主要是有时候连开发机上只有 vim 能用
denggj28
2018-04-07 22:46:51 +08:00
@bolide2005 我也想找个顺手的 IDE,但是以前用 jetbrains 写 java 各种崩溃让我转向了 vim。写 go 用过国人的 LiteIDE,也有各种各样的问题,还不如用 vim,不过 goland 是没用过,买一套多少钱。。。说到底,还是钱不想花钱
bolide2005
2018-04-07 22:49:37 +08:00
@cholerae #2 这种情况我一般就是两种方法:简单修改的话,用不着那些复杂的插件,有一些 syntax 的插件足够用了;复杂修改的话,本地写好,scp 过去

@denggj28 #3 上万能的淘宝啊
denggj28
2018-04-07 22:54:18 +08:00
@bolide2005 看了一下淘宝,2.88 元,靠谱吗?
bolide2005
2018-04-07 22:57:31 +08:00
@denggj28 #5 说实话我没买过,找个评论数多的,按照我以前买迅雷会员的经验的话,一般这种店都是冲量的,应该不骗人
iyaozhen
2018-04-07 22:57:50 +08:00
@denggj28 「以前用 jetbrains 写 java 各种崩溃」不用怀疑,该换电脑了。
denggj28
2018-04-07 23:42:15 +08:00
@iyaozhen 原来是用 11 年的 mpb,8G 内存,写 java 真的是风扇狂转啊
MCVector
2018-04-07 23:52:36 +08:00
试试看配置是不是有问题。我用 Ycm 写 C++ 一直都很顺手。
glues
2018-04-07 23:58:07 +08:00
@bolide2005 恕我直言,才一周的时间,连 vim 的皮毛都摸不到


@denggj28 我怀疑是你的 gocode 的问题,YCM 重新 build 一下试试,我用的一直都没啥问题,补全速度很快
tyfulcrum
2018-04-08 00:00:24 +08:00
@glues 恕我直言,一个工具如果没法带来显著的效率提升,那就不值得那么多时间来研究。
glues
2018-04-08 00:04:28 +08:00
@tyfulcrum 对啊,JB 这种效率低下的工具根本不值得花钱购买
fatttt
2018-04-08 00:07:17 +08:00
试试 vs code,加上 vim 和 golang 插件 体验应该比 vim 爽的。
denggj28
2018-04-08 00:08:58 +08:00
@glues 重新更新了 ycm 也 rebuild 了,但是还是这个问题,写 C 和 C++是没问题,就是 go 不行,请问你是用 glide 吗?第三方库是在 vendor 下吗? google 了很多天,也有很多人有这方面的问题,不过在 ycm 的 github 上没看到,只是在 gocode 里看到有这方面的讨论,主要是关于 gocode 对 vendor 的支持
denggj28
2018-04-08 00:20:20 +08:00
@fatttt 早就想试试 vscode 了,找个机会体验体验,有什么要注意的吗?
WendellSun
2018-04-08 00:43:58 +08:00
WendellSun
2018-04-08 00:44:33 +08:00
可以试试这个。
denggj28
2018-04-08 01:20:17 +08:00
@fatttt 刚刚试了一下 vsc,只装了 go 和 vim 插件,只用了 5 分钟,不知道是不是没索引完项目,总体来说速度很慢,打字都要慢半秒以上,就像看丢帧的电影一样。我的配置是 I7 7700 32G 内存,macOS 系统,按理说配置和平台不是瓶颈,只能说这个 editor 还是有些问题,vsc 定位是在编辑器,但是流畅度却是在 IDE 水平上。明天有空试试新建一个项目,看看是不是这个问题。
pittcat
2018-04-08 07:27:21 +08:00
deoplete ,vim lsp 了解一下
rashawn
2018-04-08 07:29:34 +08:00
为啥实在不甘心才去找 issue 这类问题不是先看 issue 吗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/444922

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX