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-yC-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ポインターをセットします。