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

所需即所获:像 IDE 一样使用 vim

  •  4
     
  •   yangyanggnu ·
    yangyangwithgnu · 2014-10-13 19:05:06 +08:00 · 25533 次点击
    这是一个创建于 3699 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我有一个文本编辑器叫 vim,但我让它干 IDE 的事儿。
    https://github.com/yangyangwithgnu/use_vim_as_ide
    第 1 条附言  ·  2015-01-06 10:38:45 +08:00
    v0.2.0,2014-12-27,新增/修正。0)重写“代码收藏”章节,停用过时的 visual mark,启用用户体验更优的 vim-signature(@arcticlion,谢谢);1)新增“基于语义的导航”章节,YCM 新增该项功能;2)调整“5.2 模板补全”章节结构,UltiSnips 不再提供预定义代码模板;3)protodef 插件更新,修复 protodef 生成成员函数实现的返回语句错误的问题;4)给出安装插件 vim-instant-markdown 的详细步骤。
    68 条回复    2019-03-13 13:44:22 +08:00
    likaci
        1
    likaci  
       2014-10-13 19:11:23 +08:00   ❤️ 1
    佩服…自己打磨的工具才是最好用的。
    感觉初级用户还是编辑器+vim插件实在,主要是没有耐心…懒
    jsonline
        2
    jsonline  
       2014-10-13 19:25:04 +08:00 via Android   ❤️ 1
    不如直接IDE。
    VIM插件能无障碍使用的真不多。
    sandtears
        3
    sandtears  
       2014-10-13 19:26:28 +08:00
    干嘛不用 IDE
    我除非是编辑配置文件和写 C (目前没找到比较好的 C 的 IDE)不然都用对应 IDE
    jiang42
        4
    jiang42  
       2014-10-13 19:42:01 +08:00
    @sandtears 他就是打造了一个 C 的IDE,其实 VS 很好用的,就是不跨平台。坐等 JetBrain 的 CLion上线
    sandtears
        5
    sandtears  
       2014-10-13 20:04:41 +08:00
    @jiang42 对,我就是因为 Windows 用 VS 被宠坏了才看不上 Linux 下那些 C 语言 IDE 的。。
    不过 Jetbrains 的风评似乎不错,期待 0 0
    ericFork
        6
    ericFork  
       2014-10-13 20:29:53 +08:00
    Vim 的好处是自由……按自己的习惯定制最适合自己的一套配置……

    只是一味往 IDE 上靠,那还是直接用 IDE 好了……
    yangxin0
        7
    yangxin0  
       2014-10-13 20:30:56 +08:00
    哎, 工作后变懒了, 给我记事本我也能写程序。
    banbanchs
        8
    banbanchs  
       2014-10-13 21:57:29 +08:00
    vim+ycm写写短点的C/C++还是蛮爽的,顺便给LZ推荐个 https://github.com/szw/vim-ctrlspace 光是用来切buffer都值得装
    ericls
        9
    ericls  
       2014-10-13 22:38:19 +08:00 via Android
    确实 我用过vim和一些其他的ide 理论上来说 ide是要强大些 但是实际使用效率确实不如vim
    hazard
        10
    hazard  
       2014-10-13 23:03:47 +08:00
    我感觉这个帖子稍不留神就会演化成 是否使用IDE的大论战
    chilaoqi
        11
    chilaoqi  
       2014-10-13 23:37:40 +08:00
    累。
    openroc
        12
    openroc  
       2014-10-13 23:39:01 +08:00   ❤️ 1
    使用vim的赶脚, 生命在于折腾~~~~
    mantianyu
        13
    mantianyu  
       2014-10-13 23:53:00 +08:00   ❤️ 1
    自己维护这些插件的成本太大了, 光首次配置就至少得一下午, 以后也难保不出事
    插件数量这么多, 升级打 patch 什么的平均周期就会缩短, 久而久之会发现维护这些东西真麻烦
    还有就是插件多了, 处理这些插件的布局也是件麻烦事, 就像是 MiniBufExplorer, 发现有个文件名很长显示不过来怎么办? ^W + > 一点一点的加宽? 太麻烦了..

    所以个人觉得要 IDE 就直接上 IDE, 用 vim 就用的干净利索!
    carlhan
        14
    carlhan  
       2014-10-13 23:54:42 +08:00   ❤️ 3
    用github 写文章真是奇怪

    还是放项目比较好 比如hardseed
    https://github.com/yangyangwithgnu/hardseed
    iptux
        15
    iptux  
       2014-10-13 23:57:42 +08:00
    Qt Creator 用着还好吧
    fo2w
        16
    fo2w  
       2014-10-14 00:19:02 +08:00
    看着lz很用心, 好想做伸手党要vimrc
    虽然我还是习惯vs + va

    听vim党说多了耳朵真的很容易出茧, 关于效率, 怎么说呢, 我能说用ide完爆大部分vim党么
    其实说白了, 无它, 唯手熟尔, 各有各的好
    赞一个
    yxzblue
        17
    yxzblue  
       2014-10-14 00:20:27 +08:00
    其实exvim就可以搞定了
    Sunyanzi
        18
    Sunyanzi  
       2014-10-14 03:22:28 +08:00   ❤️ 5
    我用 VIM 用了有六七年了吧 ... 可能还不止 ...

    但现在我除了偶尔还开开 ... 在服务器上装少量插件的用用之外 ... 基本已经很少用了 ...

    究其原因 ... 我想大概只是我不愿意再花费时间在折腾编辑器上 ... 没有那么热衷于磨刀了 ...

    现在的我宁可去找一把勉强还能用得来的刀使唤着 ... 这也就是为什么我转投 ST ...

    而且事实上 ST 并不慢 ... 修改引号里的内容 ... 流畅的输入 dt'a 和抄起鼠标双击的时间相差无几 ...

    清除到行尾这种简单操作 ... d$ 比起拉住鼠标往下一拖也没有什么优势 ...

    如果算上定位光标的时间 ... VIM 的键盘操作甚至会输给 ST 的鼠标操作 ...

    我的 ST 会装 EasyMotion 插件 ... 为了怀旧 ... 也为了我懒得动鼠标的时候不至于蠢蠢的挪光标 ...

    大部分时间我还是键盘鼠标一起操作的 ... 毕竟那样最直观 ... 不会打断我创造程序的思路 ...

    注意我说的是创造 ... 而不是堆砌 ... 堆砌这种不过脑子的事情用什么编辑器都无所谓的 ...

    我承认 ... VIM 确实好 ... 确实呱呱叫 ... 确实引领了一个时代 ... 但不可否认的事情是它已经落伍了 ...

    裹足不前 ... 沉迷于过去的荣光 ... 实在不是一个有追求有理想的程序员该做的事情 ...
    vietor
        19
    vietor  
       2014-10-14 08:26:58 +08:00 via Android
    用IDE就像没断奶的小孩
    san3ye
        20
    san3ye  
       2014-10-14 08:44:24 +08:00
    vim+xcode
    ChiangDi
        21
    ChiangDi  
       2014-10-14 09:28:52 +08:00 via Android
    被9楼说中了,全都是在讨论用不用 IDE
    twilight
        22
    twilight  
       2014-10-14 09:33:51 +08:00
    @fo2w visual studio 2013 + ViEmu 。 实现了不少常用的vim功能。
    Shazoo
        23
    Shazoo  
       2014-10-14 09:34:26 +08:00
    写的不错。star了。
    ChiangDi
        24
    ChiangDi  
       2014-10-14 09:35:08 +08:00 via Android
    @Sunyanzi 你的ST 没装 VIM 插件吗?另外,为什么不用 jetbrains 家的 IDE 呢?
    canautumn
        25
    canautumn  
       2014-10-14 09:36:51 +08:00
    几个月前就看过lz这篇博客,自己不是都用得上不过大部分内容消化学习了一下,自己设置了一份,还是挺好用的,尤其是偶尔连到服务器不得不用vim的时候。
    要是真让vim和专门的ide拼功能,那肯定拼不过啊,虽然我平时还是用ide多一点,我还是觉得lz这篇文章有很多可取之处。没有必要非此即彼。
    现在文章是有更新了?
    twilight
        26
    twilight  
       2014-10-14 09:37:21 +08:00
    xCode , visual studio 都有vim插件,提供了常用的vim功能。
    williamx
        27
    williamx  
       2014-10-14 09:55:10 +08:00
    何必又何苦?
    Darin
        28
    Darin  
       2014-10-14 09:58:38 +08:00
    额 看到这么些高玩的回复。我只能默默顶贴了。
    cszhiyue
        29
    cszhiyue  
       2014-10-14 10:10:34 +08:00
    插件管理为什么不用vundle
    forever139
        30
    forever139  
       2014-10-14 10:12:49 +08:00
    已star
    tamamaxox
        31
    tamamaxox  
       2014-10-14 10:14:09 +08:00
    @banbanchs 不错,但是直接用ctrlp不就妥妥哒。
    yuankui
        32
    yuankui  
       2014-10-14 10:14:41 +08:00
    壮哉兮我大JB
    reeco
        33
    reeco  
       2014-10-14 10:20:17 +08:00
    19L 这逼装得
    Codist
        34
    Codist  
       2014-10-14 10:24:28 +08:00
    收藏勒~~闲了看看
    wity_lv
        35
    wity_lv  
       2014-10-14 11:09:53 +08:00   ❤️ 1
    看到如此完备的文档,我醉了!
    贴个自己用的配置:
    https://gist.github.com/lvjian700/0c0fc6682b1bc069e808
    humiaozuzu
        36
    humiaozuzu  
       2014-10-14 11:21:14 +08:00
    好多年前自己配的 https://github.com/humiaozuzu/dot-vimrc

    后来换 Sublime 了,所有功能都有,而且 UI 漂亮,多 tab 自然,navigation 方便,还比 vim 快。

    Vim 快捷键对 text object 十分友好是他高效的原因,不过带来的坏处就是,仅仅是代码友好,写文章效率是很低的。现在换 Sublime 后,结合 OS X 的 line edit 快捷键不比 text object 的慢。只有连服务器时才会用一下 vim 了,不过服务器也是自己配的一套对服务器方便的配置,好多插件都没开。

    对于新的 https://github.com/neovim/neovim 暂时也没抱什么希望。

    推荐一本叫做 「sublime power user」的书,进阶必备~~
    mstar
        37
    mstar  
       2014-10-14 12:05:56 +08:00
    @Sunyanzi 修改引号里的内容 可以 ci' 并且不管你在引号里的哪个位置
    limbo0
        38
    limbo0  
       2014-10-14 13:41:25 +08:00
    @carlhan 这个真心赞啊
    davidjqq19
        39
    davidjqq19  
       2014-10-14 13:56:13 +08:00
    收藏了,谢谢LZ
    hsyu53
        40
    hsyu53  
       2014-10-14 14:28:01 +08:00
    一直比较懒,懒得折腾vimrc。推荐一个别人的:
    https://github.com/spf13/spf13-vim
    chuan
        41
    chuan  
       2014-10-14 15:29:08 +08:00
    现在一般用IDE,加上vim插件
    uuair
        42
    uuair  
       2014-10-14 15:45:56 +08:00
    很棒!!
    niko
        43
    niko  
       2014-10-14 15:48:27 +08:00
    NB啊~~~
    lzsadam
        44
    lzsadam  
       2014-10-14 16:08:52 +08:00
    楼主好能折腾,果断收藏了,有空的时候折腾折腾……
    ninja470
        45
    ninja470  
       2014-10-14 18:49:12 +08:00
    写得不错,打造过程中的思考很有干货
    konakona
        46
    konakona  
       2014-10-14 19:25:44 +08:00
    还不错,对于将VIM的功能发挥到极致颇有帮助。

    我觉得将VIM弄成日常IDE的人本身就是一种折腾,一种技术的磨练,一种挖掘的精神,很好。

    大家不用为了想法不同,但结果很好的事情进行任何判定吧?
    yangyanggnu
        47
    yangyanggnu  
    OP
       2014-10-14 22:04:17 +08:00
    @ninja470
    @konakona

    两位兄弟说得好:思考、挖掘。发此文两个目的:
    0)记录备案,便于日后复用;
    1)记录过程中遇到的各种坑,帮助下一个有相同困惑的朋友;

    我是个目标驱动的奉行者,我清楚需要哪些功能,通过各种折腾达到目的,或许这个过程不是最优的路径,但一定是最适合我思维模式的。其实,我享受的是过程。

    “明白没有最好只有最适合的道理、取至社区并回馈社区、保持一颗热爱折腾的心”,既然热爱自由软件,那么这是我认为对的事情。
    letv
        48
    letv  
       2014-10-15 14:42:36 +08:00
    直接用楼主你的vimrc就可以了吗?
    yangyanggnu
        49
    yangyanggnu  
    OP
       2014-10-15 15:50:56 +08:00
    @letv

    不行,插件得自己安装
    czyhd
        50
    czyhd  
       2014-10-15 16:09:08 +08:00
    我发现,像let mapleader=";"这样的配置,只能放在~/.vimrc,
    用vim -u 加载其他配置文件是无效的。
    开发机很难搞啊。
    uuair
        51
    uuair  
       2014-10-15 18:44:53 +08:00
    我不太懂计算机,刚开始学c,看见楼主的文档,也想学学,不过碰到了几个问题:
    我用的是mac系统,很多vimrc的设置,都是直接cp楼主文档的,不过有个错误,如下:
    # 将 pathogen 自身也置于独立目录中,需指定其路径
    runtime bundle/pathogen/autoload/pathogen.vim
    # 运行 pathogen
    execute pathogen#infect()

    这里的#号是不是应该是“号啊,我这里报错了,改”号就好了。但是下面这句
    execute pathogen#infect()一直提示出错,
    line 83:
    E117: Unknown function: pathogen#infect
    E15: Invalid expression: pathogen#infect()
    我看了官方的设置,写法是对的,但不知道为什么我这里就一直出错一直出错。。。
    uuair
        52
    uuair  
       2014-10-15 18:59:41 +08:00
    问题居然被我找到了:
    官方文档关于paghogen的安装方法跟楼主说的不一样。
    楼主是这样写的:
    创建目录 ~/.vim/bundle/pathogen/autoload/;下载 pathogen.vim(https://github.com/tpope/vim-pathogen )至 ~/.vim/bundle/pathogen/autoload/。

    而官方文档是这样的:
    mkdir -p ~/.vim/autoload ~/.vim/bundle && \
    curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

    问题在于这个autoload的目录,官方是放到~/.vim/autoload的,而楼主是~/.vim/bundle/pathogen/autoload/的,改成官方,就ok了。。不知道是不是只有我有这个问题。。
    fzss
        53
    fzss  
       2014-10-20 04:21:40 +08:00 via iPhone
    别扯淡啦,前几天问drew houston,他就用sublime text...用不用ide,用不用vim无所谓啦
    Jaylee
        54
    Jaylee  
       2014-10-29 11:04:50 +08:00
    @uuair 其实都是一样的 按照官方的放在.vim/autoload目录 可以直接call 命令
    按照楼主放在bundle/pathogen目录,需要指定runtime路径
    grasshopyx
        55
    grasshopyx  
       2015-01-06 00:16:44 +08:00
    请问博主,有没有一个好用的类C语言的调试器的VIM插件?
    yangyanggnu
        56
    yangyanggnu  
    OP
       2015-01-06 09:27:48 +08:00   ❤️ 1
    @grasshopyx
    请问博主,有没有一个好用的类C语言的调试器的VIM插件?

    —— 不明白你所谓的类 C 语言调试器是什么意思,如果是指用 C/C++ 调试器,那么,目前主流的 vim 调试器插件,基于 GDB 的有 vimgdb、clewn、pyclewn,基于 LLDB 的有 vim-lldb,效果均不理想,至少与我预期存在较大差距,你可以自行逐一尝试,挑取最爱。若要推荐,优选 vim-lldb,其次 pyclewn。
    grasshopyx
        57
    grasshopyx  
       2015-01-07 15:17:30 +08:00
    我使用过 vim-lldb,但是没有成功。不知道该怎么使用。
    当我用 vundle 安装好 gilligan/vim-lldb 后,用:Lattach xxx 会出现 error during attach : error: could not find a process named xxx 。意思似乎是没有一个叫xxx的进程,这很奇怪,为什么debug之前要先运行它呢?
    如果用:Ltarget create xxx,则会出现一堆错误。这个错误也有人遇到过,参见https://github.com/gilligan/vim-lldb/issues/5
    但是github上的这个人是在ubuntu环境下,它的解决思路我也没有看明白。
    请教博主 vim-lldb 该怎么用?
    kappa
        58
    kappa  
       2015-01-19 13:31:17 +08:00
    这个可以放到gitbook上么?
    yangyanggnu
        59
    yangyanggnu  
    OP
       2015-01-19 16:10:11 +08:00
    @kappa

    可以,麻烦你了
    SmallSteelGun
        60
    SmallSteelGun  
       2015-02-03 16:06:47 +08:00
    多谢博主,可是我在mac平台上安装不上呢。
    sing1ee
        61
    sing1ee  
       2015-05-11 13:22:06 +08:00
    https://github.com/spf13/spf13-vim 我用这个,但我不排斥pycharm等
    favoorr
        62
    favoorr  
       2015-06-05 16:08:16 +08:00
    @uuair 我自己执行命令创建的文件夹,使用 wget 下载的pathogen.vim,放置路径什么的完全没错,但就是每次都报错误,没办法复制 github 里面作者 的 readme 安装方法,就正确
    hallewong
        63
    hallewong  
       2015-08-26 18:36:00 +08:00
    多谢博主。

    我在使用中发现
    " 定义快捷键到行首和行尾
    nmap lb 0
    nmap le $
    会使得用 l 移动光标的时候有延迟,是不是应该映射到别的键上呢
    fcymk2
        64
    fcymk2  
       2016-02-04 15:06:12 +08:00
    试了下 ycm, 在头文件路径都对的情况下 补全跳转很犀利

    可是在头文件报错(提示找不到)的时候, 跳转完全不能用了(有时候 win 下改点小代码,没有 kernel 头文件,), 不知道这个能不能通过配置什么东西来改进. 用 neocomplete+clang 这时候是可以正常跳转工作的
    Muto
        65
    Muto  
       2016-04-17 20:50:08 +08:00
    @hallewong 楼主的配置文件里是大写的 LB 和 LE
    fuxpro
        66
    fuxpro  
       2016-09-14 09:37:10 +08:00
    由于目前手上的项目在使用 Dlang 开发, 所以直接上了 VS

    Vim 是我学生时代的好朋友
    ywUXm9U86a62N7rN
        67
    ywUXm9U86a62N7rN  
       2017-02-21 19:34:29 +08:00
    大道至简!用遍 Eclipse 系和 JB 系 IDE 后,还是换为 Vim 。
    demodashi
        68
    demodashi  
       2019-03-13 13:44:22 +08:00
    厉害,demo 大师欢迎您入驻
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3110 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 14:18 · PVG 22:18 · LAX 06:18 · JFK 09:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.