Gre*_*n23 5 linux vim terminal xterm key-bindings
我正在尝试将Vim命令映射到ctrl+pgup和ctrl+pgdn组合键.这些键vim的语法不工作(即<PageUp>和<PageDown>,或<C-PageUp>和<C-PageDown>).
由于默认的vim语法是不行的,我猜,终端不发送的字符代码ctrl+pgup和ctrl+pgdn即Vim期待.如果这是真的,我不知道如何找出文字键码是什么.我在Arch Linux上使用xfce4-terminal.
这是我尝试过的:
通常的方法:
map <C-PageUp> :bp<cr>
Run Code Online (Sandbox Code Playgroud)使用此答案的方法从命令行设置它:为什么<C-PageUp>和<C-PageDown>在vim中不起作用?
:map <CTRL-V><CTRL-PAGEUP> :bp<cr>
Run Code Online (Sandbox Code Playgroud)
当我在命令行中键入上面的命令时,没有显示:
map :bp<cr>
Run Code Online (Sandbox Code Playgroud)
而Vim说No mapping found.
来自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>
Run Code Online (Sandbox Code Playgroud)对答案的修改:
set <C-PageUp>=<type Ctrl-V><type Ctrl+PageUp> "^M
map <C-PageUp> :bp<cr>
Run Code Online (Sandbox Code Playgroud)在意识到这<type *>是一个用户命令后,我做了这些命令,并且vim粘贴了输出.我<type *>用这个输出替换了:
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>
Run Code Online (Sandbox Code Playgroud)尝试5中的所有方法,但不先设置选项.例如:
map <C-[[5~> :bp<cr>
Run Code Online (Sandbox Code Playgroud)答案中的方法:https://groups.google.com/forum/#!topic / vim_use/j85-2xQkb7s
map [5~ :bp<cr>
Run Code Online (Sandbox Code Playgroud)答案的方法:https://superuser.com/questions/322983/how-to-let-ctrl-page-down-switch-tabs-inside-vim-in-terminal-app
map \033[5;5~ :bp<cr>
Run Code Online (Sandbox Code Playgroud)设置不同的术语选项:
set term=xterm
" Also:
set term=xterm-256color
Run Code Online (Sandbox Code Playgroud)
我的$TERM环境变量设置为xterm.
使用此答案提示的一些方法:https://superuser.com/questions/480215/how-to-map-pagedown-and-pageup-keys-to-function-normally
map <Esc>[5~ :bp<cr>
map <kpp> :bp<cr>
Run Code Online (Sandbox Code Playgroud).vim/after/plugin/而不是在下面的文件.vimrc.:MBEbp而不是:bp.我还能尝试什么?
好吧,我明白了.我忽视了一些非常简单的事情,这通常适用于我.
ctrlpgup并且ctrlpgdn已经是xfce4-terminal本身的键盘快捷键(用于切换终端选项卡).为了允许Vim使用这些组合键,终端本身不能使用它们.所以这是xfce4-terminal的一个问题,而不是Vim.
可以使用此处描述的方法取消设置xfce4-terminal快捷方式:https: //unix.stackexchange.com/questions/159979/xfce4-terminal-disable-individual-shortcut
简而言之,这是一个过程:
~/.config/xfce4/terminal/accels.scm(xfce4-settings-manager),转到.vimrc> nmap,然后打开~/.config/xfce4/terminal/accels.scm.编辑/创建.vimrc并将此行追加到文件中:
(gtk_accel_path "<Actions>/terminal-window/next-tab" "")
(gtk_accel_path "<Actions>/terminal-window/prev-tab" "")
Run Code Online (Sandbox Code Playgroud)nmap> ~/.config/xfce4/terminal/accels.scm,按Backspace,然后键入新的键盘组合..vimrc> 重复步骤4 nmap.将此命令放入~/.config/xfce4/terminal/accels.scm:
map <C-PageUp> :bp<CR>
map <C-PageDown> :bn<CR>
Run Code Online (Sandbox Code Playgroud)