Vim 的常用命令
基于 Vscode 中的 Vim,可以查看之 Vscode 配置 vim 能有助于使用
这里同时还有一份 Vim 的备忘单:[Vim Cheat Sheet]https://vim.rtorr.com/lang/zh_cn)
一、Vim 的模式
- normal 模式: 大部分命令执行
- insert 模式: 实现对文件内容的执行
- visual 模式: 实现多行的编辑
- vim 命令模式: 实现文本内容之外的操作
模式之间的转换:
-
normal --> insert
i : 在光标前插入 insert
I : 在光标后插入 Insert in header
o : 在下一行插入 one line insert
O : 在上一行插入 One Line Insert before
a : 在光标后插入 after
A : 在行尾插入 after the end of a line
这里 c(change) 类命令也会将 normal 模式转换为 insert 模式,同时,还有其他几个字符,这里未记录完全
-
insert --> normal
esc 或者用户定义映射到 esc 的组合或者单独的按键: 大部分人会使用 Caps Lock 或者 j + j 绑定为 esc
-
normal --> visual
v/V
-
visual --> normal
esc 或 再按一次 v/V
-
normal --> 命令模式
: -
命令模式 --> normal
清除命令 或 Esc 键
二、Vim 的常用命令
1. 光标移动
- 上下左右: k j h l
- 向上翻页: ctrl + b(back)
- 向下翻页: ctrl + f(forward)
- 跳到单词开头: w (往后查找) b(before 往前)
- 跳到单词结尾: e (往后查找) ge(往前查找)
- 跳到行首: 0 或者 ^(跳到从行首开始的第一非空字符)
- 跳到行尾: $
- 跳到第一行: gg
- 跳到最后一行: G
- 往前跳十九行: ctrl u
- 往后跳十九行: ctrl d
- 跳到指定行: linenumber gg (行号 + gg: 40gg)
- 从当前行往下跳 num 行: num j (10 j)
- 从当前行往前跳 num 行: num k (10 k)
- 跳到下个 {char} 所在位置: f {char}
- 跳到上个 {char} 所在位置: F {char}
- 跳到下个 {char} 的前一个字符位置: t {char}
- 跳到上个 {char} 的后一个字符位置: T {char}
- 重复上次的字符查找操作: ;
- 反向查找上次的查找指令: ,
2. 常用快捷
- 清除一行,更改内容: cc
- 清除多行,更改内容: c num c (c3c:清除三行)
- 删除一行: dd(delete)
- 删除一行: d num d
- 复制: yy(yanked)
- 修改: cc(change)
- 粘贴: p
- 撤销: u / shift + U
- 恢复上一步撤销: ctrl + r
- 更改单个字符内容: 光标选中字符, r {char} char 为更改后的字符
- 搜索:/keyword 键入 enter 后,按 n 跳转到下一个 keyword 开头,N 跳到下一个 keyword 开头
- 搜索:?keyword 往前搜索,跳转方式同上
- 取消搜索高亮: :noh
3. 动作(motion)
-
i:inner 选中成对符号内内容
- i" iw i(/ib i{/iB i’ i` i< i[ it is ip ie
-
a:around 选中成对符号内容
- a" aw a(/ab a{/aB a’ a` a< a[ at as ap
p:paragraph s:sentence t:tag b:bracket B:Bracket w:word e:entire
4. 操作符号
- d(delete):删除
- c(change):修改
- y(yank):复制
- v(visual):复制
5. 切换大小写
- U:将光标下的字符改成大写
- u:将光标下的字符改成小写
- ~:将光标下的字母改变大小写
- r:修改光标的下字符,r {char} 修改为 char 字符
- 3~:将光标开始位置的3个字母改变其大小写
- g~:改变当前的字母的大小写(大改小,小改大)
- gUU:将当前行的字母改成大写
- guu:将当前行的字母改成小写
- gUaw(gUiw):将光标下的单词改成大写
- guaw(guiw):将光标下的单词改成小写
许多操作都是结合了motion 进行选中
三、Tips
1. 代码中的操作(Tips)
- gd: goto define (跳转到函数定义)
- ^O:返回上一个窗口
- gh:函数的声明(参数)
- gt:往后标签页跳
- gT:往前标签页跳
- ctrl(command) + 0 :跳转到左侧文件栏
- jk:上下选择文