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

来源:互联网 发布:zookeeper源码 编辑:程序博客网 时间:2024/04/30 14:53

标题很长心情很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>也跟着变好了,可以直接用来映射了

 

原创粉丝点击