2010-05-04 25 views
11

Emacs的特性,包,附加组件等可以帮助您进行日常的Ruby On Rails开发?有什么用于Rails开发的Emacs特性

+1

Ctrl-X,Ctrl-C? – Oded 2010-05-04 15:17:29

+2

逗号太多了。这是Cx Cc的正确名称 – 2010-05-05 13:46:05

回答

7

以前版本的emacs-rails模式和Rinari(这两种最流行的Rails开发模式)功能非常丰富,但是臃肿和麻烦。为了保持一个小巧,干净,可靠,功能强大且易破解的内核,Rinari将避开大部分“花里胡哨”的功能。但这并不是说这些额外的好东西可能没有用处。

此页面应该作为链接到一些其他工具/软件包的链接,这些工具/软件包一般适用于Rinari和Rails。如果您对此列表中的新增内容有任何建议,或对于新的Rinari功能有任何建议,请通过http://groups.google.com/group/emacs-on-rails与我们联系。

基本方式主要为使用Rails

大部分这些东西是从Rinari的文档复制的。正如您可能已经猜到的,我更喜欢Rinary over emacs-rails。看看这两个项目的活动 - emacs-rails大约一年没有任何变化,而rinary仍在开发中。

+0

根据其描述,Rinari听起来就像我在寻找的,但当前版本托管在Github上已损坏,正如我在[此评论]中指出的那样, (http://stackoverflow.com/questions/2713096/emacs-rails-vs-rinari#comment17458856_2736256)。 – 2012-10-15 08:54:31

+0

我个人使用[Emacs Prelude](http://github.com/bbatsov/prelude)进行Rails开发。捆绑的'projectile'扩展为我提供了我需要的项目导航功能,而我并不真正关心Rinari的其他功能。 – 2012-10-15 09:52:13

+0

我加了一个关于'射弹'的答案。顺便说一句,你太谦虚了,不提这是你的工作。 :) – 2012-10-16 09:44:47

0

我试过Aptana Studio IDE(开源),它处理Rails项目。我发现我主要用它来浏览Rails项目的文件,因为我更喜欢用Emacs来编辑文件,所以我暂时把Aptana放在一旁。 (但它在调试后可能会派上用场,所以我并没有完全放弃它。)

我最近尝试了不同的Emacs扩展来帮助Rails开发:ECB(Emacs代码浏览器),Rinari和我遗忘的其他东西,其中没有一个我完全满意,或者无法工作。然而,我现在很开心地使用projectile,这是Bozhidar Batsov在上面评论中提到的。它增加了在项目中查找文件以及在其中查找文件的便利。它也不是只针对Rails项目。

我最近发现的另一个非常有用的Emacs插件是tabbar扩展,它有点像浏览器的标签栏。我将打开的选项卡中的导航与我的M左键和M右键关联,这使得缓冲区之间的切换比以前更加方便。

与Emcas继续,有bubble-buffer(下面的代码),与我可以只按一个键(F5在我的情况),以缓冲区内容切换到最近访问过的文件 - 虽然tabbar使这是一个有点画蛇添足。我还包括用C-DEL立即杀死一个缓冲区的代码,再加上一些很好的小函数,可以在保持点不变的情况下上下滚动缓冲区,只要它不会离开屏幕;此处的代码将它们绑定到数字小键盘的*/。 (这些都不是我自己的工作。)

;; Use F5 to switch between buffers. Use C-DEL to remove the current buffer 
;; from the stack and retrieve the next buffer. The most-frequented buffers are 
;; always on the top of the stack. (Copied, with changes and a bugfix, from 
;; http://geosoft.no/development/emacs.html.) 
(defvar LIMIT 1) 
(defvar time 0) 
(defvar mylist nil) 
(defun time-now() 
    (car (cdr (current-time)))) 
(defun bubble-buffer() 
    (interactive) 
    (if (or (> (- (time-now) time) LIMIT) (null mylist)) 
     (progn (setq mylist (copy-alist (buffer-list))) 
      (delq (get-buffer " *Minibuf-0*") mylist) 
      (delq (get-buffer " *Minibuf-1*") mylist))) 
    (bury-buffer (car mylist)) 
    (setq mylist (cdr mylist)) 
    (setq newtop (car mylist)) 
    (switch-to-buffer (car mylist)) 
    (setq rest (cdr (copy-alist mylist))) 
    (while rest 
    (bury-buffer (car rest)) 
    (setq rest (cdr rest))) 
    (setq time (time-now))) 
(global-set-key [f5] 'bubble-buffer) 
(defun kill-buffer-without-questions() 
    ;; Kill default buffer without the extra emacs questions 
    (interactive) 
    (kill-buffer (buffer-name))) 
(global-set-key [C-delete] 'kill-buffer-without-questions) 

;; Scroll up and down without moving the cursor by pressing the numeric keypad's 
;; "/" and "*" keys. 
(defun scroll-down-keep-cursor() 
    ;; Scroll the text one line down while keeping the cursor 
    (interactive) 
    (scroll-down 1)) 
(defun scroll-up-keep-cursor() 
    ;; Scroll the text one line up while keeping the cursor 
    (interactive) 
    (scroll-up 1)) 
(global-set-key [kp-divide] 'scroll-down-keep-cursor) 
(global-set-key [kp-multiply] 'scroll-up-keep-cursor) 
相关问题