MeiK/VIM 命令学习

Created Tue, 26 Jun 2018 20:55:35 +0000 Modified Fri, 11 Oct 2019 16:58:35 +0800
989 Words

参考

Insert 模式

  • esc ,退出 Insert 模式,进入 Normal 模式

Normal 模式

  • i ,进入Insert 模式
  • x ,删除当前光标所在位置的字符
  • s ,删除当前光标所在位置的字符并进入 Insert 模式
  • w ,保存,后面可以加文件名
  • q ,退出
  • q! ,强制退出,不保存修改内容
  • :wq ,保存 + 退出, w 后面可以加文件名
  • dd ,删除当前行,并把删除的行存入剪切板内
  • p ,粘贴剪切板
  • h , ←
  • j , ↓
  • k, ↑
  • l , →
  • :help <command> , 显示相关命令的帮助

各种插入模式

基本插入

  • i ,在当前光标前插入
  • I ,在当前行第一个非空白符前插入
  • gI ,在当前行的开头插入
  • a ,在当前光标后插入
  • A ,在当前行末尾插入
  • o ,在当前行后插入一个新行
  • O ,在当前行前插入一个新行
  • :r !date ,在光标处插入当前日期时间
  • :r !<command> 可以将 shell 命令的输出插入当前文档

改写插入

  • cw ,替换从光标所在位置后到一个单词结尾的字符
  • c[n]w ,替换光标所在位置后 n 个单词,与 [n]cw 作用相同
  • cl ,替换光标所在位置后的 1 个字符
  • c[n]l ,替换光标所在位置后 n 个字符,与 [n]cl 作用相同
  • ch ,替换光标所在位置前 1 个字符
  • c[n]h ,替换光标所在位置前 n 个字符,与 [n]ch 作用相同
  • cc ,替换光标所在行
  • c[n]c ,替换光标所在行及向下的共 n 行,与 [n]cc 作用相同
  • s ,替换光标所在位置的字符
  • [n]s ,替换光标所在位置及之后的共 n 个字符
  • S ,替换光标所在行
  • [n]S ,替换光标所在行及向下的共 n 行

移动光标

随机移动

  • hjkl ,←↓→↑
  • gj ,移动到一段内的下一行
  • gk ,移动到一段内的上一行
  • w ,后移一个单词,到下一个单词开头
  • W ,后移一个单词,到下一个单词开头,会忽略一些标点符号
  • e ,类似 w ,不过是停留在下一个单词结尾
  • E ,类似 E ,不过是停留在下一个单词结尾
  • b ,前移一个单词,停留在开头
  • B ,前移一个单词,停留在开头,忽略一些标点符号
  • ge ,前移一个单词,停留在结尾
  • gE ,前移一个单词,停留在结尾,忽略一些标点符号
  • ( ,前移一句
  • ) ,后移一句
  • { ,前移一段
  • } ,后移一段
  • +<enter> ,将光标移动到下一行的第一个非空白字符处
  • - ,将光标移动到上一行的第一个非空白字符处
  • f[c] ,将光标移动到同一行的下一个 c
  • F[c] ,将光标移动到同一行的上一个 c
  • t[c] ,将光标移动到同一行的下一个 c
  • T[c] ,将光标移动到同一行的上一个 c
  • ; ,配合 fFtT 使用,重复一次刚刚的操作
  • , ,配合 fFtT 使用,反向重复一次刚刚的操作

匹配移动

  • /<pattern> ,搜索 pattern 的字符串,语法为正则表达式,可以按 n 切换到下一个匹配位置,按 N 切换到上一个匹配位置
  • 0 ,到该行开头
  • ^ ,到该行第一个非空白字符处
  • $ ,到该行末尾
  • g_ ,到该行最后一个非空白字符处