Vim 的 End/Home 键无效的解决方法

很多人习惯用 End 键和 Home 键来定位到一行的行尾和行首。但在 gnome-terminal 终端下使用 Vim 进行编辑时,可能会碰到 End 键和 Home 键无效的问题。具体表现为,在按下 End 键时 Vim 会在当前行的上方插入新行并追加一个字母 F;按 Home 键时类似,只是字母 F 变成了 H

出现这个问题的原因是,当按下 EndHome 键时,终端会向 Vim 发送一个转义序列,而 Vim 却没有正确的将该转义序列转化成对应的按键。

可以通过设置 Vim 的 term 类型来解决这个问题。因为 gnome-terminal 是兼容 xterm 的,所以只需把 Vim 的 term 设置为 xterm 即可。一般情况下,Vim 会根据 TERM 环境变量来设置自己的 term 类型;如果没有指定 TERM 环境变量,则默认为 ansi 。

具体的解决方法如下:

使用 Vim 命令

在 Vim 中运行如下命令:

:set term=xterm

这种方法仅对当前 Vim 有效。关闭 Vim 后再打开,则问题依旧。

修改 Vim 配置文件

把上述命令写入 ~/.vimrc。这样,每次用 Vim 打开文件,都不会再出现问题了。

设置环境变量 TERM

在终端的配置文件中加入如下内容:

export TERM=xterm

配置文件可能有如下几个:

~/.bashrc
~/.bash_profile
/etc/bashrc
/etc/bash.bashrc

仅需添加到其中一个就行,不用都添加。至于添加到哪个,请根据自己系统的情况决定。

最后一种方法是比较推荐的。因为可以同时为其他依赖 TERM 环境变量的命令或程序提供定义。

有的人可能会使用多个或多种系统。这样,使用第二种方法,然后在各个系统中共享一份 ~/.vimrc 会更方便一些。

本文主要参考了这篇文章(http://stackoverflow.com/questions/1523746/fix-home-and-end)。

Creative Commons License Except where otherwise noted, content on this site is licensed under a Creative Commons Attribution 4.0 International license .