光标移动

移动计数

  • [Number] [Motion] 重复动作多次,如6j向下移动6行

字符导航

  • h 向左移动光标
  • j 向下移动光标
  • k 向上移动光标
  • l 向右移动光标

单词导航

  • w 移动光标到下一个单词的开头
  • e 移动光标到当前单词的结尾
  • b 移动光标到上一个单词的开头
  • ge 移动光标到上一个单词的结尾

行导航

  • 0 跳到本行第一个字符
  • ^ 跳到本行第一个非空字符
  • $ 跳到本行最后一个字符
  • g_ 跳到本行最后一个非空字符
  • [Number]| 跳到本行指定列
  • f 在同一行向后搜索第一个匹配
  • F 在同一行向前搜索第一个匹配
  • t 在同一行向后搜索第一个匹配,并停在匹配前
  • T 在同一行向前搜索第一个匹配,并停在匹配前
  • ; 在同一行重复最近一次搜索
  • , 在同一行向相反方向重复最近一次搜索

句子和段落导航

  • ( 跳到前一个句子
  • ) 跳到下一个句子
  • { 跳转到上一个段落
  • } 跳转到下一个段落

匹配导航

  • % 查找配对的括号 )]}

行号导航

  • gg 跳转到第一行
  • G 跳转到最后一行
  • [Number] G 跳转到指定行,如 6G 移动到第6行
  • ctrl-g 显示当前光标所在行位置以及文件状态信息
  • :set relativenumber number 展示当前行号和其他行相对当前行的行号

窗格导航

  • H 跳转到屏幕的顶部
  • M 跳转到屏幕的中间
  • L 跳转到屏幕的底部
  • nH 跳转到距离顶部n行的位置
  • nL 跳转到距离底部n行的位置

滚动

  • ctrl-e 向下滚一行
  • ctrl-d 向下翻半页(d = down)
  • ctrl-f 向下一翻页(f = forword )
  • ctrl-y 向上滚一行
  • ctlr-u 向上翻半页(u = up)
  • ctrl-b 向上一翻页(b = backward)
  • zz 让光标所在的行居屏幕中央
  • zt 让光标所在的行居屏幕最上一行(t = top)
  • zb 让光标所在的行居屏幕最下一行(b = bottom)

搜索导航

  • / 向后搜索一个匹配
  • ? 向前搜素一个匹配
  • n 重复上一次搜索(和上一次方向相同)
  • N 重复上一次搜索(和上一次方向相反)
  • * 向后查找光标所在的完整单词
  • # 向前查找光标所在的完整单词
  • g* 向后搜索光标所在的单词
  • g# 向前搜索光标所在的单词
  • :set hlsearch 设置搜索高亮
  • :set incsearch 设置增量搜索,输入时不断匹配输入内容

位置标记

  • m[Mark] 用标签标记一个位置
  • '[Mark] 跳转到指定标签的行
  • `[Mark] 精确回到指定标签的位置(行和列)
  • :marks 查看所有标记

跳转

  • :jumps 查看跳转列表
  • ctrl-i 跳转到之后的位置
  • ctrl-o 跳转到之前的位置

编辑

  • i 在光标处,进入插入模式
  • a 在光标所在单词之后,进入插入模式
  • A 在光标所在行的行末,进入插入模式
  • o 在光标下方另起一行,进入插入模式
  • O 在光标上方另起一行,进入插入模式
  • c 更改(删除,并进入插入模式)
  • d 删除
  • y 复制
  • p 粘贴
  • u 撤销
  • ctrl-r 恢复撤销
  • x 删除光标后的一个字符
  • s 删除光标后的一个字符,进入插入模式
  • r 替换光标后的一个字符
  • R 连续替换光标后的多个字符

替换

  • :%s/old/new 将第一个查找到的old替换为new
  • :%s/old/new/g 将所有的old替换为new
  • :%s/old/new/gc 将所有的old替换为new,替换时需要确认
  • [Number],[Number]s/old/new/g 将指定两行的old替换为new

其它

  • :! [COMMAND] 执行外部命令
  • :w [FILENAME] 另存为文件
  • v :w [FILENAME] 在可视模式下,将选中内容另存为文件
  • :r [FILENAME] 粘贴文件内容
  • :r ![COMMOND] 粘贴外部命令输出

参考文档

  1. Learn-Vim_zh_cn
  2. vimtutor