Rails开发有哪些有用的Emacs功能

时间:2010-05-04 15:15:47

标签: ruby-on-rails ruby emacs

Emacs的功能,软件包,附加组件等可以帮助您进行日常的Ruby On Rails开发?

3 个答案:

答案 0 :(得分:7)

emacs-rails模式的早期版本和Rinari(Rails开发的两种最流行的模式)功能非常丰富,但是臃肿而且繁琐。为了保持一个小巧,干净,可靠,功能强大且可以破解的核心,Rinari将避开许多“花里胡哨”类型的功能。然而,这并不是说这些额外的好东西可能没用。

这个页面应该作为链接到一些其他工具/包的链接点,这些工具/包一般与Rinari和Rails一起使用。如果您对此列表或新Rinari功能有任何想法,请通过http://groups.google.com/group/emacs-on-rails告知我们。

使用Rails的基本主要模式

大部分内容都是从Rinari的文档中复制而来的。你可能已经猜到了我更喜欢Rinary而不是emacs-rails。看看这两个项目的活动 - emacs-rails大约一年没有任何变化,而rinary仍在开发中。

答案 1 :(得分:4)

我使用emacs-rails和一些模式来编辑css,js(espresso-mode),haml,sass,yaml和片段模式(yas-snippet)。有关emacs wiki pages on Ruby on Rails.的概述,请查看。

答案 2 :(得分:0)

我尝试了处理Rails项目的 Aptana Studio IDE(开源)。我发现我主要使用它在Rails项目的文件中导航,因为我更喜欢使用Emacs来编辑文件,所以我暂时将Aptana放在一边。 (但是在调试时它可能会派上用场,所以我不会完全解雇它。)

我最近尝试了不同的Emacs扩展来帮助开发Rails:ECB(Emacs代码浏览器),Rinari,以及我忘记的其他内容,其中没有一个我完全满意,或者无法正常工作。但是,我现在很高兴使用 projectile ,Bozhidar Batsov在上面的评论中提到了这一点。它为在项目中查找文件和在项目中进行内容添加提供了便利。它也不仅仅适用于Rails项目。

我最近发现的另一个非常有用的Emacs插件是 tabbar 扩展程序,它有点像浏览器的标签栏。我已将打开的标签中的导航绑定到我的M-leftarrow和M-rightarrow键,这使得在缓冲区之间切换比以前更方便。

继续使用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)