0%

vim收集

vim分为几种模式,如命令模式(Command mode),输入模式(Insert mode),底线命令模式(Last line mode),可视化模式(Visval mode),每种模式下都有对应的快捷键操作。

vim

一、几种模式

  1. 命令模式,也叫普通模式

    • dw:删除当前光标后一个单词
    • bdw:复合命令,b将光标移动到单词首,再执行dw
    • x:删除光标所在的字符
    • u:撤销命令
    • r:替换光标所在字符,先按r,然后输入替换字符
    • 10,100>:第10行至第100行缩进,与之对应的有反缩进<
  2. 输入模式:在命令模式下按下i就进入了输入模式

    • esc:退出输入模式
  3. 底线命令模式:在命令模式下按下英文冒号:就进入了底线命令模式。

    • q:退出程序
    • w:保存文件
  4. 可视化模式

    • v:进入字符可视化模式
      • w:选中至下一个单词的开头
      • $:选中该行的其余部分
      • u/U:大小写转换
    • V:进入行可视化模式
    • ctrl+v:进入块可视化模式

二、常用快捷键

  1. 大小写转换~

  2. 将光标移动到词尾eE

  3. 将光标移动到行尾$

    • 将光标移动到行首^或数字0
      • ^是行首的第一个字符位置,不包含空格
      • 0则是真正的行首,可以是空格
  4. 将光标移动到下一行行首+(不包含空格)

    • 将光标移动到上一行行首-(不包含空格)
  5. 向前查找光标所在单词#

    • 向后查找光标所在单词*
  6. 将光标移到下一个单词wW

    • 将光标移到上一个单词bB
  7. 跳转到配对的括号()%

  8. 向前跳转到代码块的开头处[[

    • 向后跳转到代码块的结尾处]]
  9. 将光标移动到文件开头gg

    • 将光标移动到文件末尾G
  10. 多文件切换(底角命令模式下)

    • 查看当前编辑的文件:f
    • 查看打开的文件列表:ls:files:buffers
    • 切换指定的文件:b 文件序号
    • 切换下一个文件:n(:2n下下个,以此类推)
    • 切换上一个文件:N(:2N上上个,以此类推)
    • 编辑上一个文档:e#ctrl+ˆ

三、各种删除

  1. 删除全文

    • 普通命令模式:ggdG
    • 底角命令模式:先G将光标移至文件末尾,shift + :进入底角命令模式,输入1,.d
  2. 删除到指定行

    • 删除1至9行
      • 普通命令模式下将光标移至第9行9G
      • 进入底角命令模式shift + :,输入1,.d删除至当前行(即第九行)
    • 删除9行至末尾
      • 将光标移至末尾
      • 进入底角命令模式shift + :,输入9,.d删除至当前行(即末尾)
  3. 删除字符

    • 删除光标所在字符:普通命令模式下x
    • 删除光标前一个字符:普通命令模式下X,即大写的x
  4. 删除单词

    • 删除到下一个单词开头:普通命令模式下dw
      • 光标在单词中间部分时则删除当前光标到下一个单词开头
    • 删除到本单词的末尾不包括标点:普通命令模式下de,光标在单词中间部分时则删除当前光标到当前单词词尾不包括标点
      • 删除到本单词的末尾并包括标点:普通命令模式下dE,光标在单词中间部分时则删除当前光标到当前单词词尾并包括标点
    • 删除到前一个单词开头不包括标点:普通命令模式下db,光标在单词中间部分时则删除当前光标到当前单词开头不包括标点
      • 删除到前一个单词开头并包括标点:普通命令模式下dB,光标在单词中间部分时则删除当前光标到当前单词开头并包括标点
  5. 删除行

    • 删除一行:普通命令模式下dd
    • 删除光标所在处至末尾并将光标向前移:普通命令模式下D
    • 删除光标到行首:普通命令模式下d0

四、光标移动

以下命令不做特殊说明都是在普通模式下进行,普通模式也叫做命令行模式,另外还有一个底线命令行模式,注意区分。

  1. 字符移动:上下左右jkhl,也可用键盘上的方向键

    • 移动多个字符,如向左移动10个字符10j
  2. 单词移动

    • 下一个单词词首w

      • 多个单词如4w向后移动4个单词
      • 连续多个标点算一个单词
      • dw则是从光标处向后删除一个单词(不包含光标处),同理4dw从光标处向后删除4个单词
      • W同样可以实现向后移动,不同的是分隔符是空格,如以下文本,分别用8w8W可看出区别
        1
        Hello everyone, My name is panda, I'm from China, I love Bamboo.
    • 上一个单词词首b

      • 多个单词如4b向前移动4个单词
      • 连续多个标点算一个单词
      • B同样可以实现,同W一样以空格为分隔符
    • 下一个单词词尾e

      • 多个单词如4e向前移动4个单词并处于词尾
      • 连续多个标点算一个单词
      • db则是从光标处向前删除一个单词(不包含光标处)
      • E同样可以实现,同W一样以空格为分隔符
    • 快速移动到行首行尾

      • ^移动到行首
      • $移动到行尾
  3. 相对屏幕移动

    • control + f:向下翻页
    • control + b:向上翻页
    • control + e:逐行下滚
    • control + y:逐行上滚
    • H:移动到屏幕首行
    • L:移动到屏幕尾行
    • M:移动到屏幕中间
    • zt:将当前行置顶,即把当前行移动到屏幕首行
    • zz:将当前行移到屏幕中部
    • zb:将当前行移到屏幕底部
    • :数字:10:将光标到第10行
    • set nu或set number可以显示行号
    • gg:移动到文件首行
    • G:移动到文件尾行
    • /字符/test:查找test并移动到test所在行
    • ?字符则是反向查找,即向上查找
    • n:下一个
    • N:上一个
    • q/q?可以查看查找历史

五、设置缩进

  1. 普通模式(命令模式)

    • 单行操作
      • >>:当前行增加缩进
      • <<:当前行减少缩进
  2. 块可视化

    • 进入块可视化模式v/V/control+v
    • 使用jk或上下箭头选择代码块
    • 键入><进行缩进或回退
  3. 底线命令行模式

    • 多行操作:shift + :进入底线命令模式
    • 1,n>:1~n增加一个缩进
      • 1,n>>:1~n增加两个个缩进
    • 1,n<:1~n减少一个缩进
      • 1,n<:1~n减少两个缩进
  4. 插入模式

    • 进入插入模式
    • shift + control + t增加缩进
    • shift + control + d减少缩进(mac下组合键有冲突)
  5. 相关设置

    • shiftwidth:普通模式下<<>>时缩进的列数
    • tabstop:一个tab键所占的列数,linux内核代码建议每个tab占用8列
    • softtabstop:敲入tab键时实际占有的列数。
    • expandtab:输入tab时自动将其转化为空格
    • noexpandtab:取消输入tab自动转化为空格
    • autoindent:回车后自动缩进

六、选项设置

以下所有操作都是在shift + :进入底角命令模式后进行的

  1. 查看选项

    • 查看所有选项set all
    • 查看某个选项set 选项set 选项?
    • 查看非默认值的选项set
    • 查看某个选项的帮助信息help 选项
  2. 设置选项

    • 布尔值
      • 设置布尔值set 布尔选项
      • 关闭布尔值set no布尔选项
      • 反向布尔值set 布尔选项!set inv布尔选项
      • 设为默认值set 布尔选项&
        • 重置所有选项set all&
    • 数值
      • 设置数值set 数值选项 =数值
      • 增加数值set 数值选项 +=val
      • 减少数值set 数值选项 -=val
      • 乘以数值set 数值选项 ^=val
      • 恢复数值set 数值选项&
    • 字符串
      • 设置字符串set 字符串选项 =字符串
      • 在末尾追加set 字符串选项 +=字符串
      • 选项中移除set 字符串选项 -=字符串
        • 如果要移除的字符串有多个则默认移除第一个
      • 在开头追加set 字符串选项 ^=字符串
      • 设为默认值set 字符串选项&
    • 设置多个set 选项1 选项2 ...,以空格隔开

七、参考

  1. 参考一
  2. 参考二
  3. 参考三