GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/emacs/Earlier-Kills.html ・ emacs-doc.conao3.com

14.2.2 直前のキルの取り消し

Yankingで説明されている通り、C-yに数値引数を指定することで、直近のキルではなくなったテキストをヤンクできます。これは、どのキルリングのエントリを呼び出したいか覚えている場合に便利です。もし覚えていない場合は、M-y (yank-pop) コマンドを使用して候補を順に切り替えたり、過去のキルの中から一つを選択したりできます。

直前のコマンドがヤンクコマンドであった場合、M-y はヤンクされたテキストを取り出し、それをそれ以前のキル時のテキストで置き換えます。したがって、最後から2番目のキル時のテキストを復元するには、まず C-y で最後のキル内容をヤンクし、次に M-y を使ってそれを直前のキル内容で置き換えます。これは C-y または別の M-y の後でのみ機能します。(他のコマンドの後に M-y が呼び出された場合は動作が異なりますので、以下を参照してください。)

M-y のこの動作モードは、キルリング内のエントリを指す「ラストヤンクポインタ」として理解できます。キルを行うたびに、ラストヤンクポインタはリングの先頭に新しく作成されたエントリへと移動します。C-y は、ラストヤンクポインタが指しているエントリをヤンクします。M-y の後に C-y または別の M-y が実行されると、ラストヤンクポインタは直前のエントリに移動し、バッファ内のテキストもそれに合わせて変更されます。M-y コマンドを連続して十分に実行すれば、ポインタをリング内の任意のエントリに移動させることができるため、任意のエントリをバッファに取り込むことができます。最終的にポインタはリングの終端に到達し、次の M-y で再び最初のエントリへとループします。

M-y は last-yank ポインタをリング内で移動させますが、リング内のエントリの順序は変更しません。リングは常に、先頭の直近のキルから、まだ記憶されている最古のものへと順に並びます。

C-y または M-y の後に使用した場合、M-y は数値引数を取ることができ、これにより last-yank ポインタを何エントリ分進めるかが指定されます。負の引数を指定するとポインタはリングの先頭方向へ移動し、リングの先頭から最後のエントリまで回り込んで、そこからさらに前方へ進みます。

目的のテキストがバッファに取り込まれると、M-y コマンドの実行を止めても、最後にヤンクしたテキストはそのまま残ります。これは単にキルリングのエントリのコピーであるため、バッファ内で編集してもキルリングの内容自体は変わりません。新たにキルが行われない限り、ラストヤンクポインタはキルリングの同じ位置に留まるため、C-y を繰り返すと、前回のキルと同じ内容のコピーが再びヤンクされます。

C-y を数値引数付きで呼び出すと、last-yank ポインタもヤンクしたエントリに設定されます。

yankコマンド以外のコマンドの後に M-y を呼び出すこともできます。その場合、M-y はミニバッファで、過去のキル履歴のいずれかを選択するよう促します。ミニバッファの履歴コマンド(ミニバッファ履歴 を参照)を使用して、再挿入したい項目が見つかるまで、キルリング内のエントリを移動したり検索したりできます。あるいは、補完コマンド(補完コマンド を参照)を使用して、キルリングのエントリリストから項目を補完したり、候補エントリが表示された *Completions* バッファをポップアップさせてそこから選択したりすることもできます。キルリングのエントリを選択した後、必要に応じてミニバッファ内でその内容を編集できます。最後に RET と入力すると、ミニバッファを終了し、選択したキルリングエントリのテキストが挿入されます。他のyankコマンドの後に M-y を入力した場合と同様に、last-yankポインタは、それが過去のキル履歴の項目であれ、挿入前に編集したキルリングのエントリであれ、直前にyankしたテキストを指したままになります。(後者の場合、編集したエントリはキルリングの先頭に追加されます。)したがって、ここでも C-y と入力すると、直前に挿入したテキストのコピーが再びyankされます。

yankコマンドではないコマンドの後に、単純なプレフィックス引数(C-u M-y)を指定して呼び出すと、M-yはC-yと同様に、挿入されたテキストの直前にカーソルを置き、末尾にマークを設定します。