如何将大型终端历史记录从 Alacritty 复制到系统剪贴板 - Alacritty 剪贴板似乎被剪切了

如何将大型终端历史记录从 Alacritty 复制到系统剪贴板 - Alacritty 剪贴板似乎被剪切了

我安装了 Alacritty,它使用 vim 来显示文件,但将文本嵌入终端文本中,这样我就可以从没有系统剪贴板的 ssh 服务器或终端复制任何文本,并且可以将终端命令与从终端打开的文件文本一起复制。

要标记终端的文本,解决方法是按Ctrl+Shift+Space以激活完整终端的所有 vim 命令。然后使用Shift+Page up向上滚动并左键单击第一个项目,使用 向下滚动Shift+Page down并右键单击我想要标记的最后一个项目。如果要获取第一个项目,只需按g

您可以使用ggVG标记整个终端历史记录。这样,从第一项到最后一项的所有内容都会被标记。

无论您仅标记部分文本还是全部文本,您仍然可以使用右键单击来更改选择,而不会丢失起始标记。

然后我可以复制,Ctrl+Shift+C但是当我将其粘贴到标准 Linux 编辑器中时,剪贴板会在 524 行处被剪切。

测试的其他想法:

  • Ctrl+A在正常模式下(不是在Ctrl+Shift+Spacevim 模式下)。不起作用。:)

有没有办法可以复制整个 Alacritty 终端历史记录(不仅仅是命令,还有打开的文件的文本)?

答案1

更新 20221006:

Alacritty 内置快捷方式

据我从测试中看到,你按下Ctrl+Shift+Space进入 vim 模式,然后使用 vimggVG标记所有,并使用 Alacritty-copyCtrl+Shift+C进入系统剪贴板。要么这已经更改,要么我只是疏忽了它,要么它并不总是有效,我不明白为什么它不在下面的旧解决方法中。

alacritty.yml:save_to_clipboard: true

如果这不起作用,例如由于服务器没有或不允许复制到系统剪贴板,请检查更改 Alacritty 主文件夹中的 alacritty.yml 配置文件是否有帮助。搜索#save_to_clipboard: false,并将其更改为 true:

\#selection
...

  \# When set to `true`, selected text will be copied to the primary clipboard.
  save_to_clipboard: true

系统剪贴板绑定

如果这没有帮助,请将系统剪贴板绑定到您选择的键。

安装剪贴板,如 xclip 或 xsel:

# Check whether xclip is installed:
$ xclip

# Out:
xclip is hashed (/usr/bin/xclip)

# If it is not installed, install it with
$ sudo apt-get update -y
$ sudo apt-get install -y xclip

a. Alacritty 绑定

Alacritty 中的绑定记录在 alacritty.yml 中。这包括用于复制/粘贴的 ctrl+shift+c/v 绑定。请参阅:如何将文本从 Alacritty 复制到剪贴板 #5202。采用该绑定模式并创建自己的绑定。我没有在 Alacritty 配置中测试任何可以分享的自写绑定。

b. Tmux 绑定

相反,我最终在 Alacritty 上安装了 Tmux,这是将任何内容从 Alacritty 复制到任何地方的万无一失的方法。在 Alacritty 中,您现在将拥有 tmux 功能,就像在任何其他终端中一样。
在 Tmux 配置中,“y”的绑定将是:

bind -T copy-mode-vi y send -X copy-pipe "xclip -selection c"

从...开始Ctrl+B+[,按标记要复制的内容空间首先,完成后输入“y”,它将出现在系统剪贴板中。


较旧的解决方法

下面的解决方法比较旧,不需要阅读,而且我想我说没有答案也是错的。

你似乎无法从 Alacritty 标记所有内容并复制,因此,答案就是没有答案。这里有一些解决方法。

解决方法 1:vim 模式:G,终端模式:Ctrl+-最大缩小,Shift+鼠标,Shift+Page down如果超过一页

在 vim 模式下,按下G以便从上到下加载文件。然后您也可以:q退出文件,但这不是必需的。最重要的是整个文件是终端历史记录的一部分,没有任何间隙,并且在此之后您不使用任何 vim 命令G:任何 vim 页面向下Ctrl+F都会在页面末尾留下您不想要的打印输出。然后使用Ctrl+缩小-直到您看到整个文件或达到最大缩放比例。使用鼠标复制缩小的页面,按Ctrl+ Shift+C并粘贴到本地文件中。按Shift+重复逐页Page down操作并再次标记所有内容。这仍然是一步一步的,但在最大缩放比例下,您通常只需执行一两个步骤。您不需要在步骤中放大,只需在终端模式下按 use Shift+即可。Page down

解决方法 2a:使用 vim/Alacritty 搜索功能仅复制选定的行

在您复制整个终端历史记录并再次搜索之前,您也可以在终端中开始搜索。使用 进入 vim 模式时Ctrl+Shift+Space,您可以使用 vim 搜索功能搜索整个历史记录。只需按g,然后输入/MY_WORD,按Enter,然后继续按n,每次找到“MY_WORD”时都按 。

即使没有 vim,您也可以只使用 Ctrl+Shift+F 从命令行向上搜索终端历史记录(命令/打开的文本文件)。

这样,我就能找到崩溃前的代码更改。我可以通过鼠标移位向上或向下翻页复制(如底部所示)分布在许多页面上的所需代码。

解决方法 3:将文本通过管道传输到文件并将其复制到其他位置

作为“最佳实践解决方法”,将您执行的任何操作(命令、文件)传输到新文件(例如 中的文件)中/tmp,然后将其复制到您的计算机。如果您在服务器上,您可以将文件 scp 到您的计算机。

解决方法 4:仅复制约 500 行

下面的操作无法复制大型终端历史记录的所有行,在大多数情况下,正如我在测试中看到的那样,大约只有 350 到 500 行。这可能仍然足以完成许多复制任务,您可以逐步进行以捕获更多内容,尽管这很麻烦。因此,它工作得不够好。我以为可以,但那只是因为我标记了一个超过 1000 行的嵌入式 vim 文本,并认为您可以复制更多。事实上,524 行的剪贴板行也在变化,允许的行数取决于您在历史记录中标记的 vim 文件有多大。我的输出中有 >1000 行,还有一个有 522 行。

您需要保持正常模式 -不要切换到 vim 模式,因为Ctrl+Shift+Space- 和

  • 使用 滚动Shift+Page up
  • 单击鼠标左键标记您的开始,
  • Shift+Page down到达终点,
  • 使用右键点击进行微调找到终点,
  • 进而Ctrl+Shift+C

相关内容