Vim学习
Vim模式
Vim 具有 6 种基本模式和 5 种派生模式,先学三种
- 普通模式(Normal mode)
在普通模式中,用的编辑器命令,比如移动光标,删除文本等等。这也是 Vim 启动后的默认模式。这正好和许多新用户期待的操作方式相反(大多数编辑器默认模式为插入模式)。
- 插入模式(Insert mode)
在这个模式中,大多数按键都会向文本缓冲中插入文本。大多数新用户希望文本编辑器编辑过程中一直保持这个模式。
在插入模式中,可以按
ESC键回到普通模式。
- 命令行模式(Command line mode)
在命令行模式中可以输入会被解释成并执行的文本。例如执行命令(
:键),搜索(/和?键)或者过滤命令(!键)。在命令执行之后,Vim 返回到命令行模式之前的模式,通常是普通模式。
编辑基本操作
-
Esc键进入普通模式
-
命令行模式中输入
wq回车后保存并退出 vim -
:进入命令行模式,输入w回车,保存文档,输入:w <filename>可以将文档另存为其他文件名或存到其它路径下。 -
命令行模式后输入
:e <filepath>可以打开相应文件 -
按下
i键进入插入模式 -
普通模式下
按键 说明 h左 l右(小写 L) j下 k上 w移动到下一个单词 b移动到上一个单词 命令 说明 i在当前光标处进行编辑 I在行首插入 A在行末插入 a在光标后插入编辑 o在当前行后插入一个新行 O在当前行前插入一个新行 cw替换从光标所在位置后到一个单词结尾的字符
退出vim
从普通模式输入 : 进入命令行模式,输入 wq 回车,保存并退出编辑。(先掌握这个)
以下为其它几种退出方式:
| 命令 | 说明 |
|---|---|
:q! |
强制退出,不保存 |
:q |
退出 |
:wq! |
强制保存并退出 |
:w <文件路径> |
另存为 |
:saveas 文件路径 |
另存为 |
:x |
保存并退出 |
:wq |
保存并退出 |
普通模式下退出 vim
普通模式下按下 Shift+zz 即可保存退出 vim。
删除文本
进入普通模式,使用下列命令可以进行文本快速删除:
| 命令 | 说明 |
|---|---|
x |
删除游标所在的字符 |
X |
删除游标所在前一个字符 |
Delete |
同 x |
dd |
删除整行 |
dw |
删除一个单词(不适用中文) |
d$或D |
删除至行尾 |
d^ |
删除至行首 |
dG |
删除到文档结尾处 |
d1G |
删至文档首部 |
除此之外,可以在命令之前加上数字,表示一次删除多行,如:
2dd 表示一次删除 2 行
d2w表示删两个单词
vim 重复命令
- 普通模式下
.(小数点)表示重复上一次的命令操作 - 普通模式输入
N<command>,N 表示重复后面的次数,表示重复几次命令
游标的快速跳转
行间跳转
| 命令 | 说明 |
|---|---|
nG(n Shift+g) / ngg |
游标移动到第 n 行 (如果默认没有显示行号,请先进入命令模式,输入 :set nu 以显示行号) |
gg |
游标移动到到第一行 |
G(Shift+g) |
到最后一行 |
小技巧:你在完成依次跳转后,可以使用 Ctrl+o 快速回到上一次(跳转前)光标所在位置
行内跳转
普通模式下使用下列命令在行内按照单词为单位进行跳转:
| 命令 | 说明 |
|---|---|
w |
到下一个单词的开头 |
e |
到当前单词的结尾 |
b |
到前一个单词的开头 |
ge |
到前一个单词的结尾 |
0或^ |
到行头 |
$ |
到行尾 |
f<字母> |
向后搜索<字母>并跳转到第一个匹配的位置(非常实用) |
F<字母> |
向前搜索<字母>并跳转到第一个匹配的位置 |
t<字母> |
向后搜索<字母>并跳转到第一个匹配位置之前的一个字母(不常用) |
T<字母> |
向前搜索<字母>并跳转到第一个匹配位置之后的一个字母(不常用) |
复制粘贴和剪切
复制及粘贴文本
- 普通模式中使用
y复制 - 普通模式中,
yy复制游标所在的整行(3yy表示复制 3 行) - 普通模式中,
y^复制至行首,或y0。不含光标所在处字符。 - 普通模式中,
y$复制至行尾。含光标所在处字符。 - 普通模式中,
yw复制一个单词。 - 普通模式中,
y2w复制两个单词。 - 普通模式中,
yG复制至文本末。 - 普通模式中,
y1G复制至文本开头。 - 普通模式中使用
p粘贴 - 普通模式中,
p(小写)代表粘贴至光标后(下) - 普通模式中,
P(大写)代表粘贴至光标前(上)
剪切及粘贴
其实 dd 删除命令就是剪切,每次 dd 删除文档内容后,便可以使用 p 来粘贴,也这一点可以实现一个很爽快的功能——交换上下行。
ddp,就这么简单,即实现了快速交换光标所在行与它下面的行。
Vim 查找替换
字符的替换及撤销(Undo 操作)
替换和撤销(Undo)命令
替换和 Undo 命令都是针对普通模式下的操作:
| 命令 | 说明 |
|---|---|
r+<待替换字母> |
将游标所在字母替换为指定字母 |
R |
连续替换,直到按下 Esc |
cc |
替换整行,即删除游标所在行,并进入插入模式 |
cw |
替换一个单词,即删除一个单词,并进入插入模式 |
C(大写) |
替换游标以后至行末 |
~ |
反转游标所在字母大小写 |
{n}u |
撤销一次或 n 次操作 |
U(大写) |
撤销当前行的所有修改 |
Ctrl+r |
redo,即撤销 undo 的操作 |
快速缩进
- 普通模式下输入
>>整行将向右缩进(用于格式化代码) - 普通模式下输入
<<整行向左回退 - 普通模式下输入
:进入命令行模式下对shiftwidth值进行设置可以控制缩进和回退的字符数
获取目前的设定值:
1 | :set shiftwidth? |
设置缩进为 4 个字符:
1 | :set shiftwidth=4 |
set ts=4设置tab缩进为4格
调整文本位置
命令行模式下输入 :ce(center)命令使本行内容居中:
1 | :ce |
命令行模式下输入 :ri(right)命令使本行文本靠右:
1 | :ri |
命令行模式下输入 le(left)命令使本行内容靠左:
1 | :le |
查找
快速查找
普通模式下输入 / 然后键入需要查找的字符串,按回车后就会进行查找。? 与/ 功能相同,只不过 ? 是向上而 / 是向下查找。
进入查找之后,输入 n 和 N 可以继续查找。n 是查找下一个内容,N 查找上一个内容。
命令行模式下输入 noh 然后回车即可取消搜索
高级查找
- 普通模式下输入
\*寻找游标所在处的单词 - 普通模式下输入
\#同上,但\#是向前(上)找,\*则是向后(下)找 - 普通模式下输入
g\*同\*,但部分符合该单词即可 - 普通模式下输入
g\#同\#,但部分符合该单词即可
功能设置
-
命令行模式下输入
: set cindent(cin)设置 C 语言风格缩进 -
命令行模式下输入
:set或者:se显示所有修改过的配置 -
命令行模式下输入
:set autoindent(ai)设置自动缩进 -
:set nu(显示行数)
- 標題: Vim学习
- 作者: sdjasj
- 撰寫于: 2022-02-27 10:12:20
- 更新于: 2022-02-27 13:23:43
- 連結: https://redefine.ohevan.com/2022/02/27/Vim学习/
- 版權宣告: 本作品采用 CC BY-NC-SA 4.0 进行许可。