bash xterm:如何在输入回车前获取命令行

bash xterm:如何在输入回车前获取命令行

我尝试在 bash xterm 中定义一个自定义的 reverse-kill-word 函数行为。为此,我需要在验证命令行之前捕获它。例如,如果我键入时sdcds/edfdD sdf/sdf没有键入回车键,我想使用快捷方式在临时变量中esc + backspace捕获该行,sdcds/edfdD sdf/sdf然后应用 sed。我已经编写了 sed 和 bind 命令,但我找不到任何地方如何捕获命令buffer行。

来自答案的更新

好的,非常感谢,我觉得我的解释不够清楚。我想要做的是在 bash.rc 中创建一个函数和相关的绑定键来修改命令行中的文本。想象一下,我想定义一个函数来删除命令行(在输入回车键之前)直到“/”为止,例如,只删除到 / 为止,我可以在 .bash.rc 中写入:

function backward-delete-to-slash () { echo $BUFFER_COMMAND_LINE | sed  's:\(.*[/][/]*).*:\1:';}

bind -x '"\e\d": backward-delete-to-slash'

我的问题是将命令行捕获到$BUFFER_COMMAND_LINE变量中。如果我有这个变量,我可以这样做:

$: sdffs/dsfd dsfsdf/dfdsf (without typing enter)

esc+backspace

$: sdffs/dsfd dsfsdf/

因此我希望能够更加详尽。

答案1

如果你对 vi 有一定了解,可以尝试一下:

$ set -o vi
$ bind vi-yank-to '\ey'
$ type-your-text-here - then press Home to go to begin-of-line, esc-y

该行现在位于缓冲区中。按 Ctrl-c 获取新行,然后

$ sed something-and-then esc-p

缓冲区中的文本应该会出现。

相关内容