现介绍下我的工具历程。
上大学的时候,学校的教授都是 Functional Programming 的狂人,很多课都是 Haskell 学的。外加那时候用 pvs 工具。
大学四年基本上一直用的 emacs.
那时候喜欢瞎折腾,Gentoo 什么的都是整天装了卸卸了装,外加那时候也没有这么 github 这么好用的东东,配置文件没有好的备份的地方,emacs 一直都是最简配置。那四年一直都是 emacs 自带的功能和命令行工具结合。
不过依然这样写过 C,写过 Java,写过 Haskell,写过汇编。
工作头 1 年些测试框架,受同事影响用了一年的 Vim,之后工作用 Java 就用 eclipse. 后来 Ruby/Rails 就一直用 Textmate/Sublime。
=========================
废话结束:
前两个星期,跟@zw963 讨论了半天 emacs. 小拇手指突然很痒。 于是又开始配置 emacs,经过一个一个周末,终于弄了一套开发 Rails 的环境。
操作系统:Mac OS (用其他系统的朋友可以根据喜好调整键盘位置)
Emacs: Emacs For Mac OS X 24.0.94 Pretest, 我是个喜欢尝试新东东的人,下载
本来想图省事,用 ELPA,后来发现很多 package 都比较老了,比如 rinari 还停留在 script/server 阶段,最后能找到 github 项目的 package,我基本上都用的 github 的。
plugin/mode列表:
ruby-mode, inf-ruby, ruby-compilation Ruby 相关的东东。
yari Yet Another RI 在 buffer 里面看 ri 文档了。
ido InteractivelyDoThings, 互交的做东东 我以前不是很喜欢 ido 现在 textmate mode 跟 rinari 都用 ido,用了一下还不错。
rinari Rinari is not a rails ide 提供很多 finder,可以再 rails 项目文件之间转换,提供了一个类似 textmate 的 rinari-find-file-in-project,我个人还是习惯使用 textmate.el 带的功能。 除此之外,rinari 还可以运行 rake,web server, capistrano 之类的。
另外一个 rinari 的功能我很喜欢的是 TAGS 功能。用 ctags 生成项目 ruby 文件的 tags,这样在一个方法的调用上,点 M-. 就会跳到方法定义的文件/位置。
yasnippet 外加 yasnippets-rails 就是默认 yasnippet 自带的外加 textmade rails 相关的导出的一部分。 除了 def ->基本上都有了。
autocomplete 我没有装。个人感觉不需要弹出个框框来。
textmate.el 不多解释,看下面的功能就知道为什么装上了。
;; ⌘T - Go to File ;; ⇧⌘T - Go to Symbol ;; ⌘L - Go to Line ;; ⇧⌘L - Select Line (or expand Selection to select lines) ;; ⌘/ - Comment Line (or Selection/Region) ;; ⌘] - Shift Right (currently indents region) ;; ⌘[ - Shift Left (not yet implemented) ;; ⌥⌘] - Align Assignments ;; ⌥⌘[ - Indent Line ;; ⌥↑ - Column Up ;; ⌥↓ - Column Down ;; ⌘RET - Insert Newline at Line's End ;; ⌥⌘T - Reset File Cache (for Go to File)
各种 rails 中可能用到的 mode
(require 'rvm)
(require 'sass-mode)
(require 'haml-mode)
(require 'feature-mode)
(require 'rspec-mode)
(require 'coffee-mode)
除了功能上的,字体设了 Menlo 另外中文用 Hiragino Sans GB,个人看着顺眼点。
另外,添加了几个还看的过去的 color theme, solarized 跟 tango 是我个人比较喜欢的两个。
除了上面的这些,添加了些个人喜好的设置,比如关了工具条,关了喇叭的咚咚响的,tab 设成了 2 等等。
好了,感兴趣的可以看看这里: https://github.com/hisea/emacsd
clone 了之后记得运行。
git submodule init
git submodule update
========================= 后记 用了两三个小时,小拇指稍微有点酸。。难道真的老了。。。
应邀上图:
在 emacs 和 vim 之间纠结了很久以后,综合比对快捷键和命令的方式,以及现在的流行程度,github 上的相关插件的成熟程度,再结合自己的智商与情商,还有抛硬币,掷骰子,揪花瓣,最后还是决定用了 vim..
@hisea 小拇指稍微有点酸。。难道真的老了。。。 Caps Lock -> Ctrl? 要不怎么用小拇指按 Ctrl,我都是用小拇指根部,算是手掌吧,很多人应该都这习惯,这样完全不费力的
想请问一下,redirect_to :sort => sort, :rationg => @selected_ratings and return
这句话是啥意思
用 netbeans 的飘过,傻瓜级别用的,骨灰级的还是用 emacs 不过感觉 netbeans 也很好用,自己参考 source insight 语法高亮配置了语法高亮后和 textmate 也差不多,反正就当他是编辑器用了。
之前一直在用 el-get 做 emacs 包管理,是 elpa 的超集。支持 el-get 以及 git,也可以自己写 recipes,倒是很方便,但是感觉不太稳定,可能源种类太多,部分包总是会出错,有人用这个有同样情况么?
#19 楼 @jinleileiking 恩,就我试用的情况看,目前这些还能用。
唯一有一个问题,我现在的公司项目有 2000 多个文件,textmate.el 跟 rinari 做 find-file-in-project 都有几秒钟的延迟。。
#3 楼 @hisea , 嗨~ 你好,哥们儿~ 有阵子没见你了。
听我的。想重新用 Emacs, 先把快捷键 Ctrl 和 Capslock 换过来。事实上之前很久,我都一直不换,可能想法和你类似。一时觉得不必要,而是觉得难适应。可是小指实在难受,决定换以后,我惊人的发现,只需要两天就 Ok 了。完全适应了。
干脆我单独给你贴一下换的脚本吧。省得你又得单独研究。
xmodmap -e "remove lock = 0xffe5" &>/dev/null
xmodmap -e "add control = 0xffe5" &>/dev/null
xmodmap -e "keycode 66 = 0xffe3" &>/dev/null
xmodmap -e "remove mod1 = 0xffea" &>/dev/null
xmodmap -e "add lock = 0xffea" &>/dev/null
xmodmap -e "keycode 108 = 0xffe5" &>/dev/null
这几行加入.bashrc, 左边的Capslock换为Ctrl, 左边的Ctrl不变. 右边的Alt 换成了Capslock.
说起你用的那些插件,貌似你没有提及以下插件:
auto-complete. 这个插件,是我所见过的 Emacs 插件里面,文档最全面的插件了。自动补全。没这个可不像一个 ide 啊,而且如果你不希望弹出,可以设定不弹出啊。有关其中玄机,我那个帖子你估计没看,http://ruby-china.org/topics/2046, 你看看,很明显必须两个配合,才能达到完美。现在我 ac 和 snippet 用的超级爽的说~~
dbgr 一个全功能的 ruby-debug 调试图形界面。就是为了调试方便。例如加断点什么的都有红点点。
也没见你用 flymake-ruby.
常在坛子发帖,搞个 emacs-server 插件,同时在 Chrome 应用商店中搜索 Emacs 关键字。你肯定会的。
另外,ruby-compilation 这个东西有 bug, 真不如通用的 mode-complile 舒服. textmate.el 如果你用的和我的是一个 (包含括号自动补全), 也是一大堆 bug. 我修正了好多。不过后来我又换回了 autopair.el, 然后吧 textmate.el 中单独的几个需要的功能作为函数 folk 出来了。我很怀疑咱们说的 textmate.el 不是一个。请提供下 github 链接。
最后欢迎回归 Emacs. 你的选择是正确的!
要不干脆你直接用我的配置吧。如果你有兴趣,我发一份给你。
现在最大的问题是:注释太少。虽然我强烈认为自己的所有配置符合人体工程学,甚至我认为我的配置是在一套首先建立了一套使用编辑器的哲学基础上建立起来的 (例如所有的模式的同一个键尽量选择相似的设置,不惜大幅度更改), 但是毕竟对于我来说是太个性化的东西,估计很难上手。
#17 楼 @ripple el-get 确实不稳定,特别是编译出错,只能手动删掉重新运行 我的配置就是基于 el-get: https://github.com/doitian/emacs.d 缺点是重新安装要很长时间,优点是方便升级
我很纳闷,就算是不把 Ctrl 和 CapsLock 交换,你们为什么用小拇指按 Ctrl?没有用手掌按 Ctrl 的习惯?
当然我说的是外接键盘,笔记本键盘不合适
auto-complete 自带的 doc 目录下,手册那个英文,我估计初中生都可以读懂。写的超级详细。等你读过,你会喜欢上 auto-complete.
haml-mode, 貌似我还不知道是什么玩意儿。 人和人差距,杂就这么大昵?
不妨给我这个小白讲下,用了 haml 和普通的 erb, 在较高抽象层次上的优势有那些? 我值得是 是否方便修改 或者 方便共享 或者 可读性强 之类的方面。
输入速度方面不用解释了。一看就知道。用 haml 速度快一些。不过我用 erb 现在也很快。自己弄了大把的 snippet 和 auto-complete.
趁我现在刚接触不久,想换那个成本是相当低的。rails 这个玩意儿变化太快了。不像 Ruby.
我就怕搞了半天,搞的过时的东西。白费半天劲儿
#23 楼 @hisea @jinleileiking 自动补全只是其中一大亮点 sublime 还有一个大杀器是多行选择,就是能快速选中相同关键词,改一个其他跟着变,对快速重构变量非常顺手。 演示见 http://net.tutsplus.com/tutorials/tools-and-tips/sublime-text-2-tips-and-tricks/#5 – How Did We Survive Before Multi-Selection? 这个特性在 Netbeans 这类 IDE 里见过,在其他文本编辑器(包括 textmate)中暂时没发现,其他特性 textmate 通过插件或多或少能实现就不提了。
;; Mac keyboard modifier key
;;(setq mac-command-modifier 'meta)
;;(setq mac-option-modifier 'alt)
;;(setq mac-control-modifier 'alt)
(setq ns-command-modifier 'meta)
(setq ns-function-modifier 'super)
@hisea (setq ns-command-modifier 'control)
不错,感谢兄弟提醒.
我用了 prelude 的配置,感觉不怎么配置就蛮好用,适合我这样的入门菜鸟,哈哈
汗~ 还希望你能成为一个专走回头路
的模范标兵呢,给期望使用Emacs的新人做个示范呢。
textmate.el, 那是个什么玩意儿?你说的 3-5 秒停顿,100%, 不是Emacs自身的问题。或者说绝对有其他解决方案,不过我理解你项目在眼前,暂时没时间折腾的苦衷。