学习过程中还是觉得 vim 好用,所以让查老师总结了一份常用操作,加油 😃
核心哲学:模式化编辑
首先要理解 Vim 的不同模式,这是所有快捷键的基础:
- 普通模式 (Normal Mode) :默认模式。用于移动光标、复制、粘贴、删除等操作。按
Esc键从任何其他模式返回。 - 插入模式 (Insert Mode) :用于输入文本。从普通模式按
i(insert),a(append),o(open new line) 等键进入。 - 可视模式 (Visual Mode) :用于选择文本。从普通模式按
v(字符选择),V(行选择),Ctrl+v(块选择) 进入。 - 命令模式 (Command Mode) :用于执行命令(如保存、退出、搜索替换)。从普通模式按
:进入。
一、移动光标 (普通模式下)
基本移动 (HJKL)
h- 左j- 下k- 上l- 右
单词移动
w- 移动到下一个单词开头e- 移动到当前或下一个单词末尾b- 移动到上一个单词开头ge- 移动到上一个单词末尾W,E,B- 以空格分隔的"大字"单词为单位移动(更快)
行内移动
0- 移动到行首^- 移动到本行第一个非空白字符$- 移动到行尾g_- 移动到行尾非空白字符f{字符}- 向前 搜索并移动到某个字符(如fa移动到下一个字母 'a')F{字符}- 向后搜索并移动到某个字符t{字符}- 移动到某个字符之前T{字符}- 反向移动到某个字符之前;- 重复上一次f,t,F,T操作,- 反向重复上一次操作
屏幕移动
gg- 移动到文件第一行G- 移动到文件最后一行:{行号}- 移动到指定行(如:55跳到第55行)Ctrl + f- 向下翻一页Ctrl + b- 向上翻一页Ctrl + d- 向下翻半页Ctrl + u- 向上翻半页H- 移动到当前屏幕的顶部M- 移动到当前屏幕的中间L- 移动到当前屏幕的底部zz- 将当前行置于屏幕中央
二、编辑操作
进入插入模式
i- 在光标前插入a- 在光标后插入I- 在行首插入A- 在行尾插入o- 在当前行下方新建一行并插入O- 在当前行上方新建一行并插入s- 删除当前字符并插入S- 删除当前行并插入C- 删除从光标到行尾的内容并插入(相当于c$)
删除/剪切 (配合文本对象,威力无穷)
x- 删除当前字符X- 删除前一个字符d{motion}- 删除移动命令所覆盖的文本(核心命令 )dw- 删除到下一个单词开头de- 删除到单词末尾d$/D- 删除到行尾d0- 删除到行首dd- 删除整行dgg- 删除到文件开头dG- 删除到文件结尾
{数字}dd- 删除多行(如3dd删除3行)
复制 (Yank)
y{motion}- 复制移动命令所覆盖的文本yw- 复制一个单词yy/Y- 复制整行y$- 复制到行尾
{数字}yy- 复制多行
粘贴 (Put)
p- 在光标后粘贴P- 在光标前粘贴
撤销与重做
u- 撤销Ctrl + r- 重做
三、文本对象 (超级强大!)
操作 d (删除), y (复制), c (修改), v (选择) 的利器。
i+对象- inside ,操作对象内部的文本a+对象- around ,操作对象以及周边的文本(比如包括引号本身)
常用对象:
w- 单词s- 句子p- 段落',", ````` - 引号(,),b- 小括号 ( )[,]- 中括号 [ ]{,},B- 大括号 { }t- XML/HTML 标签
示例:
diw- 删除光标所在的单词(不包括周围空格)ci"- 修改双引号内的内容(删除并进入插入模式)yap- 复制整个段落vat- 选择整个 XML/HTML 标签及其内容
四、查找与替换
查找
/pattern- 向下搜索模式?pattern- 向上搜索模式n- 继续下一个匹配项N- 继续上一个匹配项*- 向下搜索光标所在的单词#- 向上搜索光标所在的单词
替换 (命令模式)
:s/old/new- 将当前行的第一个old替换为new:s/old/new/g- 将当前行的所有old替换为new:%s/old/new/g- 将全文的所有old替换为new:%s/old/new/gc- 全文替换,但每次替换前需要确认:起始行,结束行s/old/new/g- 在指定行范围内替换(如:10,20s/foo/bar/g)
五、可视模式 (Visual Mode)
v- 进入字符可视模式V- 进入行可视模式Ctrl + v- 进入块可视模式(列模式)- 选中文本后,可以使用所有普通模式的编辑命令:
d,y,c,:s/old/new/等
六、窗口与标签页
窗口分割
:sp [文件名]- 水平分割窗口:vsp [文件名]- 垂直分割窗口Ctrl + w w- 在窗口间循环切换Ctrl + w h/j/k/l- 切换到左/下/上/右的窗口Ctrl + w =- 使所有窗口等宽等高Ctrl + w _- 最大化当前窗口高度Ctrl + w |- 最大化当前窗口宽度Ctrl + w c/:q- 关闭当前窗口Ctrl + w o- 关闭其他所有窗口
标签页
:tabnew [文件名]- 新建标签页:tabc- 关闭当前标签页:tabo- 关闭其他所有标签页gt/:tabn- 切换到下一个标签页gT/:tabp- 切换到上一个标签页{数字}gt- 切换到第 N 个标签页
七、其他常用命令
.%- 跳转到匹配的括号(),{},[].- 重复上一次修改操作(极其强大)J- 将下一行合并到当前行(连接行)Ctrl + a- 将光标下的数字增加 1Ctrl + x- 将光标下的数字减少 1:r 文件名- 将文件内容插入到光标下方:r !命令- 将命令的执行结果插入到光标下方(如:r !date插入当前日期)
学习建议
- 不要死记硬背 :打开
vimtutor(在终端输入此命令),它是官方的最佳入门教程。 - 循序渐进 :先熟练掌握移动 (
h/j/k/l,w/b,gg/G)、进入插入模式 (i/a/o)、保存退出 (:wq)、撤销 (u)。 - 实践为主:在日常编辑中强迫自己使用,哪怕开始很慢。
- 掌握组合技 :理解
操作符 + 动作命令的模式(如d+w=dw)。这是 Vim 的灵魂。 - 探索文本对象:这是让你从 Vim 新手进阶为高手的关键。