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

Я только что проверил, и это работает.

На первой виртуальной машине:

[yurij@centos7 gpg]$ cat test2.c
Another test.
Really?
OK.
[yurij@centos7 gpg]$ gpg2 -c --passphrase password --batch --no-tty < test2.c >test2.c.gpg2
[yurij@centos7 gpg]$ cat test2.c.gpg2
�c�a����0Li�p��t���JL��(
                        �ޢ� Xt��Z�f��(s�XU�K(ؖ��n�O[yurij@centos7 gpg]$
[yurij@centos7 gpg]$ scp test2.c.gpg2 192.168.56.4:trash/gpg
yurij@192.168.56.4's password:
test2.c.gpg2                                                                                         100%   65    57.6KB/s   00:00

На второй виртуальной машине:

yurij@debian9:~/trash/gpg$ cat test2.c.gpg2
�c�a����0Li�p��t���JL��(
                        �ޢ� Xt��Z�f��(s�XU�K(ؖ��n�Oyurij@debian9:~/trash/gpg$
yurij@debian9:~/trash/gpg$ gpg -d --passphrase password --batch --no-tty < test2.c.gpg2 >test2.c.decrypted
gpg: CAST5 encrypted data
gpg: encrypted with 1 passphrase
gpg: WARNING: message was not integrity protected
yurij@debian9:~/trash/gpg$ cat test2.c.decrypted
Another test.
Really?
OK.
4
18.03.2020, 16:33
2 ответа

Согласно microsoft/WSL:

Note that WSL distro's launch in the Windows Console (unless you have taken steps to launch a 3rd party console/terminal). Therefore, please file UI/UX related issues in the Windows Console issue tracker.

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

The new Windows Terminal and the original Windows console host, all in the same place!

Нет (применимой )документации, поэтому на ваш вопрос нужно ответить, указав исходный -код.

Соответствующий фрагмент (, который вы хотите использовать ), находится здесь, в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:

You can use wsltty; this supports Ctrl+Ins/Shift-Ins out of the box

(производное от minty ).

3
28.04.2021, 23:20

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

-2
28.04.2021, 23:20

Теги

Похожие вопросы