命令行上拉出的文本存储在哪里?

命令行上拉出的文本存储在哪里?

当您使用 readline 命令在命令行上删除字符时(例如Ctrl-U,您可以使用 进行粘贴Ctrl-y,但是它存储在哪里?它似乎根本不使用 X11 剪贴板。

答案1

它会进入杀戮环,就像在 Emacs 中一样。来自 GNU Readline 文档:

当您使用kill命令时,文本将保存在kill-ring中。任意数量的连续杀死都会将所有被杀死的文本保存在一起,这样当你将其拉回来时,你就得到了全部。杀戮环不是特定于线路的;当您键入另一行时,您在先前键入的行中删除的文本可以稍后拉回。

来源:http://www.gnu.org/software/bash/manual/html_node/Readline-Killing-Commands.html

Kill Ring 存储在通过mallocchar 指针分配的内存中。来自kill.creadline 源:

/* Where to store killed text. */
static char **rl_kill_ring = (char **)NULL;

答案2

readline是一个供 tty 使用的库(至少最初是这样),它完全不考虑任何图形环境(例如 X 剪贴板或其他环境)。

相关内容