YouCompleteME 感受

2017-12-22 13:00:52 +08:00
 maobush
花了几天时间配置了 youcompleteme,感觉并没有多好用啊,小伙伴们怎么看呢
9778 次点击
所在节点    Vim
47 条回复
maobush
2017-12-22 15:17:56 +08:00
@lzhCoooder 我也是用的这个,但是标准库的头文件就是无法提示。你是在 linux 平台吗
ivechan
2017-12-22 15:19:09 +08:00
youcompleteme 挺垃圾的。
我现在用 ncm + language server neovim + cquery + pyls, 体验不错。
另外,用 vim 只是用键盘就能随心随遇地操作屏幕上的所有东西, 配合 tmux 实在离不开了。

要说现在有很多优秀的编辑器, 我有时候也用 vscode,因为 vscode 的 vim 功能做的还不错。
ivechan
2017-12-22 15:20:24 +08:00
@lzhCoooder pycharm 首次加载也需要很长时间,不过 pycharm 会把 index 数据存储起来,下次用就好很多。
lzhCoooder
2017-12-22 15:24:25 +08:00
@maobush 你是不是安装的适合有些选项没打开...我平台是 mac 按照简书上有一篇 “一步步教你安装史上最难插件 youcompleteme ”来安装的的
ivechan
2017-12-22 15:25:56 +08:00
@maobush 头文件提示可以加一个 neoinclude
lzhCoooder
2017-12-22 15:28:13 +08:00
@ivechan ycm 也会缓存吧,我特地在 pycharm 上试过感觉第一次用 numpy 也就加载大概 1s 吧,而且异步的不会卡的你根本就动不了。我感觉以前用 neocomplete 的时候也就卡 5s 吧,还有首次加载之后 ycm 提示还是有点慢 ncm 却很丝滑...
maobush
2017-12-22 15:31:35 +08:00
@ivechan 谢谢,有空我试一下
ivechan
2017-12-22 15:33:03 +08:00
@lzhCoooder 所以说 ycm 已经过时了,vim8 和 neovim 都支持异步, 是时候改变。
或者换其他插件了。
glues
2017-12-22 15:41:17 +08:00
@ivechan YCM 早就是异步了,我用了这么多年,从没遇到你们说的卡顿问题,而且安装配置也没上面说的那么难。
NCM 我也试过,YCM 的补全机制甩 NCM 几条街是没啥问题的
maobush
2017-12-22 15:58:26 +08:00
@glues 大神厉害,膜拜一下。😃
MaxTan
2017-12-22 15:59:05 +08:00
折腾过,还真没 vscode+vim 插件强
yylucifer
2017-12-22 16:01:03 +08:00
放弃吧,折腾了两年最后发现还是 pycharm 好用。
maxxxxx
2017-12-22 16:04:26 +08:00
@ivechan 留个 repo 看看呗
HaoyangWei
2017-12-22 18:28:57 +08:00
然而产出的代码质量跟你用 vim 还是 IDE
没有一点关系
BingoXuan
2017-12-22 18:58:21 +08:00
昨晚花了几个小时配置 ycm。说实话,用处真不大。只是作为应急。Python 补全慢到怀疑人生,c 系还好。总体还是会拖慢效率。但是有时候在终端编辑文件时候,作用就出来了。

vscode 加插件还是很不错,所以 vscode 吧。vi/vim 最终还是作为基础编辑器,不要想太多能代替一切
raawaa
2017-12-22 19:38:19 +08:00
请入坑 Spacemacs。👍
diggerdu
2017-12-22 19:50:42 +08:00
@xwhxbg 有的时候终端里面没有办法
livc
2017-12-22 20:15:20 +08:00
quinoa42
2017-12-22 20:19:39 +08:00
港真,deoplete 简单好用,为什么一定得用 YCM 呢
```
Plug 'Shougo/deoplete.nvim', { 'do' : ':UpdateRemotePlugins' }
Plug 'Shougo/echodoc.vim'
if executable('clang')
Plug 'tweekmonster/deoplete-clang2', { 'for' : ['c', 'cpp'] }
endif
Plug 'OmniSharp/omnisharp-vim', { 'do': 'cd server && xbuild', 'for' : 'cs' }
\ | Plug 'tpope/vim-dispatch', { 'for' : 'cs' }
\ | Plug 'dimixar/deoplete-omnisharp', { 'for' : 'cs' }
Plug 'artur-shaik/vim-javacomplete2', { 'for' : 'java' }
Plug 'zchee/deoplete-jedi', { 'for' : 'python' }
Plug 'fishbullet/deoplete-ruby', { 'for' : 'ruby' }
Plug 'Shougo/neco-vim', { 'for' : 'vim' }
```

```
if has("nvim")
" enable deoplete
let g:deoplete#enable_at_startup=1
" <TAB>: completion.
" inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
" even show when there is only one result
set completeopt=longest,menuone
" <C-h>, <BS>: close popup and delete backword char.
inoremap <expr><C-h> deoplete#smart_close_popup()."\<C-h>"
inoremap <expr><BS> deoplete#smart_close_popup()."\<C-h>"
if !exists('g:deoplete#omni#input_patterns')
let g:deoplete#omni#input_patterns = {}
endif
let g:deoplete#ignore_sources = {}
let g:deoplete#ignore_sources._ = ['buffer', 'javacomplete2']
let g:deoplete#omni#functions = {}
let g:deoplete#omni#input_patterns.tex = g:vimtex#re#deoplete
let g:deoplete#omni#input_patterns.java = [
\'[^. \t0-9]\.\w*',
\'[^. \t0-9]\->\w*',
\'[^. \t0-9]\::\w*',
\]
let g:deoplete#omni#input_patterns.jsp = ['[^. \t0-9]\.\w*']
endif

if has("patch-7.4.314")
set shortmess+=c
endif

let g:echodoc_enable_at_startup=1

```
quinoa42
2017-12-22 20:23:58 +08:00
如果用了 eclim,可以用下面这段 script:
```
function! Java_autocomplete()
if eclim#project#util#GetCurrentProjectName() == ''
let b:deoplete_omni_functions = [
\ 'javacomplete#Complete'
\]
else
let b:deoplete_omni_functions = [
\ 'eclim#java#complete#CodeComplete'
\]
endif
endfunction

augroup Java_deoplete
au!
autocmd FileType java call Java_autocomplete()
augroup END
```

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

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

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

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

© 2021 V2EX