Vim小抄

# VIM 入门
# Vim 模式
主要的 4 种模式:
- Normal 模式:默认进⼊的模式,也是最常⽤的模式
- Insert 模式:插⼊模式,像正常的⽂本编辑器⼀样输⼊
- Command 模式:命令模式,在底部输⼊命令
- Visual 模式:可视模式,对文本进行选择
# Normal 模式
hjkl:左上下右gg:跳到第一行G:跳到最后一行<Ctrl-u>、<Ctrl-b>:往上翻半页、一页<Ctrl-d>、<Ctrl-f>:往下翻半页、一页{lineno}gg:跳到第 lineno 行zz、zt、zb:光标行设置为 屏幕居中、屏幕第一行、屏幕最后一行
# Insert 模式
i:insert,当前光标之前开始输入I:本行开头进行输入a:append,当前光标之后开始输入A:本行末尾进行输入o:下方插入新的一行,输入O:上方插入一行,输入s:删除当前光标的字符,输入S:删除当前行,输入
# Command 模式
Normal 模式下输入 : 进入 Command 模式
:w:q:q!:wq:h {command}
<Esc> 回到 Normal 模式
# Visual 模式
- Normal 模式下按 v 进入可视模式
x、y:剪切、复制,回到 Normal 模式下p粘贴- Normal 模式下
V进入行可视模式,方便多行操作
<Esc> 回到 Normal 模式
# 移动与编辑
# 基于单词的移动
w:word,跳转到下个单词开头b:back,跳转到上个单词开头e:end,跳转到下个单词结尾ge:e 的反向,跳转到上个单词结尾
wbe 大写 WBE 对应连续的非空字符。
# 基于搜索的移动
行内搜索:
f{char}、t{char}:跳转到本行下个 char 字符出现处、出现前(till直到...前);、,:快速向后、向前重复 ft 查找F{char}、T{char}:往前搜索而非往后
文件中搜索:
/{pattern}:跳转到本文件下一个 pattern 出现的地方?{pattern}:跳转到本文件上一个 pattern 出现的地方- pattern 可以是正则表达式
*:等价于/{pattern},pattern 是当前光标下的单词nN:快速重复、查找
# 基于标记的移动
m{mark}:把当前位置标记为 mark- ``{mark}`:跳转到名为 mark 的标记位置
mark 是 a-z 的字符
常用场景:需要临时离开当前位置,操作后回到此处
内置标记:
- ``:上次跳转前的位置
- `.:上次修改的位置
- `^:上次插入的位置
# 其他实用跳转
^、$:行首和行尾%:将光标移动到任何一个括号上,按下%,光标会自动跳转到与其匹配的另一半括号上
# Operator+Motion=Action
{operator}{motion}:⼀次编辑动作
常见操作符:
- c:change,修改,删除内容并进入插入模式
- d:delete,删除
- y:yank,复制
- v:visual,可视模式
cc、dd、yy:将其作用在这一行上
例子:
dgg:删除到第一行ye:复制到单词结尾d$:删除到行尾dt;:删除只到分号为止的内容
# 重复操作
.:重复上次修改u:撤销上次修改<Ctrl-r>:重做上次修改
# 批量操作:数字+动作
{count}{action}:重复 count 次 action 动作
动作可以是移动动作或者编辑动作
例如:
- 4j:向下移动 4 行
- 3dw:删除 3 个单词
- 2yy:复制 2 行
- 4p:粘贴 4 次
# 相对行号
当涉及⾏操作时,使⽤相对⾏号能够更直观地确定范围
:set relativenumber:开启:set norelativenumber:关闭
# 文本对象操作
格式:i/a + 对象
常见对象:
- w、W,s,p:单词、句子、段落
- (/),[/],{/},</>,'/":配对符定义的对象
i 代表inner,内部
a 额外包括周围的空格或配对符

[count]{operator}{textobjects}
举例:
- diw:删除一个单词
- ci(:修改小括号内部
- yi{:复制大括号内部
通过组合 operator 与 textobjects ,可以对不同的语义对象实施不同的操作,不仅⼗分灵活,⽽且语义明确,容易记忆
配合 . 命令或 [count] 可以简单地完成多次对特定语义对象的操作
上次更新: 2025/12/31, 23:53:28