Mac OS XネイティブのアプリケーションはCocoaと呼ばれるのですが、こうしたCocoaアプリケーションではEmacsのキーバインドが使えるということは、これまでにも何度もいってきました。私はOS X環境下ではできるだけCocoaアプリケーションを使おうと思っていまして、例えばそれはSafariであったりMailであったり、Apple製以外のアプリケーションであればBathyScapheとかこないだ導入したCotEditorとかをあげることができます。
私がなるたけCocoaアプリケーションを使おうというのには理由があって、それは操作感やルック&フィールの統一をはかりたいからというのに終始すると思います。Cocoaアプリケーションなら多言語環境への対応もできているだろうし、OSの提供するスペルチェック機能なんかも使える。そしてキーバインド。私は、Cocoaプリのキーバインドに慣れるためにMeadowを使いだしたのですが、あの理解しづらいと思われたキーバインドも、慣れるとかなり快適なのです。私が今使用している非Cocoaアプリケーション(Carbon)ではDreamweaver MXやmi、iCabが中心的位置を担っていますが、こうしたCarbonアプリを使っているときでも、指はEmacsのキーバインドを求めがちなのです(miではキーバインドをEmacs風にしているから、問題なしさ)。
さて、今回のテーマであるyank。Yankというのはなにかというと、MacintoshやWindowsでいうところのPasteであると考えるのがわかりやすいのではないかと思います。Emacsではバッファに格納したテキストを、yankによって貼り付けることができます。
Emacsのyankはよくできていて、過去にバッファに格納されたテキストをさかのぼって引っ張ってくることができます。複数のクリップボードに対応しているというとわかりやすいのではないかと思います。C-yでyankをおこない、その後M-yで過去のバッファに切り替えるのですが、残念ながらこの機能はいかなCocoaアプリといえど使用できません。
ですが、うまくすればCocoaアプリでも複数のクリップボードを持つことができるのです。厳密にいえば、クリップボードはひとつ、そしてkillしたテキストもひとつ、この両方をあわせてふたつ=複数。いったいこれはどういうことなのでしょうか。
一般に広く使われているCopy & Pasteとyankに使われるバッファが違っていることが重要です。Command-CないしCommand-Xでクリップボードに格納されたテキストはCommand-Vでペーストできますが、これらの動作はyankにはなんらの影響も及ぼさないのです。
yankしたいテキストと、pasteしたいテキストを、それぞれ格納しておいて、必要に応じて使い分ければよいというわけです。ちなみに、Cocoaアプリでkillバッファにテキストを格納するには、killをするしかありません。KillというのはC-k(Control-k)で、カーソル位置から行末までが一気に格納されます。それをC-yで利用できます。
KillはCopy & Paste代わりに使うにはちょっと癖がありますし、それに一行を一度に消せるkill本来の機能も便利ですから多用するしで、なかなかKill & YankをCopy & Pasteの代用にするのは難しいと思います。ですが、せっかくある機能で、それぞれに違いもあるわけですから、使わない手はありません。実際私はkillしてそれをyankするというのは多用していて、行を移動させるときには、Copy & Pasteよりも、Drag & Dropよりもはるかに便利です(複数行をkillしてyankするのも可能です)。
< 不親切になったダイアログ Mail.appの戻す機能について >