emacs小ネタ集

この資料はEmacs Advent Calender jp:2011のために作成しました。

私は本職はシステム企画をやっておりまして、日曜プログラマです。Emacs歴は2年ほどであります。学生の頃からrubyとRあたりで統計解析をしておりました。

私自身、elispをガリガリ書くのはどうも苦手で、あちこちのノウハウをコピペして使用させていただいております。

その中で、あまり出回ってないかもしれないけど、使ってみたら意外と便利だな、というものをご紹介できればと思います。いわゆる小ネタ集になります。

Table of Contents

1 小ネタ集

1.1 M-hで後ろの単語を削除

(global-set-key "\M-h" 'backward-kill-word)

C-hでバックスペースを設定するついでに、後ろの単語を削除するキーバインドも設定してしまいましょう。なお、念のためバックスペースをC-hに割り当てるelispも載せておきます。

(global-set-key "\C-h" 'backward-delete-char)

1.2 何よりも優先してキーバインドを設定したい

私のような似非emacs使いは使いたいキーバインドが競合して使えないという時がしばしばあります。下記のように.emacsの最後に何よりも優先したいキーバインドを記入するだけで、そのキーバインドは最優先で実行されるようになります。説明はいらないと思うので、下記をコピペして使ってください。

;;====================================
;; 専用のキーバインド、他のモードよりも優先順位が高い
;;====================================
(setq my-keyjack-mode-map (make-sparse-keymap))
(mapcar (lambda (x)
          (define-key my-keyjack-mode-map (car x) (cdr x))
          (global-set-key (car x) (cdr x)))
        '(("\C-\M-h" . elscreen-previous) ;elscreen用の設定
          ("\C-\M-l" . elscreen-next) ;elscreen用の設定
          ([(C x) (up)] . windmove-up)
          ("\C-h" . backward-delete-char)
          ("\M-h" . backward-kill-word)
          ("\C-z" . undo)
          ("\M-2" . set-mark-command)
          ([(C x) (C n)] . cua-set-rectangle-mark)
          ([(C x) (down)] . windmove-down)
          ([(C x) (C x)] . set-mark-command)
          ([(C x) (right)] . windmove-right)
          ([(C x) (left)] . windmove-left)
          ([(C x) (C up)] . windmove-up)
          ([(C x) (C down)] . windmove-down)
          ([(C x) (C right)] . windmove-right)
          ([(C x) (C left)] . windmove-left)
          ([(C x) (p)] . windmove-up)
          ([(C x) (n)] . windmove-down)
          ([(C x) (f)] . windmove-right)
          ([(C x) (b)] . windmove-left)
          ))

(easy-mmode-define-minor-mode my-keyjack-mode "Grab keys"
                              t " Keyjack" my-keyjack-mode-map)

1.3 .emacsを分けて記述したい

.emacsを設定しまくっていると、非常に長くなり管理がしにくい場合がでてきます。そんな問題はsubdirs.elを使うことで解決できます。

使い方は簡単、init-loader をインストールし、下記を書きこむだけです。

(require 'init-loader)
(init-loader-load "~/.emacs.d/inits") ; 設定ファイルがあるディレクトリを指定

.emacs.d直下にinitsというディレクトリを作成し、番号_設定名(任意).elというファイルをどんどこ作ってください。

00_misc.el 10_ruby.el 10_perl.el

というように、どんどこ作りましょう。番号が若い方から先に読み込まれます。init-loaderには他の機能も搭載されているようですが、使っていないのでよくわかりません。

2 私のgithub

私がいつも使用している.emacs.d群はgithubにアップしてあります。もしよろしければこちらもご覧になって下さい。整理していないので汚いですが。

私の.emacs.d群

なおこのページはorg-modeによって作成しました。