Mac 的 Vim 中 delete 键失效的原因和解决方案(转)

摘要:
MAC上的键盘使用不顺畅,无法使用删除键。本文描述了Mac上vim中删除键失败的原因和解决方案。八卦:如果你想在Mac上实现delete right功能,你需要使用⑪+delete组合键。原因是在互联网上找到了很多答案,但现象和解决方法不同。返回正常模式后,字符完全消失。删除键的使用并不能反映出博主遇到了第三种情况。每次从正常模式再次进入插入模式时。

本文转自http://blog.csdn.net/jiang314/article/details/51941479

vim从7.3升级7.4之后,出现MAC上的键盘使用很不顺的现象,譬如;delete按键不能使用,详细解说如下:

本文介绍叙述Mac上vim中delete键失效的原因和解决方案

闲扯:在Mac的键盘上实际是没有 backspace 这个键的。其实Mac的 delete 就是Windows的 backspace ,实现的都是向左删除的功能。Mac上如果要实现向右删除的功能需要使用 ⌘+delete 组合键来使用。

原因

网上搜到了很多答案但是现象和解决方案都不同,例如:

  • 使用 delete 键出现了 ^?
  • 使用 delete 键,光标移动,但是字符仍然显示。退回normal模式后字符才彻底消失
  • 使用 delete 键没有反应

博主这里遇到的是第三种情况。每次从normal模式再次进入insert模式后,delete就再也无法向左删除。取而代之的是Mac那蛋疼的duang,duang,duang警告声。如果你是伸手党,只想知道怎么解决的话,那么通关密码是在 ~/.vimrc中加上 set backspace=2 。恭喜!你的问题就此解决。(如果问题还在,建议仔细将自己delete键行为和上述三种情况做比对,点击链接对症下药)

博主是个较真且喜欢知道为什么的人。如果你也想知道这个恼人的duang,duang,duang到底是什么原因产生的话,那么让我们往下看。

出现这个问题,基本是因为你的VIM使用了 compatible 模式,或者把 backspace 变量设置为空了。好奇的读者一定会问,这两个配置又代表了什么意思?其实compatible模式是VIM为了兼容vi而出现的配置,它的作用是使VIM的操作行为和规范和vi一致,而这种模式下backspace配置是空的。即意味着backspace无法删除 indent , end of line , start 这三种字符。如果你出现了和博主一样的情况,不妨在解决问题前先在VIM中用 set backspace?命令查看下自己当前的删除模式.

效果就相当于delete只能删除本次insert模式中输入的字符。那么为什么 backspace=2 又能解决问题呢?其实这个命令是 set backspace=indent,eol,start 的简化写法,也就相当于把 delete 键配置成增强模式。具体数值和对应增强模式的对应关系见 vim官方文档 ,简单摘录如下:

  • 0 same as “:set backspace=” (Vi compatible)
  • 1 same as “:set backspace=indent,eol”
  • 2 same as “:set backspace=indent,eol,start”

免责声明:文章转载自《Mac 的 Vim 中 delete 键失效的原因和解决方案(转)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇thrift的使用DockerFile与镜像(Image)仓库下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SQL触发器实例(下)

1 基本语法: 2 Create Trigger [TriggerName] 3 ON [TableName] 4 FOR [Insert][,Delete][,Update] 5 AS 6 --触发器要执行的操作语句. 7 Go 8 9 注意: 10 触发器中不允许以下 Transact-SQL 语句: 11...

JS编解码与Java编解码的对应关系

  最近前段在导出数据时会遇到“illegal character”的异常错误,结果发现是在请求地址中请求参数包含了空白字符(其编码为%C2%A0)或者是空格字符(其编码为%20),之前对空格字符情况是做了规避处理,而这次又出现了空白字符,要是后续还有其它特殊字符呢?那如何是好?难道每次遇到这些特使字符就在后端做特殊处理?这样显然不合适。既然后端对请求地址...

JSP,servlet和数据库之间传值出现乱码的问题

 近期困扰我非常久的一个问题最终攻克了,为他我头疼了好几天,问题是JSP通过servlet向数据库传值,查询显示在页面的时候出现了乱码,原先我数据库中有两行带有中文的数据,查询的时候倒是没有出现乱码。我debug一下。发现JSP和servlet中全部接受中文字符集的变量都没有出现乱码,我去数据库查看。全部加入的中文字符都是问号,问题发现了,我就百度什...

ZooKeeper学习总结 第二篇:ZooKeeper深入探讨

其实zookeeper系列的学习总结很早就写完了,这段时间在准备找工作的事情,就一直没有更新了。下边给大家送上,文中如有不恰当的地方,欢迎给予指证,不胜感谢!。 1. 数据模型 1.1. 只适合存储小数据 Zk维护着一个逻辑上的树形层次结构,树中的节点称为znode,个znode都有一个ACL(权限控制)。Zookeeper是被设计用来协调服务的,因此zn...

PowerQuery清理非文件名字符(清除指定列表中的所有字符)

今天我讲的这个案例的场景是:我在Excel表格里保存了一些列信息,如下左图所示。这些列将会在我的程序中用于自动生成文件。我们都知道能作为文件名的字符是有限制的,Windows中不予许在文件名出现部分字符,这些字符如下右图所示。 为了防止我的程序在运行过程中不会因为文件名混入以上的非法字符而中途退出,我需要预先处理那些我需要作为文件名的列。我的文件...

Linux下vi命令大全

进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 vi -r filename :在上次正用vi编辑...