开发工具 你是 vim 党还是 emacs 党?

hungyuhei · 2012年03月05日 · 最后由 clarkhillm 回复于 2016年03月29日 · 26341 次阅读

只是好奇,无意引起任何论战

而我自己是一个 vim 党,用 sublimb text 2 作辅助工具

碧咸是我最尊敬的足球运动员之一,而 vim 是我正在学习使用的编辑器

vim 执政,ide 旁听

左手 Emacs,右手 vim

#1 楼 @pokkalee LZ 头像是国王坎通纳吧

emacs 主,vim 辅。偶尔用用 textmate

@pokkalee @lululau 看来曼联党也多,是简东拿,不是碧咸:)

Vim 党和 Emacs 党都弱爆了,我在 Emacs 里用 evil-mode(几乎完美模拟 Vim 按键)XDDDD

(举牌,这是笑话……)

日经贴。vim+1

我是 TextMate 党

还没用过 emacs,想等 vim 完全用熟练了之后试试

vim + gvim + vi

emacs 转投 vim,i 模式键位移动还保留 emacs 风格,现在用 vim 用得很爽

#4 楼 @lululau #6 楼 @HungYuHei 是的 - -很久没看足球,七号在我心中的地位啊。。。

用 vim 的意甲尤文图斯球迷飘过。。。

之前一直用 emacs,后来用 mac 之后就不用了,因为 macbook 键盘的 ctrl 键位置很怪异,要爱生活,爱小拇指。

#21 楼 @hisea 如果用 emacs,但没有替换 caps lock 和 ctrl 的键位,那我很怀疑。

@hisea , 使用 Emacs 的第一步,是 Caplock 和右边的 Alt 替换. 否则,Emacs 你应该没用多久,而且肯定也不熟。

#22 楼 @hhuai 用 linux 的时候从没换过键,习惯了左手小拇指按最左下的键,cap lock 太靠上了,不习惯。Caplocks 用 emacs 试试 C-x C-c 有点在翘兰花指的感觉。

#23 楼 @zw963 我不换键,不折腾配置。只装最简的 package. 证明我是老用户,有我六年前的博客 http://www.yinghai.org/?p=338 http://www.yinghai.org/?p=371

@hisea , 相比较而言,我是新手了 (一年而已), 哈哈。

不过,Emacs 如果不折腾,失去 Emacs 存在的意义了。你最终换其他编辑器,我想 也许是因为你折腾的少的缘故。(我承认,可能我自己折腾的有点太过了)

事实上,我认为默认的 Emacs 那些东西,真不是一般的难用。我要是你,这么多 年一直用默认的那些东西,不用说六年,六个星期我都坚持不下来。

Emacs 的精髓,天生就是一个人,一个样儿的玩意儿~~

#26 楼 @zw963 呵呵,我当初再折腾 gentoo + fvwm,用到 emacs 的时候就是急着写作业或者赶进度。。当初用是因为大二学逻辑可,有一叫 pvs 的东西是在 emac 环境里搞的,必须用 emacs,之后课程就一直用 emacs 写过 haskell, c, java,shell, 也折稍微腾过,字体什么的,比如在 emacs 中吧\ 字符换成 λ 字符,哈哈,主要是学 haskell 的时候弄的。装了不少乱七八糟的 package 到最后就只用 tabbar.el 了。

大部分快捷键我都是硬生生的习惯的,记得当初最痛苦的是 undo,需要两个手 左手 C 右手 shift + _ 不过习惯了觉得挺好的,两个手 undo 能停下一切工作,仔细看自己 undo 的纪录。

后来用 mac 就是不想再折腾了,gentoo 才是超级折腾,我当时编译系统的编译器都是本地编译的,尝试各种编译优化参数什么的,整个系统花了一个礼拜才都装好。 最简化的 emacs 其实让我对编辑器的需求很少,能复制粘贴,undo,最主要的能全局搜索,模糊打开文件名,差不多就够了。

现在我的 emacs 还在,不过主要是用 sublime text 2 了。

