关于vim在插入模式中Backspace键无法删除的问题[转]

本文介绍了在使用Vim编辑器时如何正确映射Ctrl+hjkl为光标移动键,解决了因终端软件默认配置导致的按键冲突问题,并提供了Xshell、SecureCRT6等不同终端软件的具体设置方法。
部署运行你感兴趣的模型镜像

原文:Vim 里如何映射 CTRL-h 为 left ?

很多人习惯在配置文件中映射ctrl+hjkl为光标移动,却碰到了一些问题:

inoremap <c-h> <left>
inoremap <c-j> <down>
inoremap <c-k> <up>
inoremap <c-l> <right>

映射后无效或者映射以后按<BS>键不能删除,这是什么原因呢?

很简单,因为你的终端软件的默认配置是按下<BS>键以后
发送的是:^HASCII0x08),而^H在你的vim里被你 inoremap成了ctrl+h,所以你按了<BS>会被认为按下了左键。

早在VT100终端时代,^HASCII0x08)表示<BS>^?ASCII0x7f)表示<DEL>。过去0x7f是留给DELETE键使用的。而到了VT220时代,DELETE已经变为^[[3~ASCII0x1b,0x5b,0x33,0x7e共4个字节),而^?0x7f换给了我们的<BS>,有些终端软件,默认<BS>还是使用VT100的^H,你需要做的就是改一下终端默认配置而已。

你可以在你服务端下面查看下默认的键位设置:

$ stty -a

现在所有Linux服务器的erasebs)基本都是^?了(如果链接到非Linux老操作系统erase不是这个的话,需要改一下,可以在系统层改,也可以vim里面set t_kb=…),vim里面也是认可^?的,可有些终端软件却默认发送^H,不过好在他们都支持修改:

Xshell的修改方法

Properties->Terminal->Keyboard里,把<BS>设置成127,而 <DEL>设置成VT220 Del

这里写图片描述

SecureCRT 6的设置方法

Session Options->Terminal->Emulation->Mapped Keys,勾选 Backspace sends delete

这里写图片描述

Putty 设置方法

好像默认是^?的,不过需要到Configuration->Terminal->Keyboard下面确认下The Backspace keyControl-? (127)

这里写图片描述

Terminal.app

Mac下面的Terminal.app默认是发送^?的,你也可以到Profiles Advanced下面确认下Delete sends Control-H没有勾选。

这里写图片描述

iTerm2

iTerm2下面默认也是发送^?的,可以到Profiles->Keys下面确认一下Delete key sends ^H没有被勾选。

这里写图片描述

Gnome-Terminal

至于Gnome-TerminalMinTTY之流的默认是^?要修改可以看具体文本配置文件。

好了,默认vim同时识别^HASCII0x08)和^?ASCII0x7f)都把这两个当成<BS>,现在我们统一把终端软件的<BS>改为0x7f以后,^H0x08就空出来给我们noremap了:

noremap <C-h> <left>
noremap <C-j> <down>
noremap <C-k> <up>
noremap <C-l> <right>
inoremap <C-h> <left>
inoremap <C-j> <down>
inoremap <C-k> <up>
inoremap <C-l> <right>
cnoremap <c-h> <left>
cnoremap <c-j> <down>
cnoremap <c-k> <up>
cnoremap <c-l> <right>

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值