Vim

Table of contents

进入退出 Vim 编辑器

  • vim 文件名:进入 vim
  • ESC :q! :放弃所有改动并退出
  • ESC :wq :保存改动并退出

模式切换

  • ESC :正常模式
  • i :插入模式
  • v :视图模式(光标选取)
  • V:行视图模式(I多行插入)
  • CTRL-V:方块视图
  • R:替换模式

重复操作 (指令格式:operator+number+motion)

  • operator :操作符,比如 d 代表删除,c 代表修改
  • number:可以附加的数字,代表动作重复的次数
  • motion:在所操作的文本上的移动步长,例如 w 代表单词(word),$代表行末等等

光标移动

  • kjhl:上下左右
  • b:到前一个单词头部
  • w:到下一个单词头部
  • ge:到前一个单词尾部
  • e:到下一个单词尾部
  • 0:到行首
  • gg:到文件第一行
  • $:到行末
  • %:若当前位置是括号,则跳转至配对的括上
  • gd:跳转到变量定义处
  • :$G:到文件最后一行
  • CTRL-G:显示当前光标所在位置和文件状态信息
  • 行号+G:将光标移动至该行号代表的行
  • 行号+$:将光标移动至该行号末尾

插入

  • i:在光标前插入文本
  • I:在行首插入文本
  • a:在光标后添加文本
  • A:在行末添加文本
  • o:在光标所在行下方插入新行
  • O:在光标所在行上方插入新行

删除

  • x:删除光标所在位置的字符
  • d:删除视图模式下光标选中的部分
  • d$:删除光标当前位置到当前行末的部分
  • dd:删除整行

撤销

  • u:撤销上一个操作
  • U:撤销在一行中的改动
  • CTRL-R:回退撤销操作

修改

  • y:复制视图模式下光标选中的部分
  • yy:复制光标所在行
  • p:置入已删除或复制的部分
  • r:覆盖原位置上的单个字符
  • ce:替换光标当前位置到单词末尾的内容
  • c$:替换光标当前位置到行末的内容
  • ~:修改大小写

查找

  • /+字符串:在当前文档中正向查找该字符串
  • ?+字符串:在当前文档中反向查找该字符串
  • n:找到下一个匹配
  • N:反向找到下一个匹配
  • #:正向搜索当前单词
  • *:反向搜索当前单词
  • CTRL-O:跳转回较旧的位置
  • CTRL-I:跳转到较新的位置

替换 (指令格式::+range+s/old/new+/flag)

  • :21s/old/new:将21行第一个 old 替换为为 new
  • :21s/old/new/g:将21行所有的 old 替换为 new
  • :5,21s/old/new/g 将5到21行所有的 old 替换为 new
  • :.,21s/old/new/g 将当前行到21行所有的 old 替换为 new
  • :.+4,.+8s/old/new/g 将当前行+4到+8行所有的 old 替换为 new
  • :ls/old/new/g:将第一行所有的 old 替换 new
  • :$s/old/new/g:将最后一行所有的 old 替换为 new
  • :%s/old/new/g:将文件内所有的字符串 old 替换为新的字符串 new
  • :%s/old/new/gc:进行全文替换时询问用户确认每个替换
  • :%s/old/new/gi:进行全文替换时忽略大小写
  • :%s/old/new/gI:进行全文替换时敏感大小写

外部指令

  • :!command 用于执行一个外部命令 command。
  • :!dir:!ls:用于显示当前目录的内容
  • :!del FILENAME:!rm FILENAME:用于删除名为 FILENAME 的文件
  • :w FILENAME:可将当前 VIM 中正在编辑的文件保存到名为 FILENAME 的文件中
  • 视图模式下:w FILENAME:可将当前编辑文件中可视模式下选中的内容保存到文件 FILENAME 中
  • :r FILENAME:可提取磁盘文件 FILENAME 并将其插入到当前文件的光标位置后面
  • :r !dir:可以读取 dir 命令的输出并将其放置到当前文件的光标位置后面

设置

  • :set ic:set ignorecase:查找时忽略字母大小写
  • :set is:set incsearch:查找短语时显示部分匹配
  • :set hls:set hlsearch:高亮显示所有的匹配短语
  • :set noic:在选项前加上 no 可以关闭选项

窗口

  • sp:上下分割窗口
  • vsp:左右分割窗口
  • CTRL-W+[hjkl]:窗口切换