是的,emacs 的精髓就是你能做很多事情,喜欢做什么就看你了。

匿名 #28 2012年03月07日

#4 楼 @lululau ... 工作中 Eclipse + Vrapper 开发 Java,业余 Emacs 学习 Ruby

#27 楼 @hisea , 你是哪个学校的,那么牛。哈哈。

gentoo 刚开始使用 linux 时,想过来着,后来嫌麻烦,还是使用 Slackware 了. 虽然我没有你那么彻底,不过我刚开始装 Slack, 也是一个包一个包装的。

原因就是:之前没接触过 linux, 那时候对于 linux 有一种莫名的恐惧, 带来的副作用就是:每装一个包,我就希望看看他到底装到了那个目录下, 包含什么类型文件,不同的文件,以及不同的目录大概的用途。

折腾来折腾去,唯一的好处,就是消除了恐惧感,后来还是觉得完整安装 Slackware 效果最好。现在觉得当时挺浪费时间。哈哈。

fvwm 那个东西没用过。貌似也是一个类似于 Emacs 的玩意儿。需要折腾. 我也是因为没时间,后来用 XFCE4 觉得很好,就再没有换过。

undo, 其实,你完全可以把 C-_, 换成 C--嘛。不过我用 C-/用的多,习惯问题。

我不知道你说的所谓全局搜索是什么意思?难道你指的在 ibuffer 或 dired 模式下 搜索所有被标记文件的内容吗?

你说的 tabbar.el, 我大概能猜出来什么用途,我常用的插件好歹也有几十个, 还真没用过这个。正如你说的,主要还是没需求,所以就没考虑。

刚刚我在另一个帖子 (讨论 dired 的那个) 里发了下我的.bashrc 里面的 xmodmap 配置, 你如果还打算使用 Emacs 的话,不妨快捷键换了试试。相信我,就我之前的经历 来说,更换 capslock, 绝对是一个质的飞跃。

Vim 很牛的。我天天用,用半个月上不了手。不过,如果你像我这样,发帖也使 用自己 Emacs, 还使用自己熟悉的键位,顺便还加载个 markdown-mode, Vim 就没 那么容易了。哈哈。

#27 楼 @hisea , 刚刚我看了下你说的 sublime text 2, 优酷上的一些视频, 的确很是酷炫~~ 不过,可能用 Emacs 太投入了。觉得有些多余的功能,例如 鼠标拖拽之类的,反而没用。倒是 bundle 类似的功能,我几乎天天用,天天 改,不过 Emacs 下换了个名字叫做 Yasnippet.

我甚至上 github folk 了一个 textmate-mode, 然后自己做了一些更好的修改, 偷了很多 textmate 的精华。例如,典型的以 tab 点为坐标的 backspace. 还有 textmate 方式的换行。

我觉得除了不支持多线程,其他任何编辑器的功能都可以在 Emacs 中完美实现. 当然不是我实现,emacswiki 是巨大的宝库。

#30 楼 @zw963 我是 McMaster 大学毕业的,在加拿大。

全局搜索是类似 textmate 或者 sublime 在打开的项目里面搜索一个固定的内容或者 regex,很多 ide/编辑器都有这个功能。相同的功能在 emacs 我用的多的就是 M-x find-dired 或者 M-x grep-find,我发现我另外一个怪癖就是不爱用快捷键,喜欢 M-x 敲命令,可能我记命令比记快捷方式更快吧。

fvwm 是一个类似 gnome/kde/XFCE4 的 window manager,其特点是所有的东西都能配置。可一搞得很炫也可以搞得很丑。

其实想想,我不换 emacs 的键可能有强迫怔,不光快捷键,我很少用 alias,所有的命令都是手动打的,我同事开发 rails 搞得 rs,rc,rg,rrg 什么的,还有 git 的 gc gs,我很难接受,如果是我肯定会忘了 gs 是 git status 还是 git stash

#31 楼 @hisea ,

