zoukankan      html  css  js  c++  java
  • Mac 的 Vim 中 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”
  • 相关阅读:
    angularJS解决数据显示闪一下的问题?-解决办法
    js 做账单处理
    淘宝cnpm
    js 对象转数组
    js 移动端上拉刷新(基于ng1)
    js 控制超出字数显示省略号
    select2 插件编辑时设置默认值
    select2 插件加载后端数据
    js 依据“;”折行
    css 两段对齐和超出部分...
  • 原文地址:https://www.cnblogs.com/jackbo/p/7201321.html
Copyright © 2011-2022 走看看