emacs,如何多次调用kill-region?

时间:2013-05-14 09:06:50

标签: emacs lisp

在手册中说,如果你按顺序使用杀戮区域,你杀死的文本将在杀戮戒指中连接成一个。
我只是觉得这很有用。所以我试着在 scratch 缓冲区中评估它:

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

我的期望是,因为我使用杀戮区域2次,所以杀死的文本应该在杀戮戒指中连接成一个。
但是当我使用C-y时,我只得到“他的” 所以我在这里有两个问题:

  • 在lisp中,如何多次调用kill-region以便连接被杀死的文本?

  • 使用键盘C-w,如何多次调用kill-region以便连接被杀死的文本?因为典型的工作流程是kill-region(C-w),然后是move-cursor,然后是kill-region。

这是kill区域的doc字符串。是不是第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."

1 个答案:

答案 0 :(得分:4)

文档是指命令,而不是函数。命令是一个功能 启动command loop

  

任何调用此函数的命令都是“kill命令”。   如果上一个命令也是kill命令,   这次杀死的文本附加到上次杀死的文本中   在杀戮戒指中加入一个条目。

这并不意味着kill-region本身。它说的是任何调用它的命令 kill-region函数变为“kill命令”(包括kill-region 本身)。例如。 kill-line kill-word

  • 在lisp中,如何多次调用kill-region以便杀死文本 是连接吗?

使用kill-append

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

我的期望是,因为我使用杀戮区域2次,被杀死的文本   应该在杀戮戒指中连接成一个。

您将kill-region称为两次,但不是命令。这两个电话都发生了 在同一个命令循环中运行。