3

マニュアルには、kill-region を連続して使用すると、kill したテキストが kill-ring 内の 1 つに連結されると書かれています。
これがどのように機能するのか混乱しています。だから私はスクラッチバッファでこれを評価しようとしました:

(progn
   (kill-region 1 5) ; this kills ";; T"
   (kill-region 1 5)); this kills "his "

私が期待しているのは、kill-region を 2 回使用しているため、kill されたテキストは kill リング内の 1 つとして連結されるはずです。
しかし、Cy を使用すると、「彼」しか得られません。
だから私はここに2つの質問があります:

  • Lispで、kill-regionを数回呼び出して、killされたテキストが連結されるようにする方法は?

  • キーボード Cw を使用して、kill-region を数回呼び出して、kill されたテキストが連結されるようにする方法は? 典型的なワークフローは kill-region(Cw)、次に move-cursor、そして kill-region です。

キル領域のドキュメント文字列は次のとおりです。2段落目と最終段落矛盾してない?

"Kill (\"cut\") text between point and mark.
This deletes the text from the buffer and saves it in the kill ring.
The command \\[yank] can retrieve it from there.
\(If you want to save the region without killing it, use \\[kill-ring-save].)

If you want to append the killed region to the last killed text,
use \\[append-next-kill] before \\[kill-region].

If the buffer is read-only, Emacs will beep and refrain from deleting
the text, but put the text in the kill ring anyway.  This means that
you can use the killing commands to copy text from a read-only buffer.

Lisp programs should use this function for killing text.
 (To delete text, use `delete-region'.)
Supply two arguments, character positions indicating the stretch of text
 to be killed.
Any command that calls this function is a \"kill command\".
If the previous command was also a kill command,
the text killed this time appends to the text killed last time
to make one entry in the kill ring."
4

1 に答える 1

4

ドキュメントでは、関数ではなくコマンドについて言及しています。コマンドは、コマンド ループを開始する関数です。

この関数を呼び出すコマンドはすべて「kill コマンド」です。前のコマンドが kill コマンドでもあった場合、今回 kill されたテキストは、前回 kill されたテキストに追加されて、kill リングに 1 つのエントリが作成されます。

kill-regionこれはそれ自体を意味するものではありません。関数を呼び出すコマンドはすべて kill-region「kill コマンド」になります (kill-region 自体を含む)。例kill-line kill-wordなど

  • Lispで、kill-regionを数回呼び出して、killされたテキストが連結されるようにする方法は?

を使用しkill-appendます。

(progn
   (kill-region 1 5) ; this kills ";; T"
   (kill-region 1 5)); this kills "his "

私が期待しているのは、kill-region を 2 回使用しているため、kill されたテキストは kill リング内の 1 つとして連結されるはずです。

kill-region を 2 回呼び出しましたが、コマンドとしてではありません。これらの呼び出しは両方とも、同じコマンド ループの実行内で発生します。

于 2013-05-14T10:14:21.097 に答える