在描述我的问题之前,我会列出env。这里的申请:
OS:linux 2.6.37-ARCH (archlinux i686)
vim: 7.2.436
Terminal emulator: urxvt (with 256colors patch)
kent$ echo $TERM
rxvt-256color
screen: Screen version 4.00.03 (FAU) 23-Oct-06
我在终端运行vim。我想通过按ALT-hjkl将光标移动到INSERT模式,光标移动后,保持INSERT模式,这样我就可以继续输入单词。
我找到的文章:
http://vim.wikia.com/wiki/Mapping_fast_keycodes_in_terminal_Vim
http://vim.wikia.com/wiki/Get_Alt_key_to_work_in_terminal
我尝试了什么:
set timeout ttimeoutlen=50
set <F13>=^[j "ctrl-v alt-j
imap <F13> <down>
使用此conf,在INSERT模式下移动光标是可以的。如果我按<ESC>
和j。 Vim让我回到插入模式。我不知道为什么ttimeoutlen=50
不起作用。
也尝试过:
set timeout ttimeoutlen=50
set <M-j>=^[j
使用此设置,当我按下ALT-j时,键入了带有重音符号的“e”。
你能给我一些提示我应该如何在终端中映射ALT-hjkl?
提前致谢
肯特
答案 0 :(得分:18)
映射您的组合键的功能更容易。 Alt+something
通常会产生一个字符,与Ctrl+something
不同。
例如,在我的Mac Alt
加上hjkl
生成˙∆˚¬
。所以:
imap ˙ <Left>
imap ∆ <Down>
imap ˚ <Up>
imap ¬ <Right>
会这样做。
答案 1 :(得分:12)
对于箭头键:
首先查看终端发送给vim的密钥代码:
$ sed -n l
^[[1;9D
在上面的例子中,我运行了sed命令并按 Alt + Left 。
^[[1;9D
是发送到vim的转义序列,因此我们可以将其用于我们的映射。
将此添加到.vimrc
map <Esc>[1;9D :tabn<CR>
现在我们可以使用 Alt + Left
循环浏览vim标签