Назначение определенной клавиши клавиатуры на vim
У меня потрясающая клавиатура: 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 ответа
Я предлагаю перепривязать дополнительные ключи на уровне 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, которую вы пытаетесь связать. Вуаля, ключ найден.
Я нашел решение для vim с помощью следующей команды:
set < F13>={C-v}{myspecialkey}
Ключ между { } должен быть напечатан как есть, а затем сопоставить ключ с:
:map < F13> :undo<CR>
У меня такая же клавиатура и под linux "специальные" клавиши не так полезны, как обычно <FN>
.).
Почему бы просто не использовать <FN>
сопоставления клавиш? Просто делать :nnoremap <F2> u
и так далее для других ключей?
И мне интересно, не проще ли просто нажать u
для отмены? (Да, не в режиме редактирования.)