Vim 学习笔记
来源:
Vim 基础&高级技巧教学切合实际工作-第二期基础知识、基础操作
编辑器 (Vim)
Vim 编辑器三种模式
Vim 的使用 | 爱编程的大丙

一、Vim 模式
Normal 模式(所有输入都当成命令):操作文本、定位和移动等
Insert 模式(编辑器模式):文本编辑等
| 模式 | 进入方法 |
|---|---|
Normal模式 |
Esc进入Normal模式 (Ctrl+[) |
Insert模式 |
i进入Insert模式 (o、O、a、A、s、S) |
进入 Normal 模式推荐使用
Ctrl+[,这样手可以不用离开主键区
进入 Insert 模式上述 5 种方法的区别:i在当前光标前面输入文本;a在当前光标后面输入文本;o在当前光标所在行下面新建一行进行输入;O在当前光标所在行上面一行新建一行进行输入;A在当前光标所在行末尾进行输入;s删除光标处的字符,从删除的字符位置开始输入;S删除当前行,在当前行开始输入
1.Normal 模式
- 方向类
| 操作 | 命令 |
|---|---|
| 上下左右方向 | hjkl(左下上右) |
| 跳转到对应行 | LineNumber gg或LineNumber G或:LineNumber |
| 页首(第一行) | gg |
| 页尾(最后一行) | G |
| 行首 | 0 |
| 行尾 | $ |
| 下一个词组开头 | w&W(小写w以字符和空格划分词组,大写W以空格划分词组) |
| 下一个词组末尾 | e&E |
| 向前移到词组开头(返回到上一个词组) | b&B |
| 屏幕上顶部文本行 | H |
| 屏幕中间文本行 | M |
| 屏幕底部文本行 | L |
- 查找类
| 操作 | 命令 |
|---|---|
| 当前行向后查找 | 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! |
| 打开需要编辑文件 | :e {文件名} |
| 显示打开的文件缓存 | :ls |
| 水平分割窗口 | :sp |
| 垂直分割窗口 | :vsp |
| 光标在打开的屏幕之间切换 (按住 ctrl 然后按两次 w) | ctrl+w+w |
| 同时退出多个屏幕 | qall |
| 同时保存退出多个屏幕 | wqall |
| 分屏的同时指定打开的文件的名字 | sp 文件名 |
| 分屏的同时指定打开的文件的名字 | vsp 文件名 |
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 # 当前行替换匹配第一个 |
5. 执行命令
1 | :!shell 命令 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Thee!
评论




