我使用 Windows 11,但在 WSL 中或通过 SSH 连接时我也运行 Ubuntu。
在 Windows PowerShell 终端中,Ctrl+Left和 Ctrl+Right可向左或向右跳转单词。添加Shift键选择将单词向左或向右移动(例如Ctrl+ Shift+ Left)。
在 WSL Ubuntu 终端中,Ctrl+Left会向左跳一个单词,Ctrl+Right会向右跳一个单词,但按下Shift不会选择。
在 SSH(PuTTY)终端中,两者都Ctrl没有Shift任何效果。
如何配置 WSL 和 SSH(PuTTY)以像 PowerShell 终端一样运行,这非常方便。
编辑1
我使用 Windows Terminal 运行 Windows Powershell、Powershell Core 和 WSL。其版本为 1.12.10732.0
答案1
简短回答:
我建议升级到 Windows Terminal,这是 Windows 中(相对较新的)终端替代品。在 Windows 11 22H2 的新安装中,它现在是 PowerShell、CMD、WSL 和任何其他“控制台模式”应用程序的默认终端。
Windows Terminal 的最新版本 (1.15) 增加了对“标记模式”的支持,这可能是最接近您所要求的功能。您可以使用Ctrl+ Shift+ M(可配置)激活标记模式。激活后,您可以使用Ctrl+( Shift)+Left/Right键绑定来移动和选择单词。
解释:
首先,重要的是要了解壳和终端:
PowerShell 和 Bash(在 WSL 中的 Ubuntu 中)是贝壳,它们实际上只是用于与其他文本/控制台模式应用程序(例如 Linux
ls
或 Windowsipconfig.exe
)。在 shell 内部,有一个输入处理程序用于处理实际的击键。这通常是
readline
Ubuntu 中 Bash 的 Linux 库。在最近的 PowerShell 版本中,它是PSReadline。A终端另一方面,是文本模式应用程序在其中运行的窗口应用程序。
Windows 在最新版本中提供了两个内置终端:
Windows 控制台主机是一个已有 25 年历史的传统终端,您在运行 PowerShell 或 Ubuntu/WSL 时可能会看到它。
Windows Terminal 是(相当)新的替代品。它现代、开源、功能丰富且可定制——这些都不适用于旧版控制台主机。它是从新安装的 Windows 11 22H2 开始的默认终端,并且可以在 Windows 11 21H2 中设置为默认终端。
它在 Windows 10 下也能正常运行,但不是“默认”模式。例如,您可以通过启动 Windows 终端并启动 PowerShell 配置文件来运行 PowerShell,但仅从“开始”菜单运行“PowerShell”将使用较旧的控制台主机。
Windows 上也有不少第三方终端,Linux 上则更多。
PuTTY 有点像混合体,因为它将终端和文本模式应用程序(SSH 客户端)捆绑在一起。但这些功能实际上是分开的:
pterm.exe
无需 SSH 客户端即可提供终端功能plink.exe
提供可以在不同终端中运行的 SSH 客户端
那么这到底和选择词语有什么关系呢?!
啊,我们快到了 ;-)。当您在 Windows 中按下任何键时,它都必须得到处理某处:
首先,某个键可能由 Windows 本身处理。例如,按Alt+Tab会告诉 Windows 在打开的窗口/应用程序之间切换/循环。如果某个键由 Windows 本身处理,则通常不会将其发送给任何其他应用程序。
接下来1,按键被发送到应用, 哪一个是终端在您的案例中。控制台主机本身不处理许多键,但 Windows Terminal 包含大量键绑定,其中大多数都是可自定义的。例如,在 Windows Terminal 中按Ctrl+ Shift+T将打开一个具有默认配置文件的新选项卡。
1我在这里过于简单了。其他应用程序也可以“钩住”键盘。
如果终端未处理某个键,则终端将把它发送到文本/控制台应用程序(shell),或者更准确地说是其输入处理程序(或正在运行的任何其他应用程序,例如
vim
/nano
/等)。这就是您的 ++Ctrl键发生的情况。ShiftLeft/Right
那么我可以配置 shell Bash 来使用 ++ 来选择单词(Ctrl就像ShiftPowerShellLeft/Right一样)吗?
很遗憾,不行。请记住视窗PowerShell 几乎一直存在于这样的环境中:已知clipboard(Windows 剪贴板)。这意味着它(及其 readline)可以始终假设您能使用键盘选择并将文本复制到剪贴板。
另一方面,Bash 最初是一个纯控制台应用程序,可以在没有任何图形窗口系统的情况下使用。它可以在纯控制台(无剪贴板)、Windows(clip.exe
)、X(文本可以传递到xsel
)、macOS 和其他系统中运行。它没有可用于复制到剪贴板的机制。一些其他文本模式应用程序已实现可配置的剪贴板选项,您可以在其中配置(例如)clip.exe
作为接收复制文本的剪贴板应用程序,但 Bash 尚未这样做。
因此我们回到我最初的建议——使用 Windows 终端,它确实提供了此功能,尽管键绑定稍微不太方便,因为您必须先使用Ctrl+ Shift+进入标记模式M。
那么PuTTY怎么样?
我不知道如何配置PuTTY来执行此操作,但我将主要跳过它,因为:
自从 WSL 发布以来,我就没用过 PuTTY。Ubuntu 中的 OpenSSH 客户端提供了我需要的一切,而且 OpenSSH 的配置文件比 PuTTY 的配置文件(默认情况下将信息存储在 Windows 注册表中)更易于移植。
无论如何,热键的配置在除非我们讨论在其中配置 Ubuntu/Bash shell,否则 PuTTY 在 Ask Ubuntu 上会有点离题。
考虑到这一点,我个人推荐我所做的事情——既然您已经在 WSL 中使用 Ubuntu,那么如果它适合您的工作流程,只需在那里转换到 OpenSSH 客户端即可。然后,您可以使用 Windows Terminal 满足您的所有需求——PowerShell、WSL 和 SSH——所有功能都带有制表符和标记模式。