vim教程
学习自:Linux vi/vim
0、常用(本节为常用指令,初学者请从第1节开始)
命令模式下:
- i:光标处输入
- a:光标后输入
- o:下一行输入
- u:后退一步(相当于CTRL+Z)
- CTRL+R:前进一步(相当于CTRL+Y)
- .:重复前一个动作(相当于再执行一次前一个动作)
- SHIFT+G:移到末尾
- 0或HOME:行首
- $或END:行尾
- d$:剪切光标到该行末尾所有字符
- dG:剪切光标到尾行所有字符
- d1G:剪切光标到首行所有字符
- dd:剪切当前行
- 数字+dd:剪切当前行及之后共n行
- yG:复制光标到尾行
- y1G:复制光标到首行
- yy:复制当前行
- p、P:行后/前粘贴
- g:移动至该行开头
- G:尾行
- GG:首行
- /word:向下查找
- ?word:向上查找
- n:重复查找并向下移动光标至找到的word
- N:重复查找并向上移动
- 取消查找时的高亮显示 :nohl
- 数字+方向:向指定方向移动若干个光标/行
- :set nu:显示行号 :set nonu:不显示行号
输入模式下:
- HOME:行首
- END:行尾
- pageup/pagedown:翻页
- ESC/CTRL+C:返回命令模式
1、何为vim
vim是从vi发展而来的一种文本编辑器,是一种程序开发工具。具有代码补全、编译、错误跳转等方便编程的功能。
vim官网:https://www.vim.org/
2、vim键盘图
3、vim模式
vim有3种模式:
- 命令(Command):该模式下敲击键盘会被识别为某个指令;
- 输入(Insert):输入、编辑文本;
- 末行(Last Line):也是一种命令模式
模式进入与转换
1)命令模式
①如何进入
刚刚启动vim时进入的就是vim模式。
在输入、末行模式下按ESC进入命令模式。
②常用的命令
- i a o:切换到输入模式;
- : :切换为末行命令模式。
- :wq :保存并退出
- x:删除光标所在处的字符
- u:后退一步(相当于CTRL+Z)
- CTRL+R:前进一步(相当于CTRL+Y)
- .:重复前一个动作(相当于再执行一次前一个动作)
命令模式只有一些最基本的命令,而末行命令模式可以输入更多命令。
③其他一些指令(有:的说明是在末行模式下)
命令模式下的数字,代表指令重复次数。
移动光标 |
|
h ← | 左移一个字符 |
j ↓ | 下 |
k ↑ | 上 |
l → | 右 |
数字+方向 例如:30h 30← |
向指定方向移动指定数量的光标 |
CTRL+ F 或 Page Down | 下移一页 |
CTRL + B 或 Page Up | 上移一页 |
CTRL + D | 下移半页 |
CTRL + U | 上移半页 |
+ | 移动到下一行(该行第一个非空格符(Space)之后) |
- | 移动到上一行(该行第一个非空格符(Space)之后) |
数字+空格(space) | 右移指定光标(区别于数字+→,这里可以跨行) |
0或HOME | 移动至该行首 |
$或END | 移动至该行末尾 |
H(Head) | 移动至屏幕最上方那行行首 |
M(Median) | 移动至屏幕中间那行行首 |
L(Last) | 移动至屏幕末尾行行首 |
g | 移动至文档该行开头 |
G | 移动至文档尾行 |
数字+G | 移动至文档第几行 |
GG | 移动至文档首行,相当于1G |
数字+ENTER | 光标下移n行(等同步于 数字+↓+ENTER) |
查找 |
|
/word | 向光标之下查找所有word |
?word | 向光标之上查找所有word |
n | 重复上一次查找结果,并向下移动至下一个查找到的word字符首 |
N | 重复上一次查找结果,并向上移动至下一个查找到的word字符首 |
使用/word + n/N可以实现不停地向上/向下定位到某个想要字符处 | |
替换 |
|
:n1,n2s/word1/word2/g |
在n1和n2行(这两行都包含)之间查找word1,并将其替换为word2。 :100,200s/vbird/VBIRD/g
|
:1,$s/word1/word2/g 或 :%s/word1/word2/g |
从首行到尾行查找word1,并将其替换为word2 |
:1,$s/word1/word2/gc 或 :%s/word1/word2/gc |
从首行到尾行查找word1,并将其替换为word2。 但在替换前会让用户确认 |
删除、剪切 |
|
x或DEL | 删除光标后的字符 |
X或BACKSPACE | 删除光标前的字符 |
数字+x | 连续删除若干个光标后的字符 |
dd | 剪切光标所在行 |
数字+dd | 剪切光标后若干行 |
d1G | 剪切光标到首行所有行 |
dG | 剪切光标到末行所有行 |
d$ | 剪切光标到该行末尾所有字符 |
d0 | 剪切光标到该行行首所有字符 |
复制、粘贴 |
|
yy | 复制光标所在行 |
数字+yy | 复制光标向下若干行 |
y1G | 复制光标行至首行的所有行 |
yG | 复制光标行至尾行的所有行 |
y0 | 复制光标至该行行首所有数据 |
y$ | 复制光标至该行行尾所有数据 |
p | 粘贴在光标下一行(不会覆盖该行) |
P | 粘贴在光标上一行(不会覆盖该行) |
J | 合并光标及下一行为一行 |
cc | 清空某行字符,并在该行进入编辑模式 |
C | 清空光标至该行尾的字符,并在光标处进入编辑模式 |
切换编辑模式(切换后左下角会出现INSERT或REPLACE字样) |
|
i | 从光标处输入 |
I | 从光标行首第一个非空格字符处输入 |
a | 从光标后一个字符处输入 |
A | 从光标行尾处输入 |
o | 在当前光标下一行输入新的一行 |
O | 在当前光标上一行输入新的一行 |
r | replace模式,替换光标处的字符 |
R | replace模式,一直替换下去,直到按ESC |
ESC | 退出编辑模式 |
切换至末行模式(此时命令会跳转到最后一行,并以:开始) |
|
存储文件、离开退出 |
|
:w | 将编辑的文件写入硬盘中 |
:w! | 强制写入(用于只读模式) |
:q | 离开vi |
:q! | 强制离开(不保存档案) |
:wq | 存储后离开 |
:wq! | 强制存储后离开(等同于按CTRL Z) |
!代表强制 | |
ZZ | 保存文件(如果修改过)并退出 |
ZQ | 不保存并强制退出 |
:w 文件名 | 另存为新文件 |
:r 文件名 | 读入另一个文件,以追加的形式加入当前光标行之后 |
:n1,n2 w 文件名 | 将行n1至n2间的内容另存为新文件 |
:! 命令 |
暂时离开末行模式,到命令模式下执行命令并显示结果。 |
vim环境变更 |
|
:set nu | 显示所有行号 |
:set nonu | 取消行号 |
2)输入模式
①如何进入
在命令模式下按i、a、o进入命令模式
②按键
- BACKSPACE←:删除(光标处)单个字符
- DEL:删除光标后的单个字符
- ↑↓←→:移动光标
- HOME/END:移动光标至行首/行尾
- Page Up/Page Down:翻页
- Insert:切换为替换模式,此时会覆盖文本而不是插入
- ESC/CTRL+C:切换到命令模式
3)末行命令模式
①如何进入
在命令模式下按:(英文冒号)进入末行命令模式;
②与命令模式区别
末行命令模式可以输入单个/多个字符的命令,因此可用命令更多。
③基本命令(这些命令不一定要写到多行,可以写到同一行,每多一个字符就代表多一个指令和功能)
- q:退出程序
- w:保存文件
- wq:保存并退出
- ESC:退出末行命令模式
4、用法
1)创建/进入文件,并进入命令模式
①指令
-
vim 文件:打开指定文件
vim /test/a.txt
- vim +n 文件:打开指定文件,移动至第n行(+号是语法,不能省略)
vim +3 /test/a.txt
- vim +/关键字 文件:打开指定文件,并高亮关键字
vim +/root /test/a.txt
②示例
vim test.txt
初始页面
2)编辑模式
①指令
-
进入
在命令模式下按i,a,o进入编辑模式,此时左下角状态栏出现INSERT字样。
此时除了ESC,其他按键都视为一般输入按钮。
-
回到命令模式:ESC
- 保存并退出:在命令模式下输入 :wq(其实就是末行模式下输入wq)