哈。你说的全局搜索和我想的一样,虽然我都有专门设定统一的 hotkey, 用于多 个 buffer, 或者多个 file 内容搜索,不过我很少用。那个 find-grep, 我之前 一直不知道,不过那个默认的命令格式,和我的.bashrc 内自己写的几乎一样。

其实咱们的习惯很相似,在 Emacs 中,我用快捷键多一些。不过较简单的命令, 我也习惯通过 M-x 来运行,例如:M-x yari. 上面说的全局搜索,甚至全局替换, 我几乎总是在 shell 下面完成。其实很简单,几个 linux 拼在一起而已. 例如:全局替换:

alias gsub=find-in-file-and-gsub

function find-in-file-and-gsub {
    command find -type f -print0 |command egrep -i -z -e "$1" |xargs -0 ruby -p -i.bak -e "$2"
}

然后:只需要 gsub 要查询的 re 要替换的内容,即可。

我的.bashrc 内有大把的类似别名,有些甚至很简单,例如进入某个目录,或者是 使用 Emacs 打开某个经常访问的文件,其实文件名我没有省略好多,只是有时候懒 得打路径而已。例如:alias fstab='e /etc/fstab' 直接键入 fstab, 就使用 emacsclient 打开了/etc/fstab, 一方面省劲儿,只需要把注意力关注在要打开的 文件名上,另一方面,也是备忘,写到.bashrc 里面,时不时的看一眼,就想起来 了:哦,这是一个挺重要的配置文件,在这个地方放着呢!

事实上在 linux 下使用了 Deamon 方式的 Emacs 以后,我都不怎么通过 ido 来打开文 件,大多数时候,常用的文件的文件名,我都有对应的 alias, 想打开看得时候, 直接在 shell 下输入别名就行了。我甚至还有一套自己的别名命名规则,哈哈

我之前有很严重的强迫症,现在克服的的好多了,不过完美主义是改不了了。其 实我做的大把的修改,技术方面的东西反而不多,更多的是个人体验方面,甚至 可以上升到一个`个人哲学方面', 我也描述不清楚,我觉得只有个人才能完全体 会。总之,我觉得我做的大量工作,应该是 linux 或者说开源界很欠缺的那种东西, 太自由化,缺乏标准,在这点上,microsoft 尤其是 apple 应该做的比较好。

不过,我觉得这也不完全是坏处,至少,你可以选择自己喜欢的方式. 例如 Emacs. 我觉得你的那篇帖子的标题:欲练神功,必先自费武功,用到 emacs 上面最贴切不过了。不说从其他编辑器转到 Emacs, 同样都是使用 Emacs, 也是一样。

#31 楼 @hisea , 有机会出国真好。我觉得我现在就是典型的崇洋媚外!没事儿多 给咱社区传达传达最新的咨询动态啊。

留个联系方式呗,多多交流。我邮箱 [email protected]

大爱 VIM 和各种帮助提高效率的插件,CommandT, NerdTree, rails.vim, ack.vim, nerdcommenter, zencoding 等等

匿名 #38 2012年05月29日

#33 楼 @zw963 我问你一个 emacs 的问题,关于 ecb 导航树,如果在通过 shell 创建了一个文件,那么如何刷新导航树,对应 vim 中的 shift+R

#22 楼 @hhuai #23 楼 @zw963 如果你 Caplock 和右边的 Alt 替换,那你一定不玩星际||魔兽, 或者没有一个好的键盘。

#38 楼 @sharp

貌似你问错人了。呵呵。我没用过 ecb, 你可以问问@skandhas, 他最新在修炼 Emacs 中,而且有用到你说的 ecb, 我不用 C, 所以没需求,貌似一般的插件,刷新都是 `g' 或者`G' , 你试试。 最好的办法是查看源码,这也是 Emacs 最爽的地方了,有那些快键,一看代码就清楚,而且由你改了。

不过说起导航,我是一堆快捷键混着用。有 ido, ibuffer, dired, 搭配 find-in-project 的玩意儿,反正是能最快的方式找到所需的文件或 buffer 就行,并没有什么固定常用的导航插件。如果是 Rails 开发,还多了个一个 rinari. 我也是定制了一大堆快捷键。

