如何复制/复制在 ZSH 提示符下输入的多行表达式?

Mil*_*joo 4 keyboard-shortcuts zsh

例如,假设我正在浏览我的历史记录,并到达我之前输入的多行命令:

~ >> for f in *; do
echo $f
done
Run Code Online (Sandbox Code Playgroud)

我已经vim在 ZLE ( bindkey -v) 中启用了绑定,因此我可以Esc在此时键入并使用vim按键来绕过、跨行移动等。我还可以执行yy拉动当前行的操作。然而,似乎没有一种明显的方法来复制所有这些行。

有任何想法吗?

jas*_*yan 5

我想到了两种(诚然很麻烦)的方法。第一个是使用 Vim,第二个是 Urxvt 的小实用程序(如果这是您的终端模拟器):

  • 在你的历史记录中,点击v打开你的当前命令$EDITOR(自然是 Vim),然后Shiftvg选择之前的所有行将"+*其拖到剪贴板。

  • 您还可以在终端中使用urxvt-perls来实现此(和其他)增强功能,包括拉取和粘贴。在这种情况下:AltEscape进入选择模式,Shiftv选择2k所有行并将y它们拉入缓冲区,然后q退出。ShiftInsert粘贴拉出的文本。1

第一种方法似乎是最直接的,假设没有一些直接的方法可以仅使用 Zsh 的行编辑功能来实现。2


1. 这些按键绑定都可以在您的~/.Xresources
2. 中进行配置,这不会让我感到惊讶......