vi编辑器作为Linux下应用最广泛的文本编辑器,在我们日常工作中几乎都会用到vi编辑器。
vi编辑器有三种操作模式:命令模式、插入模式、末行模式。
1、命令模式(command mode)—执行命令
在该模式中,可以输入命令来执行许多种功能。控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。
2、输入模式(Insert mode)—输入文本
vi被运行时,通常处在命令模式下,键入以下命令 可以使vi退出命令模式,进入输入模式:I(i)、A(a)、O(o)。
3、末行模式(last line mode)—执行待定命令
将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。不过一般我们在使用时把vi简化成两个模式,就是将末行模式(last line mode)也算入命令行模式command mode)。
三种模式的切换:
命令模式<------->插入模式
我们使用vi打开一个文件,默认模式就是命令模式,键入’a’或’i’就会进入插入模式,在插入模式下按下Esc键就重新回到了命令模式。
命令模式<------->末行模式
在命式模式时键入’:’即可进入末行模式,在末行模式下按下Esc键就重新回到了命令模式。
插入模式<==>末行模式
在插入模式想进入末行模式,先按下Esc键就进入命令模式,再键入’:’即可进入末行模式
在末行模式想进入插入模式,先按下Esc键就进入命令模式,再键入’a’或’i’就会进入插入模式
命令模式:
操作命令 | 作用 |
---|---|
i | 进入插入模式 |
a | 将光标移至当前所在位置的右侧,并进入插入模式 |
o | 在光标所在行下一行增添新行,并进入插入模式 |
O | 在光标所在行上一行增添新行,并进入插入模式 |
I | 将光标定位到行开头,并进入插入模式 |
A | 将光标定位到行末尾,并进入插入模式 |
u | 撤销最近一次的操作 |
U | 撤销所有操作 |
dd | 删除光标所在的行 |
ndd(n表示数字) | 以光标所在行为第一行,删除n行 |
x | 删除光标所在为的字符 |
~ | 改变当前光标所在字符大小写(大写变小写,小写变大写) |
dw | 删除当前字符到单词尾所有字符 |
yy | 复制当前光标所在行 |
nyy | 复制n行 (当前光标以下n行) |
yw | 复制光标所在位置到单词尾字符(不包括空格)的内容到vi缓存区,相当于复制一个单词 |
nyw | 复制n个单词 |
l(小写的L) | 光标右移 |
nl | 光标右移n个字符 |
h | 光标左移 |
nh | 光标左移n个字符 |
j | 光标下移 |
nj | 光标下移n个字符 |
k | 光标上移 |
nk | 光标上移n个字符 |
G | 移动光标到文件末尾 |
gg | 移动光标到文件开头 |
w | 移动光标到下一个单词开头 |
e | 移动光标到当前或下一个单词结尾 |
b | 移动光标到当前或下一个单词开头 |
0(数字0) | 移动光标到行首 |
$ | 移动光标到行末 |
n+ | 将光标下移n行 |
n- | 将光标上移n行 |
nG | 将光标定位到第n行的开头 |
n$ | 将光标下移n行并置于行尾 |
H | 移动光标到屏幕最顶行 |
L | 移动光标到屏幕最底行 |
M | 移动光标到当前屏幕中间行 |
u | 撤销最近一次的操作 |
U | 撤销所有操作 |
末行模式:
操作命令 | 作用 |
---|---|
:w | 保存文件 |
:q | 退出vi编辑器 |
:q! | 强制退出vi编辑器(不保存) |
:set number | 显示行号 |
:set nonumber | 取消行号显示 |
:set readonly | 设置文件只读 |
:s/old/new | 在一行内替换头一个字符串old为新的字符串new |
:s/old/new/g | 在一行内替换所有的字符串old为新的字符串new |
:m,ns/old/new/g | 用new替换第m行至第n行的所有old |
:%s/old/new/g | 用new替换所有的old |
:m,nd | 删除第m至第n行的内容 |
:m,ny | 复制第m行到第n行的内容 |
:n | 将光标移到第n行 |
:wq | 保存文件并退出vi编辑器 |
:w filename | 存入指定文件 |