您的位置:首页 > 其它

终于解决了ubuntu下gnome-terminal中使用vim时在Insert模式下功能键键映射的问题

2010-06-05 15:18 676 查看
标题很长心情很happy!

选择在ubuntu中使用vim就是因为window的命令行非常的难用,配色方案、输入法都搞不定。而在gnome-terminal中这些都不是问题。不知道是我自己编译的vim的问题还是gnome-terminal本身的问题,我在vim中无法使用<F1>~<F12>进行映射,直接在terminal中按下会打印出~或其他的字符。而gnome-terminal中是esc转义序列的(这个我也不太明白),所以当我使用 imap <F9> <C-x><C-o> 时会把临近的字符搞成大小写转换。比如:os.path.d<F9> 就变成了os.path.D并且切换到了normal模式了。这个问题让我很郁闷好在有了neocomplcache是不是手动<C-x><C-o>也还能接受。

不过这两天使用中突然发现了一个问题,我在insert模式下按方向键的时候变成了在当前行的上方插入A、B、C、D这几个字符了。上网查了下都是说设置set nocompatible就可以了,不过我的vimrc的第一行就是这个。好在我们还有google,无意间看到了一个blog说vim wiki里有一个解决这个问题的方法http://vim.wikia.com/wiki/Fix_arrow_keys_that_display_A_B_C_D_on_remote_shell。终端的中的字符都对应一个字符序列可以通过:help t_ku来查看有很多。比如我的<up>键对应的是^[O*A 而当我把set term=ansi 时这个就变成了^[[OA了。尝试方案1时发现确实可以问题,不过速度有点慢,而且如果按的很快就会切回到normal模式中。经过反复尝试发现使用默认的term设置xterm,而<up>的转义序列使用ansi的时候完美的解决了问题imap ^[[OA <ESC>ki,不知道为什么这还差生了一个很好的副作用<F1>~<F12>也跟着变好了,可以直接用来映射了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: