Verwenden Sie Umschalt-Einfügen zum Einfügen in WSL

Verwenden Sie Umschalt-Einfügen zum Einfügen in WSL
# When I do just Shift-Insert, I get
~$ 2~
# When I do Ctrl-V, then Shift-Insert, I get
~$ ^[[2;2~

Shift-Insert funktioniert auch in anderen Situationen gut, wie etwa in Windows CMD oder Git-Bash

In WSL kann ich zum Einfügen Strg-Umschalt-V verwenden, bevorzuge aber Umschalt-Einfügen.

Gibt es eine Problemumgehung?

Antwort1

EntsprechendMicrosoft/WSL:

Beachten Sie, dass die WSL-Distribution in der Windows-Konsole gestartet wird (es sei denn, Sie haben Schritte unternommen, um eine Konsole/ein Terminal eines Drittanbieters zu starten). Melden Sie daher UI/UX-bezogene Probleme imWindows-KonsoleProblemverfolgung.

Aber der angegebene Link fürWindows-Konsoleverweist aufWindows-Terminal:

Das neue Windows-Terminal und der ursprüngliche Windows-Konsolenhost, alles am selben Ort!

Es gibt keine (brauchbare) Dokumentation, daher muss Ihre Frage durch einen Verweis auf den Quellcode beantwortet werden.

Der relevante Teil (den Sie trainieren möchten) befindet sich hier, inwindowio.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;
        }
    }

Die Hälfte der Voraussetzungen (um dieses Ziel zu erreichen Paste()) dürfte erfüllt sein (abgesehen von einigenInsektin diesem Programm). Diejenigen, die nicht offensichtlich sind:

  • ShouldTakeOverKeyboardShortcuts()— aber dies wird in derStrg+Umschalt+Plus/MinusCode

  • pSelection->IsKeyboardMarkSelection()– wir gehen davon aus, dass die Auswahl mit der Maus vorgenommen wurde.

Das setzt jedoch voraus, dass diese HandleKeyEventMethode die beiden unterschiedlichen Tastenfolgen gleich behandelt. Das ^[[2;2~kommt von einem anderen Teil des Programms, in terminalInput.cpp, unter Verwendung einesEinbautisch

// 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{

Undhier angewendet:

// If a modifier key was pressed, then we need to try and send the modified sequence.
if (keyEvent.IsModifierPressed() && _searchWithModifier(keyEvent, senderFunc))
{
    return true;
}

Beim Lesen des Codes scheint es, als wäre das allesstromaufwärtsaus der windowio.cppLogik, sodass diese Kombination nie erreicht wird. Die Entwickler haben keine Möglichkeit bereitgestellt, dieses Verhalten zu überschreiben oder zu ändern.

Wie in einem Kommentar von @Rody-Oldenhuis vorgeschlagen:

Sie könnenwsltty; dies unterstützt Strg+Einfg/Umschalt-Einfg sofort

(was von „mintty“ abgeleitet ist).

Antwort2

Wenn Sie WSL ausführen mitWindows-Terminal, Umschalt-Einfügen funktioniert standardmäßig zum Einfügen. (Und Strg-Einfügen funktioniert, wie zu erwarten, auch zum Kopieren)

Antwort3

Ich bin nicht ganz sicher, warum Sie zum Einfügen die Umschalttaste+Einfügen verwenden möchten oder wie Sie dies neu zuordnen, aber das Einfügen ist standardmäßig so einfach wie ein Rechtsklick.

verwandte Informationen