我安装了 Alacritty,它使用 vim 来显示文件,但将文本嵌入终端文本中,这样我就可以从没有系统剪贴板的 ssh 服务器或终端复制任何文本,并且可以将终端命令与从终端打开的文件文本一起复制。
要标记终端的文本,解决方法是按Ctrl+Shift+Space
以激活完整终端的所有 vim 命令。然后使用Shift+Page up
向上滚动并左键单击第一个项目,使用 向下滚动Shift+Page down
并右键单击我想要标记的最后一个项目。如果要获取第一个项目,只需按g
。
您可以使用ggVG
标记整个终端历史记录。这样,从第一项到最后一项的所有内容都会被标记。
无论您仅标记部分文本还是全部文本,您仍然可以使用右键单击来更改选择,而不会丢失起始标记。
然后我可以复制,Ctrl+Shift+C
但是当我将其粘贴到标准 Linux 编辑器中时,剪贴板会在 524 行处被剪切。
测试的其他想法:
Ctrl+A
在正常模式下(不是在Ctrl+Shift+Space
vim 模式下)。不起作用。:)
有没有办法可以复制整个 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
。