V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
marcosteam
V2EX  ›  Vim

新人的 Vim 之路在代码补全上夭折了...

  •  
  •   marcosteam · 2018-05-17 01:44:18 +08:00 · 29104 次点击
    这是一个创建于 2165 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我接触 linux 的时间也不长,大概就几个星期,目前主力 IDE 就是 JB 全家桶+Vim+Vscode。

    但是饱受知乎浸淫,接触到一个理念:Vim 永远是世界上最好的 IDE! 于是我就开始学习使用 Vim。

    Vimtutor 也刷了好几遍了,快捷键大概也知道怎么用了,那么,要想打造 IDE,总得装插件吧?

    好吧,先把 Vundle 装上去,整个过程还是十分轻松愉快的。

    不愉快的体验就发生在代码补全插件那里了。

    之前没有查过资料,直接在 Github 上面搜代码补全插件,一看,YCM,哇,一万多个 Star,装!看了一下,没问题,脚本解决的事,对照文档开始装,结果...C 语言部分报错,装不上。只能采用下面的传统安装方法,结果在编译过程报错,提示我找不到 libcpp.so ,可是我都已经按照你的要求把 llvm 和 C 的二进制下了,还放到对应的文件夹里面啊?为什么报错?怒删!

    好吧,谷歌一搜,原来 YCM 是全世界最难安装的 Vim 插件之一,好吧,我去 V 站看看,哦,有个更轻量的 deoplete,看文档还蛮简单的啊,装!

    先装 neovim,再用 Vundle 装插件,然后配置补全源,C++和 Py 用的默认的 deoplete-clang 还有 deoplete-jedi,按文档配置以后就变成了这个样子:

    看起来应该是没什么问题的吧...

    可是,当我满怀期待的新建一个 CPP,准备写老师的作业的时候...

    补全框呢?诶?为什么看不到?空的?而且我不是开了括号自动补全吗?为什么没用?

    代码求轻喷,零基础学 Python 才几个月...

    现在的我已经完全失去了折腾的热情,因为我已经连续折腾这个了三天,连 stackoverflow、v2ex、知乎、google 都搜了一遍...准备老老实实用 vscode,安逸。

    哪位大手子能带带我装一下插件吗?我不想努力了.jpg

    或者,有没有比较新一点的代码补全插件的安装教程?

    第 1 条附言  ·  2018-05-19 22:29:20 +08:00

    OK,休息了一下以后,我换成了nvim++vim-plug+LSP,按照官方文档 https://github.com/autozimu/LanguageClient-neovim/blob/next/INSTALL.md 的介绍,加入参数后嘛,就变成了这样...

    2018-05-19 22-25-10 的屏幕截图.png

    没错...LSP的安装卡死了...半天不动,按理来说应该会开启sh文件配置的,但是没有...

    159 条回复    2018-08-09 23:48:30 +08:00
    1  2  
    regiondavid
        101
    regiondavid  
       2018-05-17 16:54:42 +08:00
    YCM 我整整彻底重新装了 5/6 次才成功
    WildCat
        102
    WildCat  
       2018-05-17 16:56:46 +08:00   ❤️ 3
    恕我直言,说什么 vim 写代码的其实都是在装逼 + 1
    SkyKoo
        103
    SkyKoo  
       2018-05-17 17:38:16 +08:00
    为何必须代码补全,c+p c+n 够用了
    ranwu
        104
    ranwu  
       2018-05-17 18:09:00 +08:00
    在 arch linux 上的话,装 YCM 只需一条命令搞定^^,不过发现还是没什么卵用
    sensui7
        105
    sensui7  
       2018-05-17 18:22:18 +08:00
    sublime text 的功能, vim 能实现 9 成, vs code 能实现 9 成
    vim 的功能, st 实现 5 成, code 5 成
    code 的功能, st 实现 3 成, vim 实现 7 成


    综合: 我选择 vs code
    livc
        106
    livc  
       2018-05-17 18:44:52 +08:00
    @nekoyaki #94 跟这种傻逼有啥好理论的
    omph
        107
    omph  
       2018-05-17 18:45:08 +08:00
    @aaronzjw 大概了解了下,真的没兴趣,浪费生命
    marcosteam
        108
    marcosteam  
    OP
       2018-05-17 19:08:53 +08:00 via Android
    @ranwu 越说越想用 Arch 了…
    zhouzm
        109
    zhouzm  
       2018-05-17 21:39:47 +08:00
    应该把 vim 看作是一种技能(包括寻找配置自己需要的插件),想几天或几个星期的短时间就掌握是不太容易的,心理预期至少要放到几个月。坚持挺过这么长的痛苦练习期后,绝对会成为伴你一生的能力。
    shihira
        110
    shihira  
       2018-05-17 21:41:51 +08:00
    今年我已经装了 3 次 YCM 了,新电脑的 Linux 上一次 Windows 上一次,公司新电脑上一次。
    踩的坑多数是墙的锅,比如说 git clone 因为 clone 着 clone 着没速度了,连接超时云云。中断之后子模块没 clone 完整,git 又炸出 bug。又或者说 Build 的时候下载 Clang,下到一半又没速度了。只能说中国人装起来特蛋疼。
    从这个项目很早期开始就跟着用和关注了。很中肯地说,早些年比起只能用 clang_complete (慢到出奇)和 ctags 补全(不语义),YCM 简直是福音。速度快、有语义、有 fuzzy、有跳转到定义等等。但老实说它事实上并不算好用,作者的态度也稍微有点脾气(据说是个 Google 员工)。实在有点想换了。
    shihira
        111
    shihira  
       2018-05-17 21:51:05 +08:00
    你要是还想折腾 YCM 你可以加一下我 telegram,v 站 profile 里有。
    mashpolo
        112
    mashpolo  
       2018-05-17 21:52:59 +08:00
    写代码的话,还是建议楼主用专门的编辑器, vim 的话,服务器上远程的话应该比较常用到
    BingoXuan
        113
    BingoXuan  
       2018-05-17 22:00:31 +08:00
    因为踩过坑,所以从来不建议将 vim 当作 ide 使用

    不然 ide 有什么存在意义??

    好好下载一个 ide 吧,折腾诚可贵,生命价更高。有这时间好好静下心来学习吧
    arakashic
        114
    arakashic  
       2018-05-17 22:19:40 +08:00
    你自己用的习惯的编辑器 /IDE 才是世界上最好的编辑器 /IDE ! LZ 如果你才是用了几个星期,基本上还停留在 vimtutor 教你的那些操作的话,换门还来得及没必要逼自己用 vim。
    zengguibo
        115
    zengguibo  
       2018-05-17 22:25:40 +08:00
    写代码还是要上 ide 的,漂亮水灵的姑娘你不爱,偏爱那臭不可闻的男人
    jimages
        116
    jimages  
       2018-05-17 22:44:55 +08:00 via iPhone
    我怎么觉得 ycm 特别好装啊 mac 也装了
    raawaa
        117
    raawaa  
       2018-05-17 22:47:20 +08:00
    spacemacs 可以尝试一下。
    raawaa
        118
    raawaa  
       2018-05-17 22:48:32 +08:00
    另外电脑挺不错的嘛,截图里的字体渲染的如此高清。屏幕分辨率多少啊。
    jimages
        119
    jimages  
       2018-05-17 22:50:50 +08:00 via iPhone
    @jimages 就几行命令就装好了
    marcosteam
        120
    marcosteam  
    OP
       2018-05-17 23:16:29 +08:00 via Android
    @raawaa 默认 1080P 呗,新版 ubuntu 自带思源黑体,皮肤用的是 flat remix,用 tweak 改了一下文字的大小
    Rorysky
        121
    Rorysky  
       2018-05-17 23:26:10 +08:00
    大公司有专门 搞 ide 优化的
    raawaa
        122
    raawaa  
       2018-05-17 23:27:26 +08:00


    试着截了一下自己的。发现也还行。看来只是因为你的字体大,
    eclipselu
        123
    eclipselu  
       2018-05-17 23:34:19 +08:00
    @qf19910623 233 所以还是用 vscode 吧。
    uucloud
        124
    uucloud  
       2018-05-18 00:43:44 +08:00
    用 python 编译 ycm 其实很容易。
    marcosteam
        125
    marcosteam  
    OP
       2018-05-18 01:22:09 +08:00 via Android
    @uucloud 就是因为 python 脚本装不上去所以我只能编译啊
    cz5424
        126
    cz5424  
       2018-05-18 01:25:01 +08:00 via Android
    github 上 k-vim 了解一下,初学者偷懒之路
    20015jjw
        127
    20015jjw  
       2018-05-18 04:31:06 +08:00
    lz 不要气馁 慢慢来 基本调教到你想要的样子要 2 年
    brucewar
        128
    brucewar  
       2018-05-18 08:49:52 +08:00
    可以在 vscode 里安装一个 vim 插件啊
    guoli100
        129
    guoli100  
       2018-05-18 09:33:45 +08:00
    楼主不要气馁,慢慢熟悉 VIM 就好了,熟能生巧是早晚的事。YCM 也不是像网上说的多难装,只是安装文档写的比较细而已,安装其实只是一两个命令,试几次就明白了。
    mervin3e
        130
    mervin3e  
       2018-05-18 09:40:30 +08:00
    楼主如果使用 deoplete 的话,可以试试 https://github.com/Rip-Rip/clang_complete
    HackerOO7
        131
    HackerOO7  
       2018-05-18 09:48:55 +08:00 via Android
    昨天晚上刚配了 YCM,按照文档来,一切挺顺利的啊
    clavichord93
        132
    clavichord93  
       2018-05-18 12:33:44 +08:00 via iPhone
    ycm 确实好难配啊,特别是我这种用 anaconda 的… python 补全从来没有 work 过… cpp 补全也只 work 过一次…
    SpaceVim
        133
    SpaceVim  
       2018-05-18 14:53:48 +08:00
    给大家推荐一个 vim 中文社区吧,虽然才开始,但是已经算是走上正轨了

    https://github.com/vim-china
    SpaceVim
        134
    SpaceVim  
       2018-05-18 14:57:21 +08:00
    @mervin3e deoplete 作者写了一个 clang 的 source 叫做 deoplete-clangx,我建议你可以试试,clang_complete 毕竟还是使用的 omni 方法,相对比较慢,而且不是异步的,会造成卡顿。

    如果只是用来写 python 完全没有必要安装 YCM,ycm 的后台其实也是 jedi, 可以使用 deoplete + deoplete-jedi 这两个插件替代。安装相比 ycm 要简单很多。
    preyta
        135
    preyta  
       2018-05-18 15:01:20 +08:00
    自带的 ctrl+p 足够了
    SpaceVim
        136
    SpaceVim  
       2018-05-18 15:06:20 +08:00
    @marcosteam 仔细读完你的帖子,你的问题是安装 ycm 失败,这点我没法帮你,因为我并不用 ycm, 也不建议用 ycm。 关于 neovim 和 deoplete 的安装大致过程如下:

    1. 安装 neovim, 编译也好,通过包管理器安装也好,都非常简单,可以参考 neovim 的 wiki

    https://github.com/neovim/neovim/wiki/Installing-Neovim

    2. 安装好了 neovim, 并未结束,neovim 添加 python 和 python 及 lua 的支持,你需要安装对应的 client, 我是通过如下脚本安装的:

    pip2 install --user neovim

    pip3 install --user neovim

    3. 安装 deoplete 以及 deoplete-jedi

    你可以采用 vim-plug 或者 vundle 都一样, 但是 neovim 启动安装完插件以后,你需要执行一次 :UpdateRemotePlugins
    Mirana
        137
    Mirana  
       2018-05-18 15:54:48 +08:00
    不用代码补全
    whnzy
        138
    whnzy  
       2018-05-18 16:23:12 +08:00
    deoplete 建议你上 neovim
    hscui
        139
    hscui  
       2018-05-18 16:38:20 +08:00
    新人就老实用 Jetbrain,VScode 这类的集成 IDE,真的不建议去摆弄 Vim 之类的,毕竟新人最重要的任务是学语言,使用语言,而不是配置编辑器。
    spark
        140
    spark  
       2018-05-18 18:50:53 +08:00
    @SpaceVim SpaceVim 插件安装不上怎么破?

    分别在 init.tml 和 init.vim 都加了配置,理论上不是应该打开 vim 然后就自动读取配置安装么?然并卵。
    maokabc
        141
    maokabc  
       2018-05-18 21:29:46 +08:00 via Android
    很长一段时间都是用 acp,根据已有的词进行补全,相当实用。不然就是无配置直接用,无法理解非要把 vim 配置成 ide 的
    marcosteam
        142
    marcosteam  
    OP
       2018-05-18 21:44:09 +08:00 via Android
    @SpaceVim 好的,已换 neovim,谢谢!
    congeec
        143
    congeec  
       2018-05-18 21:49:06 +08:00 via iPhone
    @WildCat 都字过分了啊
    lzjqsdd
        144
    lzjqsdd  
       2018-05-18 22:10:30 +08:00 via Android
    一开始不要配置那么多插件,一个个来,不然快捷键多了很难熟悉起来。一个个攻破
    lzjamao
        145
    lzjamao  
       2018-05-18 22:36:11 +08:00
    如果你有志在 linux 下开发,坚持去解决错误,你会学到一些 linux 知识的。

    我最初是从[这里]( https://github.com/yangyangwithgnu/use_vim_as_ide)学装 vim 的,我第一次装 YCM 折腾了 3 天,后来将安装命令([这里]( https://github.com/lizijie/use_vim_as_ide/blob/master/install_ycm.sh))都记录下
    param
        146
    param  
       2018-05-19 01:02:10 +08:00 via Android
    ycm 在 Arch Linux CN 的源就有,我就直接装了。所有的语言支持都编译进去了。
    param
        147
    param  
       2018-05-19 01:05:07 +08:00 via Android
    @thedrwu ZZ 好难按啊。。:x 还不好吗?
    thedrwu
        148
    thedrwu  
       2018-05-19 02:22:15 +08:00
    @param 德语键盘的 ZZ 非常好按
    VIM 当时有许多德语区的开发者, 按键上也不是完全按照美式键盘优化的, 比如:

    - 为什么录宏是 q 在播放宏是 @ , 因为它们是同一个键。

    - 为什么 X 的剪贴板是 + 、 * 和 ~ , 因为它们是同一个键。

    - 为什么行首是 ^ , 因为它在 1 键的左边,键盘最左的键之一,而且不需要按 shift。
    param
        149
    param  
       2018-05-19 03:32:53 +08:00 via Android   ❤️ 1
    @thedrwu 以原教旨主义的立场,应该按照最初设计的键位来设置快捷键
    thedrwu
        150
    thedrwu  
       2018-05-19 03:57:28 +08:00
    @param 我不赞同按位置来设置功能。不仅是不同语言有不同的键盘, 还有人喜欢用 dvorak 布局呢。
    举个例子,我用郑码十多年, 其中也有键盘布局的原因,五笔在别的键盘上不如郑码好用。虽然打字久了之后只是条件反射手指下按顺序,但灵活性上, 郑码按照 A-Z 字母顺序对应笔划,比五笔分键区灵活性大增。
    (题外话, 至于为什么非要用字型输入,一是因为当年拼音傻;二是因为字型输入灵活 ,不仅可以做到完全盲打,不常用的字也能立刻打出。 即使当今拼音智能了, 仍然用字型单字输入, 可以保护隐私不被输入法厂商得到,还可以不忘怎样写字)
    marcong95
        151
    marcong95  
       2018-05-19 09:52:07 +08:00
    @lunafreya vim 的最基本生存方式:啥都别写了:wq 退出算了(滑稽)

    vim xxx.c
    !@*)(&%*%_)!*(@#_*$!*
    :wq
    code xxx.c
    ahjsrhj
        152
    ahjsrhj  
       2018-05-19 11:50:33 +08:00
    建议使用 vscode + vim 插件的方式使用
    jouyouyun
        153
    jouyouyun  
       2018-05-19 17:20:51 +08:00
    @marcosteam ycm 安装时需要编译的,所以需要先安装好编译依赖,然后才能编译成功。
    我的 vim 配置( https://github.com/jouyouyun/vim.d) 你可以看下
    marcosteam
        154
    marcosteam  
    OP
       2018-05-19 23:08:56 +08:00 via Android
    @whnzy 上了,结果…看补充吧
    ivechan
        155
    ivechan  
       2018-05-23 23:57:01 +08:00
    sudo apt-get install build-essential cmake git
    sudo apt-get install python-dev python3-dev
    cd ~/.vim/bundle/YouCompleteMe # 这里注意你 ycm 目录
    ./install.py --clang-completer
    在纯净的 Ubuntu16.04 ,这种安装方法其实非常简单啦。
    千万不要乱改其他东西,比如,一定要自己配置 libclang 啥的。
    SpaceVim
        156
    SpaceVim  
       2018-05-25 11:16:11 +08:00 via Android
    @spark 更新下 SpaceVim,最新版官网有教程
    apolodu
        157
    apolodu  
       2018-06-28 02:50:17 +08:00
    所以现在楼主的 vim 能够实现自动补全了么?

    我也断断续续地折腾了一个多月了. vim 不难, 但是想用 vim 来开发必须装不少插件, 问题在于这些插件的文档大多 tm 写的像 sh*t 一样, 配置的部分三言两语略过, 要么直接丢一个文件出来, 让人 xjb 猜, 看得一头雾水, 很恶心.
    jhsunnyshine
        158
    jhsunnyshine  
       2018-07-03 18:41:06 +08:00 via Android
    Mac 下的 vscode 也贼难受,比如你输入一个 pr 补全,它会补全 print,而在 win 下会补全 print(),唉,醉醉的
    lancelock
        159
    lancelock  
       2018-08-09 23:48:30 +08:00
    @tombear001 朋友,你这个是什么字体啊,挺漂亮
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2631 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 01:51 · PVG 09:51 · LAX 18:51 · JFK 21:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.