最后更新于 .

其实很早就想写这篇文章了,虽然晚上介绍vim的文章很多,本博也已经就vim的使用写了70多篇博文,但是由于历史的原因,还有很多人对vim能做什么存在误解,包括:

  • vim对中文支持不好
  • vim适合临时编辑文本,对IDE的支持不好
  • vim的内嵌脚本语言不够强大,不像emacs的lisp那样无所不能

我不知道提出这些论断的人是因为不了不了解vim的现状,还是是对vim心存偏见。

本博在写vim相关文章的时候,一直坚持只谈技术的原则,不会涉及到与其他编辑器尤其是emacs的任何比较,然而最近在看了某些博文之后,觉得为了不让某些已经过时的观点给初学者选择编辑器时造成困扰,写下这篇文章十分必要。

OK,我们正式开始,在文章的末尾,相信大家都会明白上面的几个观点是否正确。

一.普通人的编辑利器

之所以第一点就提到这个,是因为"文字处理"当然是一个编辑器最基本的功能,而能把编辑的体验发挥到极致的也恐怕只有vim而已了。

这一节,也会参考善用佳软对vim的使用心得,相信用户的感受是最好的证明。

  1. 免费
    用户再也不用去网上辛苦的下载D版了!
  2. 提高输入速度
    这个相信也没有什么好争论的,纯键盘操作的速度是鼠标无法比拟的,虽然会带来一定的学习成本,但是相信还是值得的。
  3. 完美支持中文,并支持多种文件编码
    很多编辑器会有处理多字节编码的问题,而vim完美解决了这一点。(如果你的vim没解决,请参考linux下vim的编译以及终端乱码的最终解决方案
  4. 文本笔记管理
    这要归功于vim的一款插件:voom,详情可以参考善用佳软的这篇博文--VOoM(原VOOF):vim实现带折叠双栏树状文本管理

二.程序员的编辑利器

如果你是一名程序员,那就千万不要错过vim,它真的为程序员提供了太多贴心的功能。

  1. 支持几乎所有语言类型
    不夸张的说,vim真的是将这一点做到了极致,只要是大家知道的语言,大到c++,python,小到bash,sql,vim全部都默认支持了这些语言的语法高亮,自动缩进,等等。一个编辑器搞定所有源码编写,不用为每门语言学习他的编辑器,降低学习成本,何乐而不为?
  2. 支持各种语言的代码自动补全和智能提示
    详见:vim所支持的自动完成详解把VIM打造成一个真正的IDE(3)
  3. 快速查找函数定义功能及显示函数列表功能
    vim+tags+taglist即可轻松实现上面的功能,功能上完全可以替代si或者vs.详见:把VIM打造成一个真正的IDE(2)在Vim中使用ctags
  4. 支持类似textmate的代码片段功能
    我目前使用的是snipMate,当然提供这种功能的插件可不只这一个,你可以有更多选择~
  5. 集成编译调试功能,快速定位编译错误
    vim提供了quickfix的功能,可以集成gcc,g++,java,c#,python,php等各种语言的错误定位功能,极大提高了代码编译调试时的错误定位。参见:VIM-一键编译单个源文件
  6. 开源
    如果发现vim有bug,那么大可以自己去研究代码修复~
  7. 跨平台
    在linux,windows,mac等多平台都有相应的版本,不用担心跨平台开发的问题!
  8. 支持插件,无限扩展自己想要的功能
    vim本身有自己的脚本语言,如果你真的不想再多学一门语言,那也不是什么大事,gvim7.3已经默认编译支持了python,ruby,lua,perl等等脚本语言,用你喜欢的脚本语言开发去吧!(我爱python!),与emacs的lisp相比,vim自身的脚本语言确实有所欠缺,但是python较之lisp也算是旗鼓相当了吧

三.vim骨灰级玩家的超级终端

这是我几个月来一直试图总结的结论,也是vim发展至今我认为颠覆性的一个大特性。

其实在我现在看来,vim更像是一个超级终端,vim已经支持用python,lua,perl,ruby等多种脚本语言进行脚本编写,只要你愿意,你可以用脚本语言实现任何你想要的功能,然后通过vim展示出来。

简单来说,即vim替你实现了一个通用的界面,而你只需要编写你的逻辑代码,而展现到屏幕这一层,就调用vim的接口,由vim来完成就可以了~

这就是我所说的超级终端的定义,如果还是不能理解,那我们就用实例来说明吧!

  1. Vimpress,提供在vim中查看、发布、修改、删除博客的功能
  2. TwitVim,提供在vim查看、发布、修改、删除twitter的功能
  3. vimwiki,用vim打造你的个人wiki~
  4. qiushibaike,在vim中看糗事百科(本博编写)
  5. Calendar,提供日历的功能,并且可以记笔记
  6. vimmailr,用vim来发邮件,参见:用Vim(gvim)发邮件(上流哇)

OK,到此为止就结束啦~对照文章开头的那些所谓vim的不足,是否有了新的认识呢? 然而其实vim所能做的远不止这么点,只要你肯去发掘,你会发现vim真的远超乎你的想象!

Pingbacks

  1. vim简介-无所不能的vim究竟能做什么 | 程序猿小7 on #

    [...] 这里 Categories: [...]

Pingbacks已打开。

Trackbacks

引用地址

评论

  1. dxq83

    dxq83 on #

    虽然我不是程序员,但是爱好者,在刚开始学vim。这个网站很好,会常来看看学习!

    Reply

    1. Dante

      Dante on #

      哈哈,欢迎交流~

      Reply

  2. fanhe

    fanhe on #

    缺点:1.无论你怎么搞,还是不能想ide那样方便的管理项目,调试等等。一句话,vim就是没办法做到现代的ide一样。
    2.如果你的文本经常要长行的,不要用vim了。

    Reply

    1. Dante

      Dante on #

      1.关于第一点我不发表意见,并不在技术讨论的范畴。不过我一直有个观点:一件事你完成了,对别人宣布这件事是可以实现的,别人肯定会相信;但如果一件事你没做出来,就对别人宣布这件事情是不可能完成的,是没有什么说服力的。

      2.第二个问题很容易解决:

      <pre lang="vim" line="1">
      set display=lastline
      </pre>

      Reply

      1. fanhe

        fanhe on #

        往下滚还可以,往上滚就知道什么叫晃动

        Reply

      2. ==

        == on #

        额,不太理解,所谓的长行是不是指很长的一个行,要切换这个长行的文字用 jk 不是很好使?用了set display=lastline,并没有达到像Word那样。。求解

        Reply

        1. Dante

          Dante on #

          呃,不是,set display=lastline主要是为了解决一行的显示超过一屏时的问题。
          你说的切换行用gj,gk就可以

          Reply

          1. ==

            == on #

            OK了,谢谢。

            Reply

            1. lisfan

              lisfan on #

              哈,又学了一招,这问题困扰我挺久了。
              不过我现在使用vim的最大原因还是在文本编辑上,纯键盘操作可以让我更专注于在内容上,至于将vim当成ide编辑器,我现在遇到的难点是对某一语言的插件寻找配置,太耗费时间了点(如果有朋友可以放出针对某一语文的插件及配置的话,再好不过了)因为并不是只用一种语言啊。总之先在文本编辑领域成为“砖家”先

              Reply

              1. ==

                == on #

                请问 你知道怎么在win下设置vim背景透明吗?网上的说法都是在linux下的终端里用vim,再将终端设置为透明;或者是善用佳软的用ahk脚本设置,我下了上面的ahk脚本,没用……

                Reply

                1. Dante

                  Dante on #

                  win下面,vim自身确实没提供这样的功能,如果善用佳软那个没用的话,我也不知道咋搞了,没有研究过。。

                  Reply

                2. kit393

                  kit393 on #

                  搜索挖坟出来的:

                  这个不是vim本身的功能,是由第三方程序提供的,ahk不可以的话搜索一下类似功能的小软件.

                  Reply

                3. 梧桐树

                  梧桐树 on #

                  使用 dm2 可以实现 该功能

                  Reply

    2. 依云

      依云 on #

      如果你的文本经常要长行的,那么你不应当把它当作普通的纯文本处理,比如由程序生成的长长的 XML 或者 json 文件。

      Reply

    3. 梧桐

      梧桐 on #

      说的有点道理,但是在纯编辑领域VIM肯定是最强的~没有之一~

      Reply

    4. artmath

      artmath on #

      总有一些人愿意把vim和ide相提并论,真是让人很不爽。不是vim没有ide那么强大,而是受使用者的水平限制,水平低的人觉得很罗嗦,而水平高的人配置得比ide还强大顺手。

      vim就是一个编辑器,自己需要的功能自己去扩展,有没有ide那么强完全是使用着的水平,像什么netbeans,visual studio,这些玩意,人家那是商业软件,多少人在开发?花了多少钱?

      而vim就是一款开源免费的编辑器。
      当年没有这些ide之前的黑客不也总vim,emacs么。

      Reply

      1. fanhe

        fanhe on #

        肤浅。

        Reply

        1. zsneoks

          zsneoks on #

          一句话。
          使用者有多长。vim就能有多长。

          Ps:在博主这又学了不少东东来

          Reply

          1. Dante

            Dante on #

            呵呵,欢迎经常来讨论~~

            Reply

      2. Jacky Liu

        Jacky Liu on #

        vim 是最强大的 IDE。以上。

        Reply

  3. vimererer

    vimererer on #

    vimer的确很强大!
    博主也很强大
    对待任何事物都要奔着学习他的好的一方面的态度去看待~这样自己才能有所提高·

    Reply

  4. 老戴

    老戴 on #

    好久没来回复了!最近在学习emacs,想试试看哪个更适合我一点

    Reply

    1. Dante

      Dante on #

      呵呵,倚天屠龙,得其一便可独步武林~

      Reply

  5. Eric

    Eric on #

    作为编辑器vim是强大,但绝对不是无所不能。要比多才多艺,.NET,Java的IDE要甩开vim几条街几乎毫无压力。
    另外一个不爽的地方是:80%的时间只是在使用20%的功能,只要肯记,vim的操作风格非但无害而且好处多多,但是那80%的功能有时还是要用到的,譬如要set某个比较偏门的option,运气好时能google之,I‘m not lucky时就只能一页一页的翻文档。。。

    Reply

    1. Dante

      Dante on #

      对与.NET,java的IDE的比较同样不发表意见,不在技术的范畴。

      不过vim的精髓不仅是hjkl,那只是vim外在的表现,文章中的所说的第二和第三大类也同样是vim非常重要的特性。

      Reply

    2. 依云

      依云 on #

      Vim 本来就不是无所不能的,Vim 说过你不能用它来洗盘子的,只有 Emacs 说过自己能煮咖啡。

      如果你要的是 IDE,那么你不应该使用 Vim。Vim 是通用的文本编辑器,根本就不是专门写某种(或某些)代码的 IDE。

      Reply

      1. fanhe

        fanhe on #

        所以我从不向想要在linux下要ide的同学推荐vim。

        Reply

        1. Mike Ma

          Mike Ma on #

          Emacs和Eclipse比起来,前者胜过后者毫无压力

          Reply

      2. wangjl

        wangjl on #

        ide隐藏了太多东西,想走远一点的同学还是看着脚下,编译器、连接器一步一个脚印的走过来比较好……

        选vim只是因为我在很多机器上需要用它,emacs需要太长时间来调教……
        “vi任何地方都有”,虽然这个说法不太牢靠了

        另外,我想我应该可以用vim来煮咖啡。

        Reply

        1. 依云

          依云 on #

          vi 的确很多地方都有啊,连 busybox 里都有一个呢。不过 vi 和 vim 相比差多了,而且有些奇怪的行为,比如我写好 :q! 正准备按回车时,突然反悔了,于是 Esc,结果 vi 还是会执行命令。。。

          Reply

          1. wangjl

            wangjl on #

            貌似现在很多发行版用nano代替了vi,比如ubuntu、gentoo什么的……让人很郁闷,安装的时候第一件事就是装vim,不然根本没法用。
            busybox上的vi确实很让人感动。

            Reply

            1. 依云

              依云 on #

              除了嵌入式系统外,还没有不能用 vi 的 Linux 系统吧?Ubuntu 也有 vi 命令的,虽然默认是链接到 vim.tiny。

              Reply

              1. jayklx

                jayklx on #

                Gentoo木有。。。
                灰常纠结。。。居然带了Emacs不带Vim。。。

                Reply

        2. fanhe

          fanhe on #

          当你都了解了编译器、连接器啥的,然后也会写makefile了,那又如何?自己手动一个一个打命令?反正我就是想偷懒,但是又用惯了vim,就会对没有把vim作为ide编辑器的种种郁闷

          Reply

          1. wangjl

            wangjl on #

            我确实敲过很多makefile,现在敲automake,对c/c++来说,完全掌控自己的代码太重要了,ide隐藏的细节都是将来的风险

            Reply

            1. Dante

              Dante on #

              我也是一直在写自己的makefile,后来写的多了之后,就自己用snipmate做了几个makefile的模板,然一直在用~ 很顺手~~

              Reply

            2. fanhe

              fanhe on #

              那你为什么信任makefile?难道makefile就不会隐藏细节?你信任自己写的makefile就好像我信任一个稳健的ide设置的一个项目。客观来说,vim能做很多事,但不是万能。这句话不能只说一半,否则就是误人子弟。其实我想过跑emacs那里的,因为它比vim“万能”,但是那操作方式实在是不适合我。

              Reply

              1. 依云

                依云 on #

                当你完全了解你的 IDE 时,并且知道它的 bug 很少时,它也是可信的。只是,谁给我个 Visual Studio 参考手册之类的东西?

                Reply

                1. fanhe

                  fanhe on #

                  全世界的ide只有visual studio一种?我用的ide只是让它帮我组织项目,帮我敲那一大堆的编译命令等等这类

                  Reply

                  1. 依云

                    依云 on #

                    呃,我只是举个例子嘛。不管是什么东西,如果我不知道它是怎么调用后端的编译器什么的我就不放心,说不定哪天死得很惨还不知道自己是怎么死的。

                    Reply

                    1. 雨碎江南

                      雨碎江南 on #

                      我强烈赞同这个观点,以前做JavaEE项目的时候给IDE忽悠惨了,所以现在只用Vim+Ant+JDK作为基本工具,重要的web.xml什么的都是手写.令我惊奇的是这样同时提高了编辑效率和代码可靠程度......

                      Reply

            3. zsneoks

              zsneoks on #

              我觉得单就这个makefile的问题来讲,既然ide可以自动生成,那么就表示存在自动生成的算法。把这个算法设计出来写成个自动生成makefile的脚本那不就搞定,一劳永逸了。

              当然,如果非说这样还得自己去想和写这个脚本,而ide下已经有人替我们想和写好自动生成过程直接使用,来做为ide强于vim的理由。我就实在没什么话好说了。

              总之,只要愿意动手,计算机上的事情应该都可以实现,我觉得。

              Reply

      3. madper

        madper on #

        其实vim也可以煮咖啡的, 你所需要的只是一个支持超文本咖啡壶控制协议的咖啡壶而已. 虽然这个协议一开始是恶搞的, 但是真的有国外蛋疼的人做出来了..

        Reply

    3. 依云

      依云 on #

      呃,我用的 Vim 时除了找插件外很少 Google 的。如果 :h 的补全中找不到的话就试试 :helpgrep,实在不行可以到 vim_use (或者中文的 vim-cn)邮件列表里去问。当然也欢迎到 vim-cn@appspot.com 这个 XMPP 群来讨论。

      Reply

      1. 亚弥

        亚弥 on #

        这个XMPP群咋访问呢?GTalk可以不?

        Reply

        1. 依云

          依云 on #

          当然可以了~

          Reply

  6. Javaer

    Javaer on #

    喜欢用vim,转了,谢谢博主。

    Reply

  7. Ricepig

    Ricepig on #

    正在学习VIM,作为文字编辑器它是给力的。

    不过,文章中的第二部分。。。VIM和史前ide比比还是可以的,和现代的ide比。。。就说几点吧

    1、调试的支持
    2、代码智能感知和智能提示
    3、项目管理、代码管理和重构等较为“高级”的特性

    VIM是很强大的,手指不离开键盘的感觉也确实很好。

    但是,Visual Studio,这个宇宙中最强大的ide,也恳请作者感受一下最新版吧,哇哈哈

    Reply

    1. Dante

      Dante on #

      我公司的电脑上一直装着vs2010。。。不过好像过了试用时间了。。
      其实可能你对文章的第二部分真的理解和我的初衷有些偏差,我的意思是vim虽然只是一款编辑器,但已经集成了很多IDE的功能。这对vim的使用者是福音,毕竟对IDE功能支持的欠缺将不再是拒绝vim的理由了。

      本博所有的vim相关文章都是基于推广vim和让vim使用者更方便的使用vim,并非有意要与哪个编辑器或者IDE一争高下。

      Reply

    2. Noe

      Noe on #

      就凭VS自带的渣类编辑器也好意思称最强大?笑话!苹果免费提供的Xcode不知道比VS好用多少倍。更不用说和Emacs和vim相比了。

      Reply

    3. 依云

      依云 on #

      是的,VS 太强大了,以至于在全宇宙的 IDE 中只有它做到我刚接触时就如同想不到火球一般,此后只好远远躲避。

      Reply

      1. 依云

        依云 on #

        s/想不/像碰/

        Reply

  8. prife

    prife on #

    网站很好,收藏,请教楼主一个问题哈
    我用gvim的时候,输入中文的时候,搜狗输入法
    按下ESC切换模式,有的时候输入法自动变成输入英文状态,有时候却又成了中文状态了,很纠结,楼主有何良策么?先谢谢了

    Reply

    1. Dante

      Dante on #

      呃,搜狗输入法没用过,不过我现在用QQ输入法按下ESC是自动进入英文模式的,google输入法好像也没问题。

      Reply

      1. prife

        prife on #

        谢谢,我换了输入法就么有搜狗的那个毛病了。再请教一个问题哈,我试了下配置python,也把你的python.vim放到indent目录下了。但是似乎编写 file.py文件的时候,还是没有正确的缩进。比如我写
        for i in range(5):
        print i
        print所在行又从头开始了,而且按下tab是默认的8字符。我想实现的效果是,按下tab是四空格缩进,但是只是针对py文件,并且可以实现楼主那种漂亮的缩进。我以前用notepad++则无此问题,可以正常缩进。请问是什么原因呢?
        系统:win7
        版本:gvim 7.3

        Reply

        1. prife

          prife on #

          set nu
          set autoindent
          syntax enable
          " 取消文件备份
          set nobackup
          " 注释语句
          " 设置 mapleader
          let mapleader = ","

          "设置加载vimrc配置文件的快捷键
          map ss :source $HOME\_vimrc
          "设置打开配置文件的快捷键
          map o :e $HOME\_vimrc
          "当vimrc文件改动时,自动加载此文件
          "autocmd! bufwritepost _vimrc source $HOME\_vimrc
          "Go to last file(s) if invoked without arguments.
          autocmd VimLeave * nested if (!isdirectory($HOME . "\mvim")) |
          \ call mkdir($HOME . "\mvim") |
          \ endif |
          \ execute "mksession! " . $HOME . "\mvim\Session.vim"

          autocmd VimEnter * nested if argc() == 0 &amp;&amp; filereadable($HOME . "\mvim\Session.vim") |
          \ execute "source " . $HOME . "\mvim\Session.vim"
          "插入python配置的快捷键
          map :w:!python %
          imap :w:!python %
          "pydiction 1.2 python auto complete
          filetype plugin on
          let g:pydiction_location = '$HOME/mvim/complete-dict'
          "defalut g:pydiction_menu_height == 15
          "let g:pydiction_menu_height = 20

          Reply

        2. Dante

          Dante on #

          好奇怪。。我试了一下是可以的呀?
          set autoindent
          把这个去掉试试。

          Reply

  9. prife

    prife on #

    去掉了,还是不能对for语句自动缩进,那个python.vim是不是应该放在ftplugin目录下面呢?放在indent目录下似乎没有任何效果。另外不知道是不是vimrc需要做一些设置呢?

    Reply

    1. Dante

      Dante on #

      你是不是没有写这句

      <pre lang="vim" line="1">
      filetype plugin indent on
      </pre>

      Reply

      1. prife

        prife on #

        加上这句果然可以了。非常感谢

        Reply

  10. showwiki

    showwiki on #

    请问Vim支持像Eclipse那种高亮所选的 相同 单词 的功能么?

    Reply

    1. Dante

      Dante on #

      自带的serach可以高亮一个。
      扩展的mark.vim都可以同时高亮6个。

      Reply

      1. showwiki

        showwiki on #

        非常谢谢!vim自带的search要敲入所选的单词,gvim中支持双击选择然后高亮么?
        mark.vim 的下载页面有个叫mark.vba.gz 的下载链接,和mark.vim的链接 ,有没有简单的教程链接啊,百度了一下,没有相关教程啊
        非常感谢站长的热心回答,

        Reply

        1. showwiki

          showwiki on #

          不好,意思,刚在链接上才看到英文的使用说明,窃问一下,
          “m Mark or unmark the word under the cursor”

          是指在某种模式下直接按 m 键然后高亮光标所在单词么?我试了一下,没有效果矣?
          和{Visual} 是指什么啊?困惑中

          Reply

          1. showwiki

            showwiki on #

            神啊,居然是指\\ , m 指的居然是\\m, 真是太出乎我的意料了,能改成一个简单点的映射么?

            Reply

            1. kikyo

              kikyo on #

              http://paste.org.ru/?q6fbue

              上面的应该是楼上想要的吧。

              Reply

            2. Dante

              Dante on #

              我映射的是,k

              <pre lang="cpp" line="1">
              map ,k <leader>m
              </pre>

              Reply

        2. 依云

          依云 on #

          “选择”和“高亮”有区别吗?

          Reply

  11. lisfan

    lisfan on #

    现在讨论很激烈呢,求一个东西:哪款轻便的划词翻译软件能在vim中使用(现在使用的是有道,翻译时要打开notepad,真麻烦)

    Reply

    1. Dante

      Dante on #

      善用佳软之前有片博文,可以看一下:
      http://xbeta.info/gvim-powerword-ciba.htm

      Reply

      1. 梧桐

        梧桐 on #

        这个会不会更符合你的需要?http://www.vim.org/scripts/script.php?script_id=3404

        Reply

        1. lisfan

          lisfan on #

          谢谢梧桐兄了,已经用惯了有道了

          Reply

      2. lisfan

        lisfan on #

        55~太感动了,终于解决这个问题了,不久前也准备是想将善用佳软的所有博文都看下的,都是精品啊,可能还没有看到这篇吧。谢谢了

        Reply

  12. lisfan

    lisfan on #

    测试一下,不好意思哈。

    Reply

  13. johnson

    johnson on #

    我正准备学VIM
    可是看到了好多老文章,说VIM甚至比不过VS。
    纯键盘我的打字速度并不快(当然也没有刻意练过)请问我适合用vim吗。。。

    Reply

    1. Dante

      Dante on #

      呃,关于VIM和VS的争论已经很多,这里就不多说什么了,不过我个人是更趋向于vim。
      对于打字速度的话,这种东西慢慢熟悉了自然会提速,而且用vim也利于你的快速编辑能力。

      Reply

  14. jeng

    jeng on #

    请问各位达人,vim中有C# 或 ASP.NET 的插件吗?
    不要误会,我也是支持使用VIM 的,但是迫于现在主要做 .NET 开发
    VS 中有人做了模仿vim的插件,及其不好用。
    和你们一样,我也讨厌VS~
    资源占用之多实在是不忍提起

    Reply

    1. Dante

      Dante on #

      嗯,很久没写过C#和ASP.net了,在www.vim.org里直接查一下吧

      其实可以一步步来,先把vim当普通的编辑器,时间长了,你会发现自己需要的插件都会找到。

      Reply

    2. madper

      madper on #

      vs占用资源真不多, 算是很少的了, vs2008打开之后只占用三十多mb的内存, 比起别的ide或者emacs动辄80mb的内存, 算是很少的了. 只不过vs2008用起来不是很流畅罢了.

      Reply

  15. x-snail

    x-snail on #

    新手学习了,不知道vim 有没有php 代码补全功能

    Reply

    1. Dante

      Dante on #

      http://www.vimer.cn/?p=772

      Reply

  16. freiz

    freiz on #

    喜欢用vim写脚本语言,写Java不用IDE相当于自虐吧...就确定别人的几十个类库里面的细节都了解么,反正我是没这本事

    两个思路,一是把vim扩展成IDE,这方面我感觉不靠谱,各种语言补全就很难弄,其实也不用弄,像Python、C这些标准库比较小的平时拿来写点儿小片段,搞ACM什么的都没问题。一是Eclipse加上viplugin,手指照样不用离开键盘,大工程下效率绝对能体现出来,缺点是键绑定啥的基本上没有个性化可言了

    Reply

    1. Dante

      Dante on #

      嗯,和搞什么样的开发也有关系。

      不过我真是什么开发都用vim,无论是c、c++、python、php、html、js……哈哈,习惯了~

      Reply

  17. mythyear

    mythyear on #

    要是能够用vim收邮件就好了……

    Reply

    1. Dante

      Dante on #

      介个。。其实只要肯花时间,也是一样能写出来的……
      用vim看、写blog都可以,邮件也没啥不可能的。。

      Reply

    2. madper

      madper on #

      不是一直就可以嘛?

      Reply

  18. yulong

    yulong on #

    hi,大神,我想了解下gvim跟vim是什么关系阿?说是gvim强大了一些,但是实质有什么改变么??

    Reply

    1. Dante

      Dante on #

      gvim 可以理解为 gui vim,清楚了吧~~

      Reply

  19. 用emacs也用vim,用python也用lisp

    用emacs也用vim,用python也用lisp on #

    总体写得不错,但有的地方不认同,例如这句:

    “但是python较之lisp恐怕就是旗鼓相当甚至更胜一筹了吧”

    博主又说

    “...我一直有个观点:一件事你完成了,对别人宣布这件事是可以实现的,别人肯定会相信;但如果一件事你没做出来,就对别人宣布这件事情是不可能完成的,是没有什么说服力的。”

    那么博主是否既懂python也懂lisp,否则说这样的话,也是没有说服力,不如把“python较之lisp”这一句删掉吧

    vim好是好,但是不能通过踩低lisp或emacs,来抬高vim

    Reply

    1. Dante

      Dante on #

      这位朋友说的很中肯,这种论断确实容易引起纷争,我改一下吧。

      Reply

    2. Dante

      Dante on #

      btw,学过一段时间的lisp,很欣赏lisp的编程思想,文中丝毫没有贬低的意思。

      Reply

    3. madper

      madper on #

      虽然我是用emacs的, 但我还是想说, vim可以用python扩展, 确实比lisp易学, 至少对我来说是...

      Reply

  20. Fermat618

    Fermat618 on #

    这里还有个打架帖。

    vim强在它是一个编辑效率超高的通用文本编辑器。之后是它的可扩展性。

    那些花哨的功能,的确可以代表vim的可扩展性,但是我是不打算用那些了,因为其它专门的程序往往做得更好。

    vim不是万能的,可知道了vim的好处,要再去找个替代器就难了。

    Reply

  21. bsky22

    bsky22 on #

    博主你好,我想只用VIM作键的替换,交换CAPS和左ctrl,达到只有在VIM里面才能体现两键交换的效果,这个能不能实现?谢谢!

    由于在VIM里没发现如何表示capslock的方法,目前我才用的方法是用xmodmap交换,在vim里用autocmd的方法,进入vim就替换,退出时就替换回来,不太完美,缺点就是:正在使用vim时,用其他程序都会感觉键被替换掉。

    Reply

    1. Dante

      Dante on #

      :h map,看一下,应该有写

      Reply

    2. ooops

      ooops on #

      我想问下怎么用xmodmap映射,研究了一下,没太明白。望指教。

      Reply

      1. Dante

        Dante on #

        没用过,试下vim自己的map呢?

        Reply

        1. ooops

          ooops on #

          不行的。因为capslock属于修饰键,在vim里面没有这个键的映射,mac只能用上面那个人说的方法,或者下一个软件。但是那个方法不太会用,网上下的软件用ps/2键盘不给力,usb键盘可以,但我基本不用usb键盘 = =

          对了, 话说我点他的回复,他收不到么?

          Reply

          1. bsky22

            bsky22 on #

            用vim自己做映射,会形成循环映射,vim会提示错误,所以无法实现,再说vim里没有表示caps_lock的方法。
            目前我采用的方法是用xmodmap交换caps_lock和右边ctrl,因为右边的ctrl由于键盘的位置不同而不同,所以很少使用,这样做的好处是既保留了大写键,又不影响日常习惯了的左ctrl操作,还能实现ctrl键的位置与hhkb键盘上的一致。好了,废话少说,上步骤:
            1、写一个可执行的shell文件,内容如下:
            #!/bin/bash
            xmodmap -e "remove Lock = Caps_Lock"
            xmodmap -e "remove Control = Control_R"
            xmodmap -e "keycode 66 = Control_R"
            xmodmap -e "keycode 105 = Caps_Lock"
            xmodmap -e "add Control = Control_R"
            xmodmap -e "add Lock = Caps_Lock"

            2、让这个脚本开机自动运行(不要设置在rc*.d里面,那执行的时候x还没启动,会失败的)

            如果你在纯字符界面下,用如下方法:
            dumpkeys &gt; tmp
            vim tmp 交换键值58和97,然后loadkeys tmp
            rm -f tmp

            Reply

  22. lijsf

    lijsf on #

    不错的站点,学习了~~

    Reply

  23. bing

    bing on #

    vim确实是好用 即使有了IDE 我也愿意内嵌进vim插件 确实是好用

    Reply

  24. taowl2003

    taowl2003 on #

    一直很想用vim来编程,但找了很久也没有搞明白,也许是我太菜鸟了吧。
    一个是在win环境下,用vim进行C++调试编译等相关的内容很少,还不是太明白怎么弄。
    更重要也很费解的是,一个程序总归会用到一些资源吧,对话框、按钮、编辑框,怎么大家讨论时从来不涉及到这个?怎么用vim来管理和设计资源、界面?这个问题不解决,就没有办法抛弃vs啊。
    我太菜鸟,盼指教。

    Reply

  25. liuhao

    liuhao on #

    vim 不强大,vim很弱小。vim能干的事情很少。vim只会编辑,而且是纯键盘流,有很多不便,相当的不直观。vim只把编辑这件事干的还不错。要干其他的事情,需要跟别人合作。之所以,许多人喜欢vim的原因,应该是,虽然他做的还不好,他能干的事不多,但是他在努力的做好自己的事。不像一些,想做很多事,但是一件也没做好。如果说vim不完美,的确是,但是在编辑领域,他应该是最接近的。

    Reply

  26. 我握我

    我握我 on #

    vim就像一个坑,掉进去的时候在下面玩地牛开心,等到爬出来以后,就不想再掉进去了

    Reply

  27. abbr

    abbr on #

    楼主是用什么输入法啊,我用QQ输入法,如果在QQ输入法英文输入状态,vim在ex模式时,输入的命令显示不出来,切换成英文输入法就正常了。遇到过这样的情况吗?

    Reply

    1. Dante

      Dante on #

      是mac还是win?win下应该正常吧?

      Reply

  28. abbr

    abbr on #

    是win7,64位的,后来发现只是第一次显示不出来,输入两次就出来了。比如在半角英文状态下输入“:x"退出,可以完成命令,只是那个x显示不出来。输入两个xx就可以了

    Reply

  29. Ava1oN 龙龙

    Ava1oN 龙龙 on #

    收藏学习了~~

    Reply

  30. hilojack

    hilojack on #

    博主在mac 下是怎么解决vim从insert 到 normal 时自动中英文切换的问题?原来我用linux 时,利用的是InsertLeave + fcitx 的api。后来使用mac 后,用百度五笔,可惜百度五笔没有提供api, 无法自动切换英文。后来我用鼠须管输入法,可以在macvim 作 insertLeave时,自动切到英文。但是terminal 下的vim 还是不行。

    Reply

    1. Dante

      Dante on #

      终端下的vim是应该是改不了的,这个和你用的终端还有关系。最后我是养成了切换模式时,手会自动去切换一下输入法。。

      Reply

  31. 歪妖内涵网

    歪妖内涵网 on #

    悄悄的路过。

    Reply

  32. 黄瓜大王

    黄瓜大王 on #

    至今不知道怎么用命令编译java的win程序员路过。

    仅支持语法高亮不支持语法检测实在难受。输入的快意味着更多的错误。可能只是我不懂,但是我并没有找到让VIM告诉我语法错误的办法,哪怕是检测每句话后面有没有分号似乎都要去找插件。

    编辑方式很好,但只是一个编辑器。

    Reply

  33. iPixelOldC

    iPixelOldC on #

    ...我只想说。。。一个东西如果是你自己专为你一个人做的,你会用的不舒服?为什么非要从众呢,IDE给出的大众化解决方案怎么可能有定制方案好2333不过呢。。。如果水平太菜的话。。。定制没大众肯定好= =不过那确实没办法。。。你菜嘛2333【个人观点,VIM会用但不常用,因为我现在主要用vscode+vim mode在windows平台下。。。我一般只在终端环境下用vim,桌面还是用其他的。。。】

    Reply

  34. 抬头看见柠檬树

    抬头看见柠檬树 on #

    为何您的这篇文章里好多链接都是404啊qwq

    Reply

  35. 陶炜

    陶炜 on #

    博主你好,冒昧问一个问题啊:我的vim光标在普通模式下不会把下面的文字显示出来,有什么办法能显示出来呢?(我希望的是下面的字反色显示)

    Reply

    1. Dante

      Dante on #

      配色方案的问题,换个配色试试。
      或者直接自己修改一下:h Cursor

      Reply

发表评论