Vim 命令
Vim 常用操作速查,移动/编辑/搜索/替换/窗口,一键复制
共 41 个脚本
基本光标移动 hjkl
Vim 的核心移动键:h 左、j 下、k 上、l 右。让双手不离开主键位即可完成移动。
按单词移动 w / b / e
w 跳到下一个单词开头,b 跳到上一个单词开头,e 跳到当前/下一个单词结尾。大写 W/B/E 以空白为分隔(忽略标点)。
行首 / 行尾 0 ^ $
0 跳到行首第一个字符,^ 跳到本行第一个非空白字符,$ 跳到本行最后一个字符。
文件首尾 gg / G
gg 跳到文件第一行,G 跳到文件最后一行。前面加数字可跳到指定行,如 42G 跳到第 42 行(也可用 :42)。
行内查找字符 f / F / t / T
f<char> 向后查找本行下一个指定字符并把光标移到该字符上,F 向前查找,t 移到目标字符前一位,T 反向。; 重复上次查找,, 反向重复。
段落与配对跳转 { } %
{ 跳到上一空行(段落开头),} 跳到下一空行(段落结尾)。% 在配对的括号 ()[]{} 之间来回跳转,调试代码块时极有用。
屏幕滚动 H M L
H 跳到屏幕顶部,M 跳到屏幕中部,L 跳到屏幕底部。便于快速定位到当前可视区域的不同位置。
屏幕滚动 Ctrl-d/u/e/y/f/b
Ctrl-d 向下半屏、Ctrl-u 向上半屏;Ctrl-f 向下整屏、Ctrl-b 向上整屏;Ctrl-e 向下滚一行、Ctrl-y 向上滚一行。zz 把当前行滚到屏幕正中。
进入插入模式 i / a / o
i 在光标前插入,a 在光标后追加,o 在下方新开一行并进入插入模式。对应大写 I/A/O 分别在行首/行尾/上方新行。
删除 d / x / dd
dd 删除整行,dw 删除到下个单词开头,de 删除到单词结尾,d$ 删除到行尾,x 删除光标处单个字符。大写 D 等同于 d$。
修改 c / cc / C
c 是「删除并进入插入模式」。cw 改一个单词,cc 改整行,c$ 改到行尾。大写 C 等同于 c$。
复制 y / 粘贴 p
y 复制(yank),yy 复制整行,p 在光标后粘贴,P 在光标前粘贴。Vim 中「删除」的内容也会进入寄存器,可直接用 p 粘贴。
替换 r / R
r<char> 替换光标处单个字符,R 进入连续替换模式(覆盖式输入)。比进入插入模式更快的单字符修改。
合并行 J / 反转大小写 ~
J 把下一行合并到当前行尾(用空格连接),3J 合并 3 行。~ 反转光标处字符大小写,3~ 反转 3 个字符。
撤销 u / 重做 Ctrl-r
u 撤销上次修改,U 撤销对整行的所有修改,Ctrl-r 重做(redo)。这是 Vim 最基础的安全网。
重复上次修改 .
英文句号 . 重复上一次的修改命令(删除、插入、替换等)。Vim 最强大的键之一,配合查找可批量修改。
缩进 >> <<
>> 向右缩进一级,<< 向左缩进一级,== 自动缩进当前行。在可视化模式下对选区用 > < = 可批量调整缩进。
搜索 / ? * #
/ 向后搜索,? 向前搜索,n 重复上一次搜索方向,N 反向。* 搜索光标下的单词(向后),# 搜索光标下的单词(向前)。
大小写敏感搜索
默认搜索区分大小写。在模式后加 \c 忽略大小写,加 \C 强制区分。也可用 :set ignorecase 全局设置。
替换本行 :s
:s/old/new/ 替换本行第一个 old 为 new,加 g 替换本行所有,加 c 每次确认。
全文件替换 :%s
:%s 表示对整个文件操作。这是 Vim 最常用的批量替换命令,相当于 sed 的全文替换。
按范围替换
:N,Ms/old/new/g 替换第 N 到 M 行之间的内容。也可在可视化模式选中后按 : 自动填入范围 '<,'>。
取消高亮 :noh
搜索后匹配项会一直高亮,:nohlsearch(简写 :noh)临时取消高亮,下次搜索时恢复。
字符可视化 v
按 v 进入字符可视化模式,移动光标选中文本。选中后可对其执行 d(删)、y(复制)、c(改)、>(缩进)等操作。
行可视化 V
V 进入行可视化模式,整行整行地选中。适合批量缩进、注释、删除多行。
列可视化 Ctrl-v
Ctrl-v 进入列(块)可视化模式,可选中一个矩形区域。最强大的功能之一:批量给多行加注释、批量修改某一列字符。
可视化模式下的操作
选中后:d 删除、y 复制、c 修改、> 缩进、~ 反转大小写、U 转大写、u 转小写、: 对选区执行命令。
保存与退出
:w 保存,:q 退出,:wq 保存并退出,:q! 强制不保存退出,:x 保存(有改动时)并退出。ZZ 等同 :x,ZQ 等同 :q!。
打开文件 :e
:e 打开文件,支持 Tab 补全路径。:e! 放弃当前改动重新载入。
分屏 :split / :vsplit
:split 水平分屏,:vsplit 垂直分屏。Ctrl-w 加 hjkl 在窗口间切换,Ctrl-w 加 +/-/= 调整窗口大小。
标签页 :tab
Vim 的标签页每个可装多个窗口。:tabnew 新建标签页,gt/gT 切换,:tabclose 关闭。
缓冲区 :ls / :b
Vim 把打开过的文件都放在缓冲区。:ls 列出,:b N 切到第 N 个,:bn/:bp 下/上一个。
读写外部命令 :! :r!
:!cmd 执行 shell 命令,:r!cmd 把命令输出插入到光标下方,:.!cmd 用命令输出替换当前行。
录制与回放宏 q
q<reg> 开始录制宏到寄存器(如 qa 录制到 a),再按 q 结束。@a 回放宏,@@ 回放上次的宏,5@a 回放 5 次。批量处理重复操作的神器。
寄存器 "x
Vim 用寄存器存放文本。"ayy 把整行复制到寄存器 a,"ap 粘贴寄存器 a。:reg 查看所有寄存器。+ 寄存器对应系统剪贴板。
标记 m
m<x> 在当前位置设置标记 x(如 ma 设标记 a),`<x> 跳回标记位置,'<x> 跳到标记所在行首。大写标记(mA)跨文件有效。
跳转列表 Ctrl-o / Ctrl-i
Vim 记录跳转历史。Ctrl-o 跳回上一个位置,Ctrl-i(Tab)跳到下一个位置。跨文件跳转也记录。修改大文件时来回查看定义极有用。
跳转到定义 gd / gD
gd 跳转到光标下变量的局部定义(同一函数内),gD 跳转到全局定义。配合 tags(ctags)可跨文件跳转。
文本对象 ci" / da(
文本对象让操作「以结构为单位」。ci" 改双引号内的内容,da( 删除含括号的整块,cit 改 HTML 标签内容。i=inside,a=around。
常用 :set 选项
运行时调整编辑器行为。写入 ~/.vimrc 持久生效。num/ru/ai/hls/is 等是最常配置的选项。
查看帮助 :help
:help(简写 :h)打开内置文档。可指定主题,如 :h :s 查看 :s 命令的帮助,:h i_ctrl-n 查看插入模式快捷键。