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にアップしてあります。もしよろしければこちらもご覧になって下さい。整理していないので汚いですが。
なおこのページはorg-modeによって作成しました。