Terminal
使用 shift-Insert 粘貼到 WSL
# 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。
有什麼解決方法嗎?
根據微軟/WSL:
請注意,WSL 發行版在 Windows 控制台中啟動(除非您已採取步驟啟動第 3 方控制台/終端)。因此,請在Windows 控制台問題跟踪器中歸檔 UI/UX 相關問題。
但是Windows Console的給定連結指向Windows Terminal:
新的 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+plus/minus程式碼中使用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 在評論中所建議的那樣:
您可以使用wsltty;這支持 Ctrl+Ins/Shift-Ins 開箱即用
(源自薄荷)。