Previous: Appending Kills, Up: Yanking


7.8.3 以前にキルしたテキストのヤンク

直前にキルしたものではないテキストを取り出すには、 M-yコマンド(yank-pop)を使います。 M-yは、直前にヤンクしたテキストを それ以前にキルしたテキストで置き換えます。 たとえば、最後から2つめのキルテキストを取り出すには、 まずC-yで最後にキルしたテキストをヤンクしてから、 M-yで1つまえのものに置き換えます。 M-yC-yや他のM-yの直後でしか使えません。

キルリング内の項目を指す『最終ヤンク』ポインタを考えると、 M-yの動作を理解しやすいでしょう。 キルするたびに、『最終ヤンク』ポインタは、 リングの先頭に新たに作られた項目を指します。 C-yは、『最終ヤンク』ポインタが指す項目をヤンクします。 M-yは、『最終ヤンク』ポインタを別の項目へ移動し、 それに合わせてバッファのテキストを変更します。 M-yコマンドを繰り返せばリング内のどの項目へもポインタを移動できるので、 どの項目でもバッファに取り込めます。 ポインタがリングの最後に達すると、 つぎのM-yはポインタをふたたびリングの先頭の項目に移動します。

M-yは、リング内で『最終ヤンク』ポインタを移動しますが、 リング内の項目の順番を変えることはありません。 つねに、最後にキルしたものが先頭にあり、 記録に残っている最古のものが最後尾にあります。

M-yには数引数を指定できて、 『最終ヤンク』ポインタをいくつ進めるかを指定します。 負の引数では、ポインタをリングの先頭に向けて移動します。 リングの先頭からは最後の項目へ移動し、そこから先頭に向けて移動します。

目的のテキストがバッファに入ったならば、 M-yコマンドの繰り返しを止めれば、みつけたテキストが残ります。 そのテキストはキルリングの項目のコピーなので、 バッファ内で編集してもリング内の項目は変わりません。 新たにキルしない限り、『最終ヤンク』ポインタは キルリング内の同じ場所を指していますから、 C-yを繰り返すと、 直前に取り込んだものと同じキル内容のコピーをヤンクできます。

目的のテキストを引き出すのに M-yコマンドを何回使えばよいのかわかっている場合には、 数引数を指定してC-yを使えば、 一発で目的のテキストをヤンクできます。 C-yに数引数を指定すると、 キルリング内でその個数分だけ遡った項目のテキストを取り込みます。 たとえば、C-u 2 C-yは最後から2番目にキルしたテキストを取り込みます。 つまり、C-y M-yとするのと等価です。 数引数を指定したC-yは、『最終ヤンク』ポインタの場所から 数え始め、ヤンクする項目にポイントを移動します。

キルリングの長さは、変数kill-ring-maxで制御します。 この個数以上のキルテキストは保存しません。

キルリングの実際の内容は、kill-ringという名前の変数に入っています。 キルリングの全内容は、コマンドC-h v kill-ringで見ることができます。