目录

Vim 常用命令

vimtutor zh_CN 进入《Vim 使用教程》

/images/vim_key.png

模式

  • ESC 返回正常模式
  • v 进入可视模式
  • R 进入替换模式

进入与退出

  • 进入:

    • vim 文件名 <回车> 普通进入
    • sudo vim 文件名 <回车> 管理员进入
  • 退去:

    • :q! 取消所有改动并退出
    • :wq 保存改动并退出

命令和对象

许多改变文本的命令都由一个操作符和一个动作构成 在正常模式下修改命令的格式是:

operator [number] motion

其中:

  • operator 操作符,代表要做的事情,比如 d 代表删除
  • [number] 可以附加的数字,代表动作重复的次数
  • motion 动作,代表在所操作的文本上的移动,例如 w 代表单词(word),$ 代表行末等等

撤销

  • u 撤销之前的操作
  • U 撤销在一行中所做的改动
  • CTRL-R 撤销之前的撤销命令

滚屏

  • CTRL-f 向上滚动一屏
  • CTRL-b 向下滚动一屏
  • CTRL-d 向下滚动半屏
  • CTRL-u 向上滚动半屏
  • CTRL-e 向上滚动一行
  • CTRL-y 向下滚动一行
  • zz 将当前行移动到屏幕中央
  • zt 将当前行移动到屏幕顶部
  • zb 将当前行移动到屏幕底部

定位及文件状态

  • G 使当前光标跳转到文件最后一行
  • gg 使当前光标跳转到文件第一行
  • CTRL-G 显示当前编辑的文件名和文件中光标位置

移动

  • k 向上移动光标
  • j 向下移动光标
  • h 向左移动光标
  • l 向右移动光标
  • 0 移动光标到行首
  • ^ 移动光标到行首-非空字符
  • $ 移动光标到行末
  • w 移动光标到下一个单词的开头
  • e 移动光标到下一个单词的末尾
  • b 移动光标到上一个单词的开头
  • ge 移动光标到上一个单词的开头
  • H 移动到屏幕顶部
  • L 移动到屏幕低部
  • :5 移动到第5行
  • 5| 移动到第5列

插入

  • i 从当前光标之前插入
  • a 从当前光标之后插入
  • I 从当前光标所在行首处插入
  • A 从当前光标所在行的末尾插入
  • o 在光标下方新的一行插入
  • O 在光标上方新的一行插入

删除

  • x 删除当前光标字符
  • dw 删除当前光标至下一个单词
  • d$D 删除当前光标至整行的末尾
  • dd 删除整行

复制

  • v 进入可视模式,移动光标选择要复制的字符
  • y 复制高亮的文本
  • yw 复制一个单词
  • y$ 复制当前光标至整行的末尾
  • yy 复制当前光标所在行

置入

  • p 将最后一次删除的内容置入光标之后

更改

  • ch 以输入的文本替代前一个光标
  • cls 以输入的文本替代当前光标
  • ccS 修改当前行
  • ce 以输入的文本替代光标所在单词的末尾
  • C 以输入的文本替代光标到所在行的末尾

替换

  • r [替换字符] 将当前光标所在位置的字符替换掉
  • R [替换字符…] 将当前光标所在位置的字符连续替换掉
  • :s/old/new 在一行内替换头一个字符串 old 为新的字符串 new
  • :s/old/new/s 在一行内替换所有到字符串 old 为新的字符串 new
  • :#,#s/old/new/g 在两行内替换所有到字符串 old 为新的字符串 new.其中 #,# 代表的是替换操作的若干行中首尾两行的行号
  • :%s/old/new/g 在文件内替换所有的字符串 old 为新的字符串 new
  • :%s/old/new/gc 进行全文替换时询问用户确认每个替换需添加 c 标志
  • :%s/^/hello/g 在每一行开头加入hello
  • :%s/$/hello/g 在每一行结尾加入hello
  • :%s/ *$//g 删除每行末尾无用空格

搜索类

  • /kim 在当前文件中从上到下查找 kim
  • /\cKim 在当前文件中从上到下查找 Kim 不区分大小写
  • /jo[ha]n 搜索 john 或 joan
  • ?kim 在当前文件中从下到上查找 kim
  • * 搜索当前光标下单词
  • n 查找同上一次的字符串
  • N 反向查找同上一次的字符串
  • ? [搜索字符] 在当前文件中逆向查找该字符串
  • CTRL-O 回到你之前的位置
  • CTRL-I 会跳转到较新到位置

大小写

  • Vu 整行小写
  • VU 整行大写
  • veu 单词小写
  • veU 单词大写

标记

  • m{a-z} 标记光标所在的位置,局部标记,只用于当前文件
  • `{a-z} 移动到标记位置

匹配命令

  • % 将光标放在)、]、},按下%会自动匹配对应到字符

自动补全

  • <TAB> 自己补全一个
  • CTRL-D 查看有可能的补全结果

外部命令

  • :!command 显示外部命令 command
  • :w FILENAME 将当前编辑文件保存到名为 FILENAME 的文件中
  • :r FILENAME 提取磁盘文件 FILENAME 并将其插入当前文件的光标位置后面

设置类命令的选项

  • :set
  • ic 忽略大小写
  • noic 禁用忽略大小写
  • is 查找短语时显示部分匹配
  • hls 高亮显示所有的匹配短语