撸一撸VIM -- 3 插入模式

2016年04月09日

一、叨叨逼

上一篇blog,被踩了一下,一开始心情比较郁闷,30分钟后想想,本身水平就属于菜鸟级别,被踩也是正常的。所以依然继续写,但标题改了一下,各位大神如果有问题或建议请留言评论(已经更换了评论插件),我尽量改进。

二、说明

  • 插入模式
    • 触发命令
      • i:在当前字符的左边插入
      • I:在当前行首插入
      • a:在当前字符的右边插入
      • A:在当前行尾插入
      • o:在当前行下面插入一个新行
      • O:在当前行上面插入一个新行
      • c{motion}:删除 motion 命令跨过的字符,并且进入插入模式
        • c$:删除从光标位置到行尾的字符并且进入插入模式
        • ct!:删除从光标位置到下一个叹号(但不包括)
      • cc:剪切当前行并且进入插入模式
      • C:等同于c$
      • s:删除光标处字符,并进入插入模式
      • S:删除当前行并进入插入模式,等同于cc
  • 插入-普通模式
    • 这是普通模式的一个特例,让我们从插入模式执行一次普通模式命令,然后回归插入模式,按键为
  • 替换模式
    • 与插入模式的区别:在替换模式中输入会替换文档中的已有文本
    • 触发命令:r,R
  • 虚拟替换模式(推荐)
    • 把制表符当成一组空格进行处理
      • 假设制表符列宽为8,输入的前7个字符时,每个字符会被插入到制表符之前,当输入第8个字符时,该字符会替换制表符
    • 触发命令:gr,gR

三、演示

1. 插入模式中撤销修改

  • :删除前一个字符
  • :删除前一个单词
  • :删除至行首

2. 返回普通模式

  • 切换到普通模式
    • :不推荐,按键距离比较长
    • <C-[>:推荐,双手协作
  • 切换到插入-普通模式

3. 粘贴寄存器中的文本

  • {register}
    • 将寄存器的内容插入到光标所在的位置,适合粘贴少量的几个单词
  • {register}
    • 按原义插入寄存器内的文本,减少因textwidth或者autoindent选项触发的不必要的换行或缩进,适合大量文本,但不推荐使用,推荐直接使用普通模式的粘贴命令

4. 表达式寄存器

  • 大部分Vim寄存器保存的都是文本
    • 删除及复制命令允许我们把文本保存到寄存器
    • 粘贴命令允许我们把寄存器中的内容插入到文档里
  • 表达式寄存器=
    • 执行一段Vim脚本,并返回结果

5. 插入特殊字符(感觉用得不多)

  • ga:当前光标字符编码(十进制、十六进制、八进制)
  • {xxx}:以十进制字符编码插入字符(最多三位)
  • u{xxxx}:以十六进制字符编码插入字符(最多四位)
  • {nondigit}:按原义插入非数字字符
  • {char}{char}:插入以二合字母{char1}{char2}表示的字符,例如!=表示为≠
    • :h digraph-table:查看具体的二合字母

6. 替换模式

  • r,R:替换模式
  • gr,gR虚拟替换模式
  • 为了显示Tab键,使用下面的Vim配置
    • set list
    • set listchars=tab:>-,trail:-