2009年12月19日土曜日

Emacsと別アプリとの切り貼り連携をホームポジションで

これはEmacsAdventCalendar 2009の12月19日分として公開したものです。
12月18日分はtomoyaさんによるこちら、20日分はkitokitokiさんによるこちらです。
また19日分のおまけネタとしてこちらも作りました。

Emacsは昔からあるアプリケーションなので、ウィンドウという言葉が通常のアプリケーションと違う意味で遣われていたり、基本編集のキー配置が他のアプリケーションと違っていたりします。そしてコピーしたり切り取ったりした文字列は原則としてEmacsの中だけで使われていて、他のアプリケーションと共有することはできません(あ、Unix, Linux on X Window Systemでの話です。他のOSだと?)。
いや、それはあまりにも使いにくいのでメニューのEdit → Copy|Paste(そしてそのショートカットのファンクションキー的なもの)を使えば、他のアプリケーションとの連動ができます。






しかしこれでもまだ使いにくい! Emacs野郎はFunctionキーなんか使いませんよ。マウスでクリックして、その場にコンテキストメニューが出てくるならともかく、メニューバーまでポインタを動かしてメニューを出してCopyを選ぶなんてまどろっこしい。
ということでもっと使いやすいキーにバインドしてしまいましょう(C-wやC-yを置き換えるのはやめておきます)
でも覚えやすいキーなんて残っているのかしらん?

それがあるのです。なぜか Control-Shift-w, Control-Shift-y が未束縛です(※ 少なくともDebianでは)。そこで:

(define-key global-map (kbd "C-S-w") 'clipboard-kill-ring-save)
(define-key global-map (kbd "C-S-y") 'x-clipboard-yank)

と定義すれば、C-wやC-yはこれまで通りで、シフトを押しながらC-w, C-yならデスクトップ環境のクリップボードへの貼り付け・コピーができるようになります。-nw 付きで起動した場合は使えないという制約はありますが、ちょいと便利です。



※ この記事は以下のWaveでも読み書きできます。
https://wave.google.com/wave/?#restored:wave:googlewave.com!w%252BSauQrHe4A

0 件のコメント:

コメントを投稿