其实很早就想写这篇文章了,虽然晚上介绍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真的远超乎你的想象!

Vim在源代码中自动添加作者信息

此文过于久远,请参看更新文章: vim(gvim)添加作者信息插件升级版-更智能,支持更多语言 估计大家也都和我一样用过不少的编辑器,什么notepad2,emeditor,edi...

阅读全文

把VIM打造成一个真正的IDE(2)

OK,上一篇文章,我们已经配置好了一个可以正常使用的VIM,那么在我们真正来到程序员的VIM世界之前,希望你能在VIM里面再多加下面几个配置。 set go= “...

阅读全文

把VIM打造成一个真正的IDE(1)

这里所说的IDE主要是指C/C++开发,但是由于笔者之前也搞java和c#开发,所以对这两种语言也会有所兼顾。 这个话题可能要分好几篇文章来写了,今天主要讲一下最...

阅读全文

115则回应给“无所不能的vim-vim到底能做什么”

  1. dxq83说道:

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

    [回复]

    Dante 回复:

    哈哈,欢迎交流~

    [回复]

  2. fanhe说道:

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

    [回复]

    Dante 回复:

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

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

    [回复]

    fanhe 回复:

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

    [回复]

    == 回复:

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

    [回复]

    Dante 回复:

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

    [回复]

    == 回复:

    OK了,谢谢。

    [回复]

    lisfan 回复:

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

    [回复]

    == 回复:

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

    [回复]

    Dante 回复:

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

    [回复]

    kit393 回复:

    搜索挖坟出来的:

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

    [回复]

    梧桐树 回复:

    使用 dm2 可以实现 该功能

    [回复]

    依云 回复:

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

    [回复]

    梧桐 回复:

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

    [回复]

    artmath 回复:

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

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

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

    [回复]

    fanhe 回复:

    肤浅。

    [回复]

    zsneoks 回复:

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

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

    [回复]

    Dante 回复:

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

    [回复]

    Jacky Liu 回复:

    vim 是最强大的 IDE。以上。

    [回复]

  3. vimererer说道:

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

    [回复]

  4. 老戴说道:

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

    [回复]

    Dante 回复:

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

    [回复]

  5. Eric说道:

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

    [回复]

    Dante 回复:

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

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

    [回复]

    依云 回复:

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

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

    [回复]

    fanhe 回复:

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

    [回复]

    Mike Ma 回复:

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

    [回复]

    wangjl 回复:

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

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

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

    [回复]

    依云 回复:

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

    [回复]

    wangjl 回复:

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

    [回复]

    依云 回复:

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

    [回复]

    jayklx 回复:

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

    [回复]

    fanhe 回复:

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

    [回复]

    wangjl 回复:

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

    [回复]

    Dante 回复:

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

    [回复]

    fanhe 回复:

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

    [回复]

    依云 回复:

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

    [回复]

    fanhe 回复:

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

    [回复]

    依云 回复:

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

    [回复]

    雨碎江南 回复:

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

    [回复]

    zsneoks 回复:

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

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

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

    [回复]

    madper 回复:

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

    [回复]

    依云 回复:

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

    [回复]

    亚弥 回复:

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

    [回复]

    依云 回复:

    当然可以了~

    [回复]

  6. Javaer说道:

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

    [回复]

  7. Ricepig说道:

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

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

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

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

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

    [回复]

    Dante 回复:

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

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

    [回复]

    Noe 回复:

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

    [回复]

    依云 回复:

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

    [回复]

    依云 回复:

    s/想不/像碰/

    [回复]

  8. prife说道:

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

    [回复]

    Dante 回复:

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

    [回复]

    prife 回复:

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

    [回复]

    prife 回复:

    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 && 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

    [回复]

    Dante 回复:

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

    [回复]

  9. prife说道:

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

    [回复]

    Dante 回复:

    你是不是没有写这句

    [回复]

    prife 回复:

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

    [回复]

  10. showwiki说道:

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

    [回复]

    Dante 回复:

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

    [回复]

    showwiki 回复:

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

    [回复]

    showwiki 回复:

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

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

    [回复]

    showwiki 回复:

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

    [回复]

    kikyo 回复:

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

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

    [回复]

    Dante 回复:

    我映射的是,k

    [回复]

    依云 回复:

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

    [回复]

  11. lisfan说道:

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

    [回复]

    Dante 回复:

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

    [回复]

    梧桐 回复:

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

    [回复]

    lisfan 回复:

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

    [回复]

    lisfan 回复:

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

    [回复]

  12. lisfan说道:

    测试一下,不好意思哈。

    [回复]

  13. johnson说道:

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

    [回复]

    Dante 回复:

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

    [回复]

  14. jeng说道:

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

    [回复]

    Dante 回复:

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

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

    [回复]

    madper 回复:

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

    [回复]

  15. x-snail说道:

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

    [回复]

    Dante 回复:

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

    [回复]

  16. freiz说道:

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

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

    [回复]

    Dante 回复:

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

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

    [回复]

  17. mythyear说道:

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

    [回复]

    Dante 回复:

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

    [回复]

    madper 回复:

    不是一直就可以嘛?

    [回复]

  18. yulong说道:

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

    [回复]

    Dante 回复:

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

    [回复]

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

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

    博主又说

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

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

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

    [回复]

    Dante 回复:

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

    [回复]

    Dante 回复:

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

    [回复]

    madper 回复:

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

    [回复]

  20. Fermat618说道:

    这里还有个打架帖。

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

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

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

    [回复]

  21. bsky22说道:

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

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

    [回复]

    Dante 回复:

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

    [回复]

    ooops 回复:

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

    [回复]

    Dante 回复:

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

    [回复]

    ooops 回复:

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

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

    [回复]

    bsky22 回复:

    用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 > tmp
    vim tmp 交换键值58和97,然后loadkeys tmp
    rm -f tmp

    [回复]

  22. lijsf说道:

    不错的站点,学习了~~

    [回复]

  23. bing说道:

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

    [回复]

  24. taowl2003说道:

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

    [回复]

  25. link说道:

    驱动开发都是用vim

    [回复]

  26. liuhao说道:

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

    [回复]

  27. 我握我说道:

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

    [回复]

  28. abbr说道:

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

    [回复]

    朱念洋 回复:

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

    [回复]

  29. abbr说道:

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

    [回复]

  30. Ava1oN 龙龙说道:

    收藏学习了~~

    [回复]

  31. hilojack说道:

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

    [回复]

    朱念洋 回复:

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

    [回复]

  32. 黄瓜大王说道:

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

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

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

    [回复]

  33. iPixelOldC说道:

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

    [回复]

发表评论