Use shift-Insert para colar no WSL

Use shift-Insert para colar no WSL
# When I do just Shift-Insert, I get
~$ 2~
# When I do Ctrl-V, then Shift-Insert, I get
~$ ^[[2;2~

Shift-insert funciona bem em outras situações, como Windows CMD ou Git-Bash

No wsl, posso usar Ctrl-Shift-V para colar, mas prefiro shift-insert.

Existe alguma solução alternativa?

Responder1

De acordo comMicrosoft/WSL:

Observe que a distribuição WSL é iniciada no console do Windows (a menos que você tenha tomado medidas para iniciar um console/terminal de terceiros). Portanto, registre problemas relacionados à UI/UX noConsole do Windowsrastreador de problemas.

Mas o link fornecido paraConsole do Windowsaponta paraTerminal do Windows:

O novo Terminal do Windows e o host original do console do Windows, todos no mesmo lugar!

Não há documentação (utilizável), então sua pergunta deve ser respondida apontando para seu código-fonte.

A parte relevante (que você gostaria de exercitar) está aqui, emwindowio.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;
        }
    }

Metade das condições (para alcançar isso Paste()) parecem provavelmente ser cumpridas (exceto algumaserroneste programa). Os que não são aparentes:

  • ShouldTakeOverKeyboardShortcuts()- mas isso é usado noctrl+shift+mais/menoscódigo

  • pSelection->IsKeyboardMarkSelection()- estamos assumindo que o mouse foi usado para seleção.

Mas isso pressupõe que esse HandleKeyEventmétodo trate igualmente as duas sequências de teclas diferentes. O ^[[2;2~vem de outra parte do programa, em terminalInput.cpp, usando ummesa embutida

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

eaplicado aqui:

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

Pela leitura do código, parece que isso é tudorio acimada windowio.cpplógica, para que essa combinação nunca seja alcançada. Os desenvolvedores não forneceram nenhuma maneira de substituir ou modificar esse comportamento.

Conforme sugerido em um comentário de @Rody-Oldenhuis:

Você pode usarque legal; isso suporta Ctrl+Ins/Shift-Ins pronto para uso

(que é derivado de menta).

Responder2

Se você executar WSL usandoTerminal do Windows, Shift-Insert funciona imediatamente para Colar. (E Ctrl-Insert também funciona para Copiar, como você poderia esperar)

Responder3

Não tenho certeza por que você deseja usar shift + insert para colar ou como remapear, mas colar padrão é tão simples quanto clicar com o botão direito do mouse.

informação relacionada