为什么 Vim 使用 HJKL 键作为方向键

本文揭秘了Vim编辑器使用HJKL键作为方向键的历史原因。追溯到Vi编辑器的创始人Bill Joy在创作时所使用的ADM-3A终端机,该终端机即以HJKL作为方向键,这一设定沿袭至今。

关于这个问题,以前网络上有一种说法,手指放在键盘上输入时,HJKL 比方向键距离手指更近,自然输入效率就更高。听起来似乎很有道理哦,其实则不然,来看看 Peteris Krumins 找到的答案吧。

有一天我在看一些有关 Vim 的东东时,发现了它为什么用 HJKL 键作为方向键的原因了。当 Bill Joy 创建 Vi 文本编辑器时,他使用的机器机器是 ADM-3A 终端机,这机器就是把 HJKL 键作为方向键。自然而然,Bill Joy 也就用了相同的按键了。

HJKL 键 就是下面这个样子的:

ADM-3A 终端机键盘上的 HJKL 键同时带有箭头

下面就是 ADM-3A 终端机全貌,Vi 就是在这上面创造的。

ADM-3A 终端机全貌

既然 Vim 是源自 Vi,所以也就使用了相同的 HJKL 键。
下面是ADM-3A 终端机键盘电路板,注意 ESC 键紧挨着 Q 键左侧:

点击可查看超大图
这也就是为什么 ESC 键是用来切换 Vi 模式的!离手指距离很近,很容易按到。 另外,也想想为什么 Unix 系统的 home 目录是 ~,看看右上角的 HOME 键吧!
HJKL T-Shirt!

英文原文:Peteris Krumins 编译:伯乐在线 – 黄利民

 

文章转载自:开源中国社区 [http://www.oschina.net]

Vim 中,如果你发现 `Shift` 的行为发生了变化,例如变成了复制操作,这通常是因为你误触了某些插件配置或终端设置。Vim 本身并不直接将 `Shift` 映射为复制操作,但某些插件(如 `vim-visual-multi` 或 `g:netrw_mousemaps`)或终端模拟器的设置可能会干扰默认行为。 要恢复 `Shift` 的正常功能,你可以尝试以下几种方法: --- ### 方法一:检查终端设置 某些终端模拟器(如 GNOME Terminal、iTerm2)允许你自定义鼠标和盘行为。请检查你的终端设置是否启用了“使用 Shift 进行复制粘贴”之类的选项。如果是,请禁用它。 --- ### 方法二:检查 `.vim/ftplugin` 或 `.vim/after/ftplugin` 中的配置 有些插件会在特定文件类型中修改按行为。你可以检查是否存在与 `Shift` 相关的映射: ```vim :map <S- ``` 这会列出所有以 `Shift` 开头的映射。如果发现有不希望的映射,可以查找是哪个插件引入的,然后在 `.vimrc` 中禁用。 --- ### 方法三:重置所有映射 你可以尝试在 Vim 中执行以下命令来清除所有映射: ```vim :unmap <S-Left> :unmap <S-Right> :unmap <S-Up> :unmap <S-Down> ``` 如果你不确定具体映射了哪些,可以使用以下命令查看所有映射: ```vim :map ``` --- ### 方法四:禁用所有插件测试 你可以通过禁用所有插件来测试是否是插件导致的问题: ```bash vim -u NONE ``` 然后在 Vim 中输入: ```vim :set filetype= ``` 如果你发现 `Shift` 恢复正常,那么问题肯定是由某个插件引起的。你可以逐步启用插件排查。 --- ### 方法五:恢复 `.vimrc` 到默认状态 如果你怀疑是 `.vimrc` 配置导致的问题,可以临时重命名 `.vimrc` 文件: ```bash mv ~/.vimrc ~/.vimrc.bak ``` 然后重启 Vim 查看问题是否解决。 --- ### 示例:清除所有 Shift 映射的 Vim 脚本 你可以将以下代码添加到 `.vimrc` 中,以清除常见的 `Shift` 映射: ```vim " 清除 Shift + 方向键的映射 silent! unmap <S-Left> silent! unmap <S-Right> silent! unmap <S-Up> silent! unmap <S-Down> " 清除 Shift + hjkl 的映射 silent! unmap <S-h> silent! unmap <S-j> silent! unmap <S-k> silent! unmap <S-l> ``` --- ### 总结 `Shift` Vim 中被映射为复制行为通常不是 Vim 默认行为,而是由插件或终端设置引起的。你可以通过检查映射、禁用插件、调整终端设置等方式来恢复其正常功能。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值