如何仅使用键盘从终端选择文本?

如何仅使用键盘从终端选择文本?

我曾经通过鼠标单击+拖动来选择文本,但我想知道是否可以仅通过键盘执行相同的操作?

我说的是借助键盘gnome-terminal等来选择文本。

答案1

如果您使用 Urxvt,您可以使用以下命令扩展终端的键盘功能urxvt-perls,一组脚本,可以实现:

  • 选择文本
  • 将 URL 传递到您的 $browser
  • 搜索你的回滚
  • 以及从剪贴板中拖拽和粘贴

本质上,安装 urxvt-perls 后,您可以完全放弃鼠标。

答案2

对于 Ubuntu 18.10 中的 GNOME Terminal 3.30.1:使用“查找”( Ctrl- Shift- F),启用正则表达式并搜索涵盖您要选择的文本范围的正则表达式。获得后,您可以通过按关闭“查找”窗口并使用- -Esc复制文本。CtrlShiftC

答案3

这取决于您的终端。如果这对您来说很重要,您可以考虑 Emacs,term-mode它为您提供了编辑环境的完整文本操作功能。当然,您可能认为这太过分了!

答案4

的答案完整可滚动窗口内容的 xterm 转储让它听起来像你可以编写您自己的应用程序来执行此操作。当您从终端调用该应用程序时,它可以让您使用(类似 readline 的)击键来移动终端周围的可见选定区域。最后,按某个键退出,将当前突出显示的内容保留为您的选择。

让您的应用程序了解终端的内容是很棘手的。上面的链接提到了几种可能的方法。我最着迷的是用script它来做这件事的想法。也许在安装时,您的应用程序需要添加一个脚本调用.bashrc,以便所有交互式终端将其内容捕获到文件中。然后,在调用时,使用这些文件中正确的一个来确定其父终端的内容。

这听起来确实很棘手。您的应用程序必须以不可见的方式将流渲染为二维数组,才能弄清楚终端当前的样子。作为其中的一部分,显然,它必须考虑换行符和制表符,以及零宽度字符(例如更改颜色),并理解所有控制字符(例如“位置光标”)。

从好的方面来说,只要终端支持 ANSI,它就可以在任何可以运行“脚本”的地方工作,这几乎是除了旧的 Windows“cmd.exe”之外的所有脚本。

相关内容