Next: , Previous: , Up: Yanking   [Contents][Index]


12.2.2 過去にkillしたテキストをyankする

Yankingで説明したように、C-yに数引数を指定して、最後にkillされたものではないテキストをyankできます。これはkillリングのどのエントリーが欲しいか覚えているとき便利です。もし覚えていないときは、M-y (yank-pop)コマンドを使って、候補を探すことができます。

もし前のコマンドがyankコマンドのとき、M-yはyankされたテキストを、1つ前にkillされたテキストで置き換えます。つまり2番目に新しいkillされたテキストを復元するには、最初にC-yで最後にkillされたテキストをyankし、次にM-yでその1回前にkillされたテキストで置き換えます。M-yは、C-yまたは他のM-yの後しか使えません。

killリングのエントリーを指す(ポイントする)、“last yank”ポインターという概念で、M-yを理解できるでしょう。なにかをkillする度に、“last yank”ポインターはリングの先頭に新たに作られたエントリーを指すように移動します。C-yは、“last yank”ポインターが指すエントリーをyankします。M-yは“last yank”ポインターが違うエントリーを指すように移動して、バッファーのテキストをポインターが指すテキストに変更します。M-yコマンドを繰り返すことにより、リングの任意のエントリーにポインターを移動できるので、任意のエントリーをバッファーに取り込むことができます。やがてリングの最後に到達すると、次のM-yにより再び最初のエントリーに戻ります。

M-yはリング内で“last yank”ポインターを移動させますが、リング内のエントリーの順番は変更しません。リングのエントリーは、常に最後にkillされたものを先頭に、記憶されているもので一番古いエントリーへと並んでいます。

“last yank”ポインターを何回進めるかを、M-yに数引数で指定できます。負の引数はリングの先頭に向かってポインターを移動させます。リングの先頭では一番古いエントリーに“戻り”、そこから先頭へと移動します。

望むテキストを見つけてバッファーに取り込んだら、M-yコマンドを止めればそのテキストはそこに残ります。このテキストはkillリングのエントリーの単なるコピーなので、それを編集してもリングの中のエントリーは変更されません。新しく何かをkillしない限り、“last yank”ポインターは同じ位置に留まるので、C-yでそのテキストの別のコピーをyankできます。

C-yに数引数を指定するときも、yankするエントリーに“last yank”ポインターをセットします。