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

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

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

而我自己是一个 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 , 有机会出国真好. 我觉得我现在就是典型的崇洋媚外! 没事儿多 给咱社区传达传达最新的咨询动态啊.

留个联系方式呗, 多多交流. 我邮箱 zw963@163.com

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

#33 楼 @zw963 恩,我油箱是 zyinghai@gmail.com

vim forever

匿名 #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

#69 楼 @siyang1982 你是傻逼吗?

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

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

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