Help us understand the problem. What is going on with this article?

Emacsを使いこなすために

More than 5 years have passed since last update.

Emacsを使いこなすための tipsを示します。
人それぞれのものがあると思いますので 1つの意見として
受け取っていただければいいかなと思います。

1つの Emacsは終了しないようにしよう

使いこなすためにはやはり長く触っていなくてはいけないと思います. そのためにもなるべく
終了しないようにしましょう. 特にカスタマイズをしだして, いろいろ拡張をインストール
しだすとどうしても起動が遅くなります. それを何回を起動するとなると毎回毎回いらいら
しますし, それを避けるために貴重な機能を削除するなんて発想になってしまうことは
大変もったいないことです.

終了しないためのノウハウを示します.

終了コマンドを無効化しよう

何で Emacsを閉じてしまうかというと, 終了コマンドが押しやすいバインドだからです.
C-x C-cは保存のコマンドなんかに近いですし, うっかり押してしまう度合いが高すぎ
ます. なんでそんなキーバインドには違うコマンドを割り振ってしまいましょう.

;; 好きなコマンドを割り振ろう
(global-set-key (kbd "C-x C-c") 'helm-M-x) ;; 私は helm-M-xにしています

;; C-x C-z(suspend)も変更するのもありでしょう.
(global-set-key (kbd "C-x C-z") 'your-favorite-command)

でもさすがに終了できないというのも困ります. M-x save-buffers-kill-emacsとすれば
いいんですが, コマンドが長ったらしいので aliasをつけておきましょう.

;; I never use C-x C-c
(defalias 'exit 'save-buffers-kill-emacs)

これで M-x exitで終了できます. C-x C-xと比べるとだいぶ面倒になったので,
終了する回数が減ることでしょう.

emacsclientの活用

1つ Mainとなる Emacsを使おうと言っても, すべてMain Emacsからファイルを開いたり
するのは面倒です. emacsclientを使えば、シェルで操作しているときこのファイルを
mainの Emacsで開くということが簡単にできます。また Main Emacsの設定を引き継ぐ
別 Emacsも起動することができます。

サーバ側の設定

serverの設定

(require 'server)

(unless (server-running-p) ;; 複数サーバ起動を防ぐ
  (server-start))

環境変数 EDITORを emacsclientにする

(Windowsでは違うと思いますが), いろいろな場面でエディタが起動し,
編集を迫られることがあります. Unix系の環境では, だいたいの場合,
環境変数 EDITORに設定されたものが最終的に使われます(GIT用とか
Subversion用とか特化したものを指定していなければ).

export EDITOR="emacsclient"

これで gitのコミットログを書く等で使われるエディタが emacsclientに
なります. ようはそれらがサーバを起動する Mainの Emacsで編集できるように
なるということです.

emacsclientに aliasをつけよう

emacsclientなんて打つのが面倒なので, もう 'e'にしちゃいましょう

alias e='emacsclient'

これでとりあえず Emacsで開きたいときは

 % e ファイル名    # 編集終了を待つ場合
 % e -n ファイル名 # 編集終了を待たない

でいけるようになります.

Mainの Emacsで開くだけでなく, 新規にウインドウ(GUI, 非GUI両方)を開いて使うことも
できます. このとき設定等の情報は Mainの Emacsのものを利用するので起動にはほとんど
時間がかかりません. 個人的にあまり使いませんが, 覚えておいて損はないでしょう.

 % emacsclient -nw ファイル名 # 現在の端末でファイルを開く
 % emacsclient -c  ファイル名 # 新たにフレームを作ってファイルを開く

'C-M-'のキーに慣れよう

'C-M-'というキーバインドは主に S式の移動・操作に割当たっています. Lisp系の言語を
書いている人であれば, よく利用することでしょう. しかしこれらは Lisp専用のキーバインドでは
ありません. C-M-a, C-M-eは大抵の言語で関数単位の移動に使えますし, C-M-f, C-M-bを
使えばアンダースコアで連結された変数でも一度で移動することができます.
C-M-kはアンダースコアつなぎの変数も消せますし, Lisp系以外の言語でも役立つこと
間違いなしです.

あと C-M-バインドは GUI Emacsでなくても使えるキーバインドです. GUI版であれば,
ファンクションキーや Controlキーと特殊なキーの組み合わせが使えますが,
非 GUI環境ではそれらは基本的に使えません. ただでさえキーバインドが少ない
Emacsなので, バインド候補を増やすためにも使い慣れておくとよいでしょう.

良いプログラマになることを心がける

個人的に心がけていることです. 三流へぼプログラマである私が言ってもあまり説得力は
ありませんが・・・.

良いプログラマというものは良い道具にこだわり, 良い道具を使っていると思いますが,
良い道具を使ったからって良いプログラマってわけではありません. 結局道具だと
思いますので, そこにだけこだわってしまってはいけないと思います.

他人が絶賛する拡張をインストールしまくるよりは, 自分でたくさんコードを書いて
「これは改善すべきだ」っていう機会をたくさん増やしてそれに応じて, カスタマイズ
していった方が確実に良い Emacsができあがると思います. なんであんまりエディタを
カスタマイズすることに熱を上げず, 良いプログラマになることをまず考えてください.

Enjoy Emacs Life!!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away