Некоторые сопоставления клавиш для комбинаций с клавишами PageUp / PageDown не работают - PullRequest
1 голос
/ 21 апреля 2020

Я использую rxvt-unicode эмулятор терминала на Manjaro, и следующие два сопоставления в моем .vimrc не работают,

nnoremap <C-PageUp>   :tabprevious<CR>
nnoremap <C-PageDown> :tabnext<CR>

, хотя следующее работает

nnoremap <C-t>        :tabnew<CR>

1 Ответ

1 голос
/ 21 апреля 2020

Я думаю, что причиной поведения, которое вы наблюдаете, является именно то, что описано здесь .

Другими словами, что-то вроде этого (что rhs не имеет значения)

nnoremap <C-PageUp> :echo "hello"<CR>

не будет работать, так как Vim теперь не имеет, какая escape-последовательность соответствует коду ключа <C-PageUp>.

Поэтому вы можете предоставить ему escape-последовательность, соответствующую Ctrl-PageUp , как в

nnoremap ^[[5^ :echo "hello"<CR>

, где первые два символа escape-последовательности, ^[, являются частью единой единицы, которая соответствует Escape (поэтому escape seqeunce).

Вы можете получить всю последовательность (которая может отличаться от моей в вашем терминале, кстати) из режима вставки, нажав Ctrl + V Ctrl + PageUp ; однако, учитывая значение ^[, вы также можете использовать Ctrl + V Escape и затем набрать [ 5 ^ вручную.

К сожалению, установка set <C-PageUp>=^[[5^ вызывает ошибку E518. Я не знаю почему.

С другой стороны, другое решение заключается в следующем (снова описано здесь )

set <F37>=^[[5^
nnoremap <F37> :echo "ciao"<CR>

, где <F37> является одним из дополнительный код функции Vim обеспечивает. Я понятия не имею, где эта вещь находится в :help.

...