Используйте Shift-Insert для вставки в WSL

Используйте 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.

Есть ли какой-нибудь обходной путь?

решение1

В соответствии смайкрософт/WSL:

Обратите внимание, что дистрибутив WSL запускается в консоли Windows (если вы не предприняли шаги для запуска сторонней консоли/терминала). Поэтому, пожалуйста, сообщайте о проблемах, связанных с UI/UX, вКонсоль Windowsсистема отслеживания проблем.

Но данная ссылка дляКонсоль Windowsуказывает наТерминал Windows:

Новый Windows Terminal и оригинальный хост консоли 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:

Вы можете использоватьwsltty; это поддерживает Ctrl+Ins/Shift-Ins из коробки

(что произошло от слова mintty).

решение2

Если вы запускаете WSL с помощьюТерминал Windows, Shift-Insert работает по умолчанию для вставки. (И Ctrl-Insert также работает для копирования, как вы могли ожидать)

решение3

Не совсем понимаю, зачем использовать сочетание клавиш Shift+Insert для вставки или как его переназначить, но вставка по умолчанию так же проста, как щелчок правой кнопкой мыши.

Связанный контент