日別アーカイブ: 2013年11月9日

Macには2つの「クリップボード」がある

おがた (@xtetsuji) です。

「Mac OS X には2つのクリップボードがあります」と言われても、何のことか分からない人が多いかもしれません。

Macでの「クリップボード」の正式名称は「ペーストボード」ですが、ここでは「クリップボード」と呼ぶことにします。

通常は

  • Cmd-x で選択範囲をカット
  • Cmd-c で選択範囲をコピー
  • Cmd-v でペースト

なのは良く知られていることだと思います。Windowsでも似たようなキーバインドですよね。Cmd-x や Cmd-c で選択範囲をクリップボードに入れることができます。

新しい(Cocoaフレームワーク)で開発されたソフトウェアだと、Emacs的なキーバインドが使えます、具体的には

  • Ctrl-nでカーソル下移動
  • Ctrl-pでカーソル上移動
  • Ctrl-fでカーソル右移動
  • Ctrl-bでカーソル左移動
  • Ctrl-aでカーソルを行頭に移動
  • Ctrl-eでカーソルを行末に移動

などです。実際にテキスト入力欄でやってみるといいかもしれません。例えばChromeのtextareaであったり、Evernoteであったり。

この「Emacs的キーバインド」には、以下のようなEmacsにあるようなキーバインドもあります。

  • Ctrl-k で、カーソルがある場所から行末までを消す (キル)
  • Ctrl-y で、上記で直前にキルした文字列をカーソル以降に貼り付ける (ヤンク)

キルされた文字列は、ヤンクされるために一時的な記憶領域に格納されるわけですが、それはクリップボードの領域ではありません。なのでクリップボードにコピーしたデータとは排他です。またそれだけでなく、キルした文字列はそれぞれのテキスト入力エリアで別々の管理がなされます。つまり、Chromeのテキストエリアで Ctrl-k してキルしたデータを Evernote で Ctrl-y してヤンクすることはできないということです。ここはクリップボードとは違う挙動ですね。

キルの動作は癖がありますが、ヤンクを想定しなくても、カーソルから行末を消したいためだけにキルが使えると覚えておくだけでも便利でしょう。

実際に説明すると難しいですが、Evernoteなどの適当なCocoa時代の新しめのテキストエディタなどで上述の Ctrl- のキーバインドを実際に試してみるとよくわかると思います。MacではWindowsと違いCmdを使ったキーバインドが多いですが、Ctrlを使った上記のような操作を覚えておくと便利です。

キルやヤンクといった動作がアプリケーション内でMacのクリップボードと連携しているCocoa EmacsやCarbon Emacsというアプリケーションではまた別の動作となります。また、Macの「ペーストボード」のコマンドラインからの利用(pbpaste/pbcopy)や、Perlモジュールからの利用などのプログラマブルな利用については、また別のブログ記事で書きたいと思います。