1

У меня потрясающая клавиатура: Microsoft Ergonomic keybord 4000. Я также интенсивный пользователь vim на fedora.

На клавиатуре есть переключатель FLock, который меняет значение для всех клавиш. После переключения они отображаются X как = Help = Undo = Redo и так далее. Но мне не удалось сопоставить эти ключи к действию в VIM

xev перед выключателем:

state 0x2010, keycode 68 (keysym 0xffbf, F2), same_screen YES

xev после переключения:

state 0x2010, keycode 139 (keysym 0xff65, Undo), same_screen YES

Итак, я попробовал базовую карту в VIM

:map u

Но это не сработало. Любые намеки приветствуются!

3 ответа3

1

Я предлагаю перепривязать дополнительные ключи на уровне X с помощью xmodmap, чтобы вместо всех таких прикольных кодов клавиш, как "отмена", они вызывали стандартные F-коды, такие как "F20". Это значительно облегчает их привязку в программах типа терминала и, следовательно, в vim.

Вам понадобится что-то подобное в вашем файле .xmodmaprc:

keycode 139 = F13

Затем ключ становится отображаемым обычным способом. Из вашего файла .vimrc вы можете создать отображение следующим образом:

map <F13> YOUR_COMMAND_HERE

Вышеописанное работает для привязок на уровне X и будет работать для gvim, однако коды клавиш в терминальных программах немного отличаются. Возможно, вам придется сообщить vim о вашем новом коде ключа, чтобы он знал, что сумасшедшая вещь, отправленная терминалом, это F13. Вы можете сделать это, добавив строку над картой ключей (см. Выше) следующим образом:

set <F13>=^[[25~

Конечно, какая сумасшедшая последовательность кода вам нужна, будет зависеть от того, какую клавишу вы привязываете, от клавиатуры, терминала и т.д., Но заполнить ее действительно легко. Используя терминал, который вы обычно используете, откройте ваш .vimrc с помощью vim. Заполните первую часть строки set <F13>= затем, находясь в режиме вставки, нажмите CTRL+v, чтобы вставить код визуальной клавиши, затем нажмите новую клавишу F, которую вы пытаетесь связать. Вуаля, ключ найден.

1

Там это решение для Vim я нашел здесь , используя следующую команду:

set < F13>={C-v}{myspecialkey}

Ключ между {} должен быть напечатан как есть, а затем сопоставить ключ с:

:map < F13> :undo<CR>
0

У меня та же клавиатура, а в linux "специальные" клавиши не так полезны, как обычно <FN> .).

Почему бы просто не использовать сопоставления клавиш <FN> ? Просто сделайте :nnoremap <F2> u и так далее для других ключей?

И мне интересно, не проще ли просто нажать на u чтобы отменить? (Да, не в режиме редактирования.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .