I'm trying to map Vim commands to the ctrl+pgup
and ctrl+pgdn
key combinations. The vim syntax for these keys does not work (i.e., <PageUp>
and <PageDown>
, or <C-PageUp>
and <C-PageDown>
).
Since the default vim syntax doesn't work, I'm guessing that the Terminal isn't sending the character codes for ctrl+pgup
and ctrl+pgdn
which Vim is expecting. If that's true, I'm not sure how to find out what the literal key codes are. I'm using xfce4-terminal on Arch Linux.
Here's what I've tried:
The usual method:
map <C-PageUp> :bp<cr>
Setting it from the command line with this answer's method: Why <C-PageUp> and <C-PageDown> not work in vim?
:map <CTRL-V><CTRL-PAGEUP> :bp<cr>
When I type the command above in the command line, nothing shows:
map :bp<cr>
And Vim says No mapping found
.
This method from the Vim wiki: http://vim.wikia.com/wiki/Mapping_keys_in_Vim_-Tutorial(Part_2)#Key_notation
set <PageUp>=<type Ctrl-V><type PageUp> "^[[5~
map <C-PageUp> :bp<cr>
A modification of that answer:
set <C-PageUp>=<type Ctrl-V><type Ctrl+PageUp> "^M
map <C-PageUp> :bp<cr>
After realizing that <type *>
was a user command, I did these commands, and vim pasted output. I replaced <type *>
with this output:
set <PageUp>=^[[5~
map <C-PageUp> :bp<cr>
" Also:
set <PageUp>=[[5~
map <C-PageUp> :bp<cr>
" Also:
set <PageUp>=<^[[5~>
map <C-PageUp> :bp<cr>
" Also:
set <PageUp>=<[[5~>
map <C-PageUp> :bp<cr>
" Also:
set <C-PageUp>=^M
map <C-PageUp> :bp<cr>
" Also:
set <C-PageUp>=<^M>
map <C-PageUp> :bp<cr>
Trying all of the methods in 5, but without setting an option first. E.g.:
map <C-[[5~> :bp<cr>
The method from this answer: https://groups.google.com/forum/#!topic/vim_use/j85-2xQkb7s
map [5~ :bp<cr>
The method from this answer: https://superuser.com/questions/322983/how-to-let-ctrl-page-down-switch-tabs-inside-vim-in-terminal-app
map \033[5;5~ :bp<cr>
Setting different term options:
set term=xterm
" Also:
set term=xterm-256color
My $TERM
environment variable is set to xterm
.
Using some of the methods which this answer hints at: https://superuser.com/questions/480215/how-to-map-pagedown-and-pageup-keys-to-function-normally
map <Esc>[5~ :bp<cr>
map <kpp> :bp<cr>
.vim/after/plugin/
instead of in .vimrc
.:MBEbp
instead of :bp
.What else can I try?
To move a page down in Vim, press the Ctrl + f key combination, and to move a page up, press the Ctrl + b key combination.
Screen Positioning The equivalent full screen commands are ctrl f and ctrl b . Page up and page down may also work depending on your configuration.
Because of Vim's modes, there is not a lot of holding down the Ctrl key while pressing another key. However ,in insert (or replace) mode, Ctrl + R will let you paste a register, and Ctrl + V lets you insert any character literally. Ctrl + W deletes a word, and Ctrl + H backspaces a letter.
Alright, I figured it out. I was overlooking something extremely simple, which is usually the case for me.
ctrlpgup and ctrlpgdn were already keyboard shortcuts in xfce4-terminal itself (for switching Terminal tabs). In order to allow Vim to use these key combinations, they cannot be used by the Terminal itself. So this was an issue with xfce4-terminal, not Vim.
xfce4-terminal shortcuts can be unset with the method described here: https://unix.stackexchange.com/questions/159979/xfce4-terminal-disable-individual-shortcut
In short, here's the process:
Open ~/.config/xfce4/terminal/accels.scm
and uncomment/edit the lines:
(gtk_accel_path "<Actions>/terminal-window/next-tab" "")
(gtk_accel_path "<Actions>/terminal-window/prev-tab" "")
(You can verify this change by opening a new window and clicking Tabs in the Menubar: The Previous Tab and Next Tab items should no longer display shortcuts to their right.)
Put this command in .vimrc
:
map <C-PageUp> :bp<CR>
map <C-PageDown> :bn<CR>
Consider nmap
instead, to restrict the shortcut to NORMAL mode.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With