# When I do just Shift-Insert, I get
~$ 2~
# When I do Ctrl-V, then Shift-Insert, I get
~$ ^[[2;2~
Shift-insert 在其他情况下效果很好,例如 Windows CMD 或 Git-Bash
在 wsl 中,我可以使用 Ctrl-Shift-V 进行粘贴,但更喜欢使用 shift-insert。
有什么解决方法吗?
答案1
根据微软/WSL:
请注意,WSL 发行版在 Windows 控制台中启动(除非您已采取措施启动第 3 方控制台/终端)。因此,请将 UI/UX 相关问题提交到Windows 控制台问题跟踪器。
但给定的链接Windows 控制台指着Windows 终端:
新的 Windows 终端和原来的 Windows 控制台主机都在同一个地方!
没有(可用的)文档,因此必须通过指向其源代码来回答您的问题。
相关的块(你想要练习的)在这里,在windowio.cpp
:
// handle shift-ins paste
if (inputKeyInfo.IsShiftOnly() && ShouldTakeOverKeyboardShortcuts())
{
if (!bKeyDown)
{
return;
}
else if (VirtualKeyCode == VK_INSERT && !(pSelection->IsInSelectingState() && pSelection->IsKeyboardMarkSelection()))
{
Clipboard::Instance().Paste();
return;
}
}
一半的条件(达到该目标Paste()
)似乎可能得到满足(除非某些条件)漏洞在这个程序中)。那些不明显的:
ShouldTakeOverKeyboardShortcuts()
——但这用在Ctrl+Shift+加/减代码pSelection->IsKeyboardMarkSelection()
- 我们假设使用鼠标进行选择。
但这是假设该HandleKeyEvent
方法平等对待两个不同的按键序列。来自^[[2;2~
程序的另一部分,在 中terminalInput.cpp
,使用内置表
// Sequences to send when a modifier is pressed with any of these keys
// Basically, the 'm' will be replaced with a character indicating which
// modifier keys are pressed.
static constexpr std::array<TermKeyMap, 22> s_modifierKeyMapping{
和在这里应用:
// If a modifier key was pressed, then we need to try and send the modified sequence.
if (keyEvent.IsModifierPressed() && _searchWithModifier(keyEvent, senderFunc))
{
return true;
}
从阅读代码来看,这就是全部上游从windowio.cpp
逻辑上看,这样的组合永远不会达到。开发人员没有提供覆盖或修改此行为的方法。
正如 @Rody-Oldenhuis 的评论中所建议的:
您可以使用沃斯蒂;这支持开箱即用的 Ctrl+Ins/Shift-Ins
(源自薄荷)。
答案2
如果您使用运行 WSLWindows 终端, Shift-Insert 可以直接用于粘贴。 (正如您所料,Ctrl-Insert 也适用于复制)
答案3
不太清楚为什么要使用 shift+insert 来粘贴或如何重新映射它,但默认粘贴就像单击鼠标右键一样简单。