_E2D9827.jpg

Emacsを使い始めて最初に覚えることのひとつにkillとyankがあります。

killが、いわゆる切り取り。yankが貼り付け。かなり高機能な仕組みなんですが、単純な機能の組み合わせで結構つかえるので、まだまだ知らないことが多そうです。今回はいろいろ便利そうな機能を紹介します。

意外と覚えていないショートカット。

EmacsのInfoを見ただけでもこんなにあります。C-k,M-w,C-wぐらいしか使っていないかも。

-‘C-k’カーソルの位置から末尾までkill

  • 'M-w’選択範囲をコピー

-‘C-S-backspace’ 一行まるまるkill -‘C-w’選択範囲をkill -‘M-d’次の単語をkill -‘M-<DEL>’前の単語をkill -‘C-x <DEL>’カーソル位置からセンテンスの先頭までをkill -‘M-k’カーソル位置からセンテンスの末尾までをkill -‘C-M-k’括弧の中にカーソルがある場合に中身だけkill -‘M-z CHAR’指定した文字までkill

kill-ringは'M-y'が命

切り取った内容は、kill-ringという変数に履歴として保存されていきます。

'C-y' で普通に貼り付けです。

もし過去に切り取った内容を貼り付けたい場合は、'C-y'に続けて'M-y'を押す毎にひとつ前の内容が貼り付けられます。

これをうまく利用すれば、あるテキストから別のテキストに3箇所コピペしたい場合、交互に1件ごとコピー&ペーストしなくても、一度に3回コピーして、3回ペーストすればいいのです。

こんなのは当然??僕は'M-y'を普段使っているくせに、こういうケースでは普通に1件ごとにコピぺしてしていたのでした。

kill-ringの中身を保存する

通常、kill-ringはEmacsを再起動すると消えてしまいます。

標準のdesktopパッケージを使うと、現在のkill-ringの内容を保存して、起動時に復元されます。 (ただしfaceなどの情報は消えるようですが。)

カスタマイズ変数 desktop-save-mode を ONにして、 カスタマイズ変数 desktop-globals-to-savekill-ring を追加します。

Emacs終了時に、保存先のディレクトリを聞かれるので指定すればOKです。

kill-ringの中身を確認する。

普通に変数 kill-ring のevalすればいいだけなのですが、textプロパティの情報が含まれた生のデータなので若干見にくい。

そういう場合は、 browse-kill-ring というパッケージをkill-ringの閲覧や再利用が楽になります。

インストールは M-x package-installbrowse-kill-ring を指定すればOK。

ダウンロード先が MELPA になるので、詳しくは Emacsのパッケージ管理を使う を参考にしてください。

kill-ringの履歴の数

標準ではkill-ringに最新の60個まで保存されていますが、カスタマイズ変数 kill-ring-max で変更できます。

OSのクリップボードもkill-ringへ保存する

GUI版のEmacsを使っている場合、 Emacsでkillした内容は、通常、OS側のクリップボードにも反映されるはずです。これはこれで便利な挙動なんですが、OS側のクリップボードを誤って上書きしてしまうこともあります。

これを防ぐには、カスタマイズ変数 save-interprogram-paste-before-kill を ON にしておくと、Emacsでkillをする際に、クリップボードのテキストがkill-ringに保存されるようになります。クリップボードの内容がテキストでない場合は、結局消えてしまうようですが、まあ保険代わりにどうでしょう。