Vim学习笔记
一、Vim模式
Normal模式(所有输入都当成命令):操作文本、定位和移动等
Insert模式(编辑器模式):文本编辑等
| 模式 | 进入方法 |
|---|---|
Normal模式 |
Esc进入Normal模式(Ctrl+[) |
Insert模式 |
i进入Insert模式(o、O、a、A) |
进入Normal模式推荐使用
Ctrl+[,这样手可以不用离开主键区进入Insert模式上述5种方法的区别:
i在当前光标前面输入文本;a在当前光标后面输入文本;o在当前光标所在行下面新建一行进行输入;O在当前光标所在行上面一行新建一行进行输入;A在当前光标所在行末尾进行输入
1.Normal/Insert模式
- 方向类
| 操作 | 命令 |
|---|---|
| 上下左右方向 | hjkl(左下上右) |
| 跳转到对应行 | LineNumber gg |
| 页首(第一行) | gg |
| 页尾(最后一行) | G |
| 行首 | 0 |
| 行尾 | $ |
| 下一个词组开头 | w&W(小写w以字符和空格划分词组,大写W以空格划分词组) |
| 下一个词组末尾 | e&E |
| 向前移到词组开头(返回到上一个词组) | b&B |
- 查找类
| 操作 | 命令 |
|---|---|
| 当前行向后查找 | f |
| 当前行向前查找 | F |
查找一对类如([{ |
% |
| 全局查找单词 | /+单词 n(查找下一个结果) N(查找上一个结果) |
| 查找当前光标下的单词 | *(查找下一个) #(查找上一个) |
- 删除、替换、粘贴、复制操作
| 操作 | 命令 |
|---|---|
| 删除一个字母 | x&X(小写x表示向后删除,大写X表示向前删除) |
| 替换当前字母 | r规则 r+a-zA-Z |
| 替换模式 | R(进入该模式,光标变为下划线模式,替换好后按Esc或Ctrl [进入Normal模式) |
| 复制 | y |
| 粘贴 | p |
| 删除 | d |
dd表示删除一行,也可以和其他”方向”等例如dw表示删除一个词组,d$表示从当前行光标处删除到末尾
yy表示复制当前行yw表示复制一个词组y$表示复制当前光标到行尾粘贴/删除命令都会将内容放入寄存器中,可以使用
p来粘贴
- 重复、数字+指令
| 操作 | 命令 |
|---|---|
| 重复上一次命令 | . |
| 数字+指令 | 例如:3dd d8j(删除当前行下面的8行) |
- 撤销、重做、保存
| 操作 | 命令 |
|---|---|
| 撤销(undo) | u |
| 重做(redo) | Ctrl+r |
| 保存 | :w |
| 退出 | :q |
| 保存并退出 | wq |
| 强制退出 | :q! |
2.Visual模式
使用
v进入该模式,相当于使用鼠标按住选择段落,选择后再使用命令对选择的段落进行处理,如d、x的删除操作
二、进阶操作
1.非Ctrl指令
| 操作 | 命令 |
|---|---|
| 删除当前光标至行尾并进入插入模式 | c/c$(与d$a等价) |
| 删除当前光标再进入插入模式 | s(与xi等价) |
对齐(行首输入=G将该文件进行对齐) |
= (=num 将光标到num行进行对齐) |
跳转到行首(与0不同的是该命令会忽略开头前的空格) |
^ |
跳转到行尾(与$不同的是该命令会忽略行尾后的空格) |
g_ |
| 向左缩进/向右缩进 | <</>>(num <<:包括光标在内num行向左缩进) |
| 删除一行并进入插入模式 | cc/S |
| 合并行(将下一行合并到当前行) | J |
选中一行进入visual mode |
V |
visual mode模式下大小写转换 |
u&U |
| 当前光标下的字母大小写互相转换 | ~ |
2.Noraml模式下ctrl指令
| 操作 | 命令 |
|---|---|
| 向下翻一页 | ctrl f |
| 向上翻一页 | ctrl b |
| 向下翻半页 | ctrl d |
| 向上翻半页 | ctrl u |
| 计数加一(光标往后寻找到的第一个数字加一) | ctrl a |
3.vi/yi/ci/di/va…
i表示in
vi(可以选中括号中的内容,若想把()包含进去则使用va(常用如下:
1
2
3 vi( vi[ vi< vi" vi' vi{ viw viW
va( va[ va< va" va' va{
ci( ciw等等
4.替换
1 | :s/search/replace # 当前行替换匹配第一个 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 theeの博客 🎉!
