Как мне сопоставить Ctrl + F8 в vim?

513
Mr. Blue

Я пытался отобразить Ctrl + F8 несколькими различными способами, но я просто не могу заставить его работать. После того, как я провел некоторые исследования, я обнаружил, что vim не поддерживает все коды клавиш терминала, и мне нужно присвоить код клавиши терминала пустому коду клавиши vim (например, F13). Я следовал этому руководству шаг за шагом, но безуспешно.

Что я сделал, это:

  1. Найдите код терминала (URxvt) для Ctrl + F8, используя cat. Результат: ^ [[19 ^
  2. Добавил следующие строки в мой файл плагина:

set <F13>=^[[1;2B nnoremap <F13> :call foobar

Какие-либо предложения?

0

1 ответ на вопрос

1
Heptite

[После тестирования я перенес свой комментарий в ответ.]

Ваша setкоманда не использует то же значение, что и ваш скан-код. Кроме того, вы должны быть уверены, что вы используете escape-символ вместо двух символов ^и [. Чтобы сделать это легко без «жесткого кодирования» escape-символа, я бы использовал :execute:

:exe "set <F13>=\e[19^" :nnoremap <F13> :echo "It works!"<CR> 
Большое спасибо :). Работает отлично. Однако я не очень понимаю, что означает «\ e» и почему «: execute» работает, а «: set» само по себе не Mr. Blue 8 лет назад 0
Because, for historical reasons, `:set` cannot have evaluation or string expansion used at all, we get around that with `:execute`. `\e` in double quotes is a string escape sequence that becomes a true escape character. Heptite 8 лет назад 0