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

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

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

~ >> for f in *; do
echo $f
done

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

有任何想法吗?

答案1

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

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

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

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


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

相关内容