Article:
Mẹo vặt Emacs
690
ngocdaothanh.myopenid.com 174Updated 7 months ago |
Emacs là text editor ra đời năm 1976, đến nay đã 35 tuổi, có thể coi là text editor cao tuổi nhất (rất có thể cao hơn tuổi của bạn!) còn được sử dụng rộng rãi trong giới lập trình viên trình độ cao hiện nay. Emacs khó dùng, mục đích của bài viết này là tổng kết một số mẹo vặt nhằm làm nó dễ sử dụng như... Textmate (có clone mã nguồn mở là Redcar, rất ngon vì xài ké được cả đống bundle của Textmate luôn!) và Eclipse.
Có thể đưa ra 2 lí do để có động lực tập dùng Emacs:
- Emacs có rất nhiều plugin và workflow để tối ưu hiệu suất làm việc. Với bề dày lịch sử, nếu cấu hình đầy đủ thì về mặt tính năng sẽ hơn Textmate và Eclipse, nếu dùng quen tay thì hiệu suất làm việc đương nhiên cũng hơn.
- Free (hơn Textmate, giá $60) và chạy nhanh chiếm ít bộ nhớ (hơn Eclipse). Nếu dùng Eclipse thì phải vác cái MacBook Pro 15" 8 CPU 8 GB RAM nặng gần bằng cặp học sinh tiểu học. Nếu dùng Emacs thì chỉ cần đút túi cái MacBook Air 11" nặng chỉ cỡ cái iPad.
Bài này không hướng dẫn dùng Emacs từ lúc chưa biết gì. Nếu chưa biết gì, hãy học sơ qua cách dùng Emacs ở đâu đó, rồi quay lại đọc tiếp bài này.
.emacs và .emacs.d
.emacs là tập tin, .emacs.d là thư mục, nằm ở thư mục home (~).
Khi khởi động, Emacs sẽ tự động load .emacs. Do đó để customize lại Emacs cho dễ dùng hơn, ta sẽ ghi thêm vào tập tin này. Sau khi thêm xong, cần khởi động lại Emacs.
Emacs có rất nhiều plugin. Plugin đặt ở thư mục nào cũng được, nhưng thường người ta có thói quen đặt vào ~/.emacs.d.
Aquamacs

Có thể chia Emacs làm 2 loại: loại chạy trong chế độ văn bản và loại chạy trong chế độ đồ họa (có con chuột, menu v.v.). Chế độ đồ hoạ đương nhiên dễ sử dụng hơn.
Nếu dùng Mac OS, nên dùng Aquamacs (Rich Hickey dùng cái này) hoặc Emacs for Mac OS X. Linux, Windows cũng có Emacs chạy trong chế độ đồ hoạ tương tự.
Khi dùng Aquamacs, bạn muốn từ console có thể gõ lệnh aquamacs <tên tập tin> để mở tập tin. Từ menu của Aquamacs, vào Tools -> Install Command Line Tools.
Trong Aquamacs, tương ứng với .emacs là tập tin ~/Library/Preferences/Aquamacs Emacs/Preferences.el và tương ứng với .emacs.d là thư mục ~/Library/Application Support/Aquamacs Emacs. Khi Aquamacs khởi động nó cũng load ~/.emacs.
Tab bar
Aquamacs mở mỗi buffer trên một tab giống như các browser phổ biến hiện nay. Nếu không dùng Aquamacs mà vẫn muốn có cái tab bar này, cần cài thêm plugin.
Download về, lưu trong thư mục ~/emacs.d/tabbar:
cd ~/.emacs.d
git clone https://github.com/dholm/tabbar.git
Thêm vào tập tin .emacs:
(add-to-list 'load-path "~/.emacs.d/tabbar")
(require 'tabbar)
Tất cả plugin nói chung đều có chung cách cài như trên.
Hiển thị số dòng
Nếu dùng Aquamacs thì chỉ cần vào menu Options -> View -> Line Numbers.
Nếu không, thêm dòng sau vào .emacs:
(global-linum-mode 1)

Hiển thị dòng kẻ ở cột 80
Khi viết chương trình thì để dễ đọc mã nguồn mỗi dòng không nên quá 80 kí tự. Hãy dùng plugin Fill-Column-Indicator.

Download:
cd ~/.emacs.d
git clone https://github.com/alpaker/Fill-Column-Indicator.git
Thêm vào .emacs:
(add-to-list 'load-path "~/.emacs.d/Fill-Column-Indicator")
(require 'fill-column-indicator)
Sau khi khởi động lại Emacs, mỗi lần muốn hiện dòng kẻ thì ấn M-x fci-mode. Để lúc nào cũng hiện mà không cần ấn gì cả, thêm tiếp:
(define-globalized-minor-mode global-fci-mode fci-mode
(lambda () (fci-mode t)))
(global-fci-mode t)
Xoá khoảng trắng khi lưu
Eclipse có plugin AnyEdit làm chuyện này. Emacs thì chỉ cần thêm dòng sau vào .emacs:
(add-hook 'before-save-hook 'delete-trailing-whitespace)
Tab và shift-tab
Thường khi muốn indent hoặc unindent một khối văn bản, ta đánh dấu khối văn bản đó rồi gõ tab hoặc shift-tab. Có vài cách điều chỉnh Emacs để làm điều này. Tuy nhiên trên Mac OS cách dễ nhất là hãy cài plugin textmate.el. Sau khi cài, gõ ⌘-] để indent hoặc ⌘-[ để unindent.
Tự động indent
Khi ấn enter xuống dòng, thường ta muốn dòng mới tự động được indent giống dòng ở trên. Muốn vậy phải ấn C-j. Nếu thích ấn enter cho nhanh thì phải thêm dòng sau vào .emacs:
(define-key global-map (kbd "RET") 'newline-and-indent)
Dùng khoảng trắng thay cho tab
Muốn thay 1 tab bằng 4 khoảng trắng, thêm dòng sau vào .emacs:
(setq-default tab-width 4 indent-tabs-mode nil)
Gõ kí tự \ trên bàn phím tiếng Nhật
Bàn phím tiếng Nhật không có phím \. Để gõ kí tự này, sẽ gõ alt-¥. Nhưng alt lại là phím M của Emacs. Do đó cần phải thêm dòng sau vào .emacs:
(global-set-key (quote [134217893]) "\\")
ECB
![]()
Textmate và Eclipse có chỗ liệt kê thư mục và tập tin rất trực quan. Emacs cũng có plugin cung cấp tính năng tương tự, gọi là ECB.
ECB cần dùng CEDET, cách cài cả 2 từ mã nguồn:
cd ~/.emacs.d
cvs -z3 -d:pserver:anonymous@cedet.cvs.sourceforge.net:/cvsroot/cedet co -P cedet
cd cedet
make EMACS=emacs
cd ..
cvs -z3 -d:pserver:anonymous@ecb.cvs.sourceforge.net:/cvsroot/ecb co -P ecb
cd ecb
make EMACS=emacs CEDET=../cedet
Có cái EMACS=emacs là vì khi biên dịch, CEDET và ECB cần dùng chương trình Emacs để xử lí gì đó. Nếu dùng Aquamacs thì có thể thay nó bằng EMACS=aquamacs (lệnh aquamacs có là do mẹo ở phía trên). Không thay cũng được thì Mac OS cài sẵn Emacs theo chế độ văn bản (chính là lệnh emacs ta truyền vào).
Sau đó thêm vào .emacs:
(add-to-list 'load-path "~/.emacs.d/ecb")
(require 'ecb)
Khởi động lại Emacs, menu Tools sẽ có thêm mục Start Code Browser (ECB).
Cấu hình mặc định của ECB hơi bất tiện, nên thêm vào .emacs như sau:
(defvar start-dir (quote "~"))
(defvar start-dir-name (car (last (split-string start-dir "/"))))
(custom-set-variables
'(ecb-source-path (list (list start-dir start-dir-name)))
'(ecb-tip-of-the-day nil)
'(ecb-layout-name "left13")
'(ecb-primary-secondary-mouse-buttons (quote mouse-1--C-mouse-1)))
ECB cho phép click chuột phải để hiện menu cho phép thêm xoá tập tin v.v. Nhưng mặc định Aquamacs chặn sự kiện này để hiện menu của nó. Cần thêm dòng này:
(define-key osx-key-mode-map [down-mouse-3] nil)
Marmalade
Đến lúc này, ta toàn tự download plugin về rồi tự cài. Có cách khác là cài từ chương trình quản lí package (về ý tưởng, cũng giống như dùng yum trên CentOS và apt-get trên Ubuntu). Package archive nổi tiếng nhất là Marmalade. Nếu muốn thì ta cũng có thể tự tạo archive.
Để dùng archive Marmalade, trước hết download package.el về, lưu vào ~/.emacs.d rồi sửa .emacs:
(add-to-list 'load-path "~/.emacs.d")
(require 'package)
(add-to-list
'package-archives
'("marmalade" . "http://marmalade-repo.org/packages/"))
Emacs phiên bản 24 trở lên đã kèm sẵn package.el, nên không cần tự cài như trên. Chỉ cần dòng cấu hình Marmalade là đủ.
Khởi động lại Emacs, ấn M-x package-list để hiện ra danh sách liệt kê các package (mất hơn chục giây mới hiện ra danh sách). Tìm package muốn cài, ấn i để đánh dấu sẽ cài, rồi ấn x để thực sự cài. Cách khác là ấn M-x package-install rồi nhập trực tiếp tên package.
Sau khi cài, tùy package mà phải thêm vào .emacs cấu hình cần thiết.
Build từ mã nguồn
Nhiều người thích tự build từ mã nguồn vì cũng dễ. Nếu dùng Mac OS X Lion thì phải dùng branch emacs-23 từ git nếu không sẽ bị lỗi:
git clone git://git.savannah.gnu.org/emacs.git --depth 1
cd emacs
git branch -t origin/emacs-23
./configure --with-ns
make bootstrap
make install
Thư mục nextstep sẽ được tạo, trong đó chứa Emacs.app. make bootstrap sẽ tạo ra chương trình emacs trong thư mục src, rồi dùng nó để biên dịch các tập tin .el trong thư mục lisp thành .elc. Chú ý make install là để copy resource như hình ảnh, ngôn ngữ v.v. vào Emacs.app, chứ không copy vào thư mục hệ thống như thường thấy.
Nếu muốn có tính năng toàn màn hình của Lion, hãy dùng bản Emacs đã được Murase Daisuke chỉnh sửa, branch emacs-23-lion-fullscreen.
174