顺便提一句,快捷键是用手指记忆的,所以相信我,任何人能办得到。 (不要怕快捷键多)

#39 楼 @siyang1982

真没玩过。呵呵。

匿名 #42 2012年05月30日

#40 楼 @zw963 额,在 emacs 中你没法不用快捷键,否则会被坑死

(global-set-key (kbd "C-c e") 'ecb-goto-window-edit-last)
(global-set-key (kbd "C-c s") 'ecb-goto-window-sources)
(global-set-key (kbd "C-c d") 'ecb-goto-window-directories)
(global-set-key (kbd "C-c m") 'ecb-goto-window-methods)
(global-set-key (kbd "C-c h") 'ecb-goto-window-history)
(global-set-key (kbd "C-c r") 'ecb-redraw-layout)
(global-set-key (kbd "C-.") 'cscope-find-global-definition-no-prompting)
(global-set-key (kbd "C-,") 'cscope-pop-mark)

学 emacs 需要学 lisp.

#38 楼 @sharp 我一般是在 sources window 上 用 Shift + 主键

匿名 #45 2012年05月30日

又讨论 ide 啊。。。蛋疼的你们,我用 netbeans

-_-# 又被顶起来了。。。

用 Vim 的巴塞罗那球迷飘过!

很久以前把 Emacs 照这个配置了一下,挺酷的:http://v.youku.com/v_show/id_XMjYxNjM4MDQ0.html

不过视频里的高亮是后制的,emacs 弄不了这么漂亮 : P

#49 楼 @Juanito

不奇怪,这种帖子向来火爆。呵呵。

你不妨照我的配置来试试啊。

#42 楼 @sharp

那么你的问题解决了吗?

匿名 #52 2012年05月30日

#51 楼 @zw963 没,应该这么说,如果仅仅是 touch 一个文件,我可以用 tab 再次展开,可以看到该文件。如果是 rename,那么就有点杯具,搞的我现在只能 C-x C-c 重启 Emacs,很狼狈,不过有时候目录下的文件被重命名后,可以即时反应出来,有时候不行,这取决于某文件在被重命名之前是否已经被加载到 buffer 中去了,我现在考虑采用 kill buffer 的方法

#50 楼 @zw963 哈我也跟 @hisea 一样,爱护小拇指。。。最近改用 Sublime text2 了 :P

#53 楼 @Juanito 最近开始用 vim 了,自己搞了套配置,用了两三个月了

我插一句,去年 6 月用的 vim

匿名 #56 2012年05月30日

#54 楼 @hisea Vim 加载目录树快,用了三年多了,因为搞 Erlang 的缘故,逼着我跑去用 Emacs,一年有余,说真的,我更喜欢 textmate

#56 楼 @sharp 恩,用 vim 之前一直再用 sublime,喜欢 textmate 的话也可以看看 sublime, 有些功能还是不错的。

#57 楼 @hisea

I 服了 you~~

别人的想法都跟不上你换编辑器的变化。呵呵。

虽然我记得之前在咱们在那个帖子内讨论过。你说你用过很多年 Emacs(而且不换 Capslock 那种用法), 而且前阵子还 Back to Emacs. 不过我现在可以非常确定一点:Emacs 你从来没有深入进去过。你也没有了解 Emacs 的精髓。或者准确地说:Emacs 根本不适合你。相信我,我了解 Emacs. 虽然我不会用 Vim, 但我也了解 Vim, Emacs 这一类编辑器不会是你喜欢的 type, Vim 应该最适合你。

Emacs 是那种首先要一定要深入的折腾,而且要折腾很久才会出效果那种编辑器。经不起折腾或者说折腾不起来,又或者仅仅不爱折腾 (原来编辑器是什么样,就继续那样用), 这都不是 Emacs 的价值观。呵呵。在在这点上 Emacs 还有点象 Ruby. 一对兄弟啊~ 没有 Emacs, 哪里来的现在的 Ruby ?

#58 楼 @zw963 呵呵,你误解我了。

我用 rails 以来一直在用 textmate/sublime, 以前用 emacs 主要是开发 Haskell 跟 pvs,

自从两三个月之前我决定尝试别的工具开始,我就打算停止 sublime 的使用,Emacs 跟 Vim 强制使用两个星期来写 Ruby/Rails 的应用。

rails 有 rails 的 workflow, 跟我之前写 haskell 跟 pvs 是不一样的。 就像现在如果要开发 J2EE,我可能还是会用 Eclipse, 开发 iOS 我会用 XCode. Emacs 当然也可以开发 J2EE 跟 iOS,但不一定时最佳选择。

所以说,我强制自己尝试不同的东西一段时间。一是学习,二是找到适合自己而且适合手头工作的工具,我觉得程序员就像木工,木工的工具盒里永远不可能只有一个工具,能在对的时间用好对的工具才好。

可能我不了解 emacs 的精髓,也可能不了解 vim 的精髓,甚至不了解 textmate/sublime 的精髓,其实了不了解对我意义也不大,对我来说编辑器就是编辑器,了解用编辑器写的代码的精髓更重要。编辑器我只看顺不顺手,效率高不高。深入进去也是多方面的,很多 Vim 或者 Emacs 的新手可能装很多 plugin,用久了反而越用越简单,插件越来越少,我想这就是由简入深易,由深入简难吧。

尽管这样我还是都用过,而且我学新工具的时候再不适应也要坚持一两个星期,来体会。我觉得只是了解不够,了解了精髓也不够,需要一段时间的时间来实战。比如你说你了解 Vim,可是不会用,哪你怎么这么确定 Vim 不如 Emacs 适合自己呢。更怎么知道哪个适合我呢。我喜欢 Emacs 的 kill ring, 喜欢多线程,喜欢 vim 的那种文本手术的感觉,这都是我自己自身使用的体会。

毛主席说过,要知道梨子的滋味需要自己尝一尝。

#58 楼 @zw963 我换编辑器不算快了,不如暗黑 3 上角色换得快,第一天就完了 3 个人物,现在我有四个人物不同职业,最高 42,最低 19,来找最顺手的。

哈哈,

还有上班,最近设计一个 api 服务器,尝试了很多 framework 跟 gem 的组合了,sinatra 单独,sinatra + rable/grape. Rack, Rack + Rabl/Grape.

#59 楼 @hisea

没有啦,我只是觉的某些方面你能挺能折腾,不过在 Emacs 上貌似折腾的有些少了。没发扬出折腾精神来。而这一点上,我在 Emacs 上的体会是相当深刻的 (还是在几乎不懂 Lisp 的前提下,如果那天 Lisp 咱也发扬广大了,相信我,我一定会尝试用 Emacs 煮咖啡之类的事情).

Vim 我也用过的。也是用过才知道 Emacs 适合我啊。其实 Vim 我也不了解啦,不过我知道一点,VIM 就算你想折腾,首先因为 Vim 的设计哲学,按键上你不用考虑了,其他方面,相比较 Emacs, 能做的事情那就太有限了。反正你不爱折腾编辑器,所以才说 Vim 最适合你了。(我推测,所以尽量少折腾,就可以立即上手解决目前任务的编辑器,你很喜欢喽)

#60 楼 @hisea

还是那句话:I 服了 You.

我玩 暗黑那么多年 (很久了,从一代开始,后来二代断断续续一直在国内私服), 只会玩 Sor, Pal, Ama. 这三个角色我自认为玩的也算透彻了。除了以上角色,Nec 也会一点。当初光计算公式,人物资料啥的,我就赞了一大堆。其实,最初我像你一样,也是有比较的。只不过很粗略的比较下,然后就选择了自己喜欢的角色,但是一旦选定了,玩了这么多年,我都没把这三个角色的所有技能玩透,甚至有些技能都没玩过,所以其他角色基本上就没玩了。

#61 楼 @zw963 恩,很多时候还花钱折腾,选择编辑器这个上面,为了尝试 Rails 开发,还花钱买了 RubyMine。虽然最后觉得太厚重没有用,但是现在还是有 RubyMine4 的 License.

#52 楼 @sharp Shift + 主键 就没问题啊~

匿名 #64 2012年05月31日

#63 楼 @skandhas 我用的是 ubuntu,Shift + 主键 被系统绑定了,应该映射到什么操作上

#64 楼 @sharp ECB 的默认主键是 mouse-2,你可以修改。我的鼠标 mouse-2 就是那个滚轮。 不方便的话,可以把主键修改为 mouse-1.

没想到讨论这么热烈,我也来掺和一脚。

大二的时候开始接触 Vim,C++ 课程上老师推荐的,还专门去听过一个学长分享 Vim 的使用经验。重点是得到了,有点像是 vim is a wand, for better text manipulating。然而这是后来的长期使用才感受到的。那时候对 Vim 的配置很基础,现在流行的 Vundle 什么的,应该也还没出来。

大三的时候先装了 Ubuntu,直接干掉了 Windows XP,后来有改用 Debian。编辑器则 Vim、Emacs 都装了,但受一个学弟的影响(http://lifegoo.pluskid.org/wiki/Emacs.html),开始用 Emacs,配置什么的折腾了很多,EMMS 听歌,Emacs Muse 写博客,文件树我记得用的是 speedbar 什么的,tabbar.el 也用了,然而跟 @hisea 同学一样,一直没有折腾过 key swapping,小拇指按 Ctrl 也没觉得啥不爽。不过我知道 C-/ 也可以撤销 -_-b 此外除了比较常用的例如 C-x C-s,我都是双手按快捷键,这样手能够不扭曲一些,可以大方地移过去按角落里的 Ctrl。

Emacs 一直用到我 2010 年换公司,中间写过实验报告(LaTeX)、Perl 脚本、Django 网站、SQL 以及 HTML、JS 神马的,不一而足(http://2008.cyj.me/)。换公司之后,机缘巧合,要开始写 Rails 项目,试用了下 rails.el,记得找个 controller 的按键是 C-c r c <controller_name> 之类的,总之特别长,心说这货不靠谱,折腾起来也好麻烦,不如试试 Vim 的 rails 插件。它的默认方式则是 :Rcontroller,因为有 tab 补全,其实打起来比 Emacs 那货快多了。于是就换了。理由其实挺奇怪的,默认方式不够好,不想折腾,结果直接换了个编辑器。

然后 Vim 用到今年,文件树用的 NERDTree,其他还有 rails.vim、nginx.vim 以及 solarized 颜色主题等等。

今年 4 月始,又换了 Sublime Text 2,理由也简单,subl 的 Project 功能很贴心,项目内文件查找很好用。Vim 里理该也有现成的插件,可能叫做 CommandT 或者 FuzzyFind 之类的,好像是收费,就没怎么折腾。而 subl 则可试用,于是就一直试用到现在,配合它自带的 vim 模式,挺好,唯一不习惯就是没了 s///g,换成了所见即所得的查找替换,少了些 magician 的感觉,但确实提高了准确性。

我的 dotemacs 与 vimrc:

emacs 越陷越深了,根本无暇顾及 vim, 看不到将来会用 vim 的肯能性,,, gui 下一般用 eclipse, 关掉 xwindows ,开启 fbterm, 命令行下就是 emacs 的天下了,完全中文命令行操作。整一个纯文本操作界面,shell, w3m, org, erc, 你懂的.. emacs 虽然学着蛋疼,但是绝对是神器..

匿名 #68 2012年06月20日

emacs 太高端了。。我这种水平 vim 就够了。。

vim 太难了……不会用…++vim

#71 楼 @michael 你是 2B 是肯定的。忽然发现没举报按钮

neovim,vim,macvim 主要用来编写 python 以及 javascript,如果写 java,我觉得还是 intellij 比较好,不过需要安装一个 vim 插件。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号