文本编辑器vi命令
文本编辑器vi命令
1.概述
vi,是一款由加州大学伯克利分校,Bill Joy研究开发的文本编辑器
文本编辑器有很多,比如图形模式的gedit、kwrite、OpenOffice,文本模式下的编辑器有vi、vim。vi和vim是我们在Linux中最常用的编辑器,。vi或vim是Linux最基本的文本编辑工具
(注意:vi是unix/linux操作系统中最经典的文本编辑器,vim是vi文本编辑器的增强版本(最大的区别是有颜色区别),只能是编辑字符,不能对字体、段落进行排版;它既可以新建文件,也可以编辑文件;它没有菜单,只有命令,且命令繁多。)
2.作用
(1)创建或修改文本文件
(2)维护Linux系统中的各种配置文件
3.vi编辑器的工作模式
vi是一个多模式的软件,它有三种工作模式。在不同的工作模式下,它对输入的内容有不同的解释。
1). 命令模式(Command mode)
在命令模式下,输入的任何字符都作为命令来解释执行,屏幕上不显示输入内容。命令模式用于完成各种文本修改工作。
2). 输入模式(Insert mode)
在输入模式下,输入的任何字符都将作为文件的内容被保存,并显示在屏幕上。输入模式用于完成文本录入工作。
3). 末行模式(Last line mode)
末行模式也称为ex转义模式。在末行模式下 ,光标停留在屏幕的最末行,在此接收输入的命令并执行。末行模式用于执行一些全局性操作,如文件操作、参数设置、查找与替换、拷贝与粘贴、执行Shell命令等
vi编辑的格式:
vi 文件名
vim 文件名
!vim ##返回上一次编辑的文件
在文本编辑过程中,用户可以控制vi在这三种工作模式之间进行切换,完成各种编辑工作。三种模式之间的转换关系如下图所示。
如何从命令模式进入输入模式:按 a , i , o 键
如何从输入模式退回命令模式:按 ESC 键
如何从命令模式进入末行模式:按 shift 键 + 冒号引号 键
如何从末行模式退回命令模式:按 ESC 键
4.命令模式切换至输入模式
命令模式切换至输入模式 | 说明 |
---|---|
a: | 在当前光标位置之 后 插入内容 |
i | 在当前光标位置之 前 插入内容 |
o(小写) | 在光标所在行之 下 插入一个新行 |
O(大写) | 在光标所在行之 **上 ** 插入一个新行 |
A | 在所在行的 行尾 插入内容 |
l | 在所在行的 行首 插入内容 |
5.在命令模式中基本操作
操作类型 | 操作键 | 作用 |
---|---|---|
翻页操作 | Page Down键或 Ctrl + F | 向下翻动一整页内容 |
Page Up键或Ctrl + B | 向上翻动一整页内容 | |
行内快速跳转 | Home键或^键、数字0键 | 跳转到本行的行首 |
End键或者$键 | 跳转到本行的行尾 | |
行间快速跳转 | 1G或者gg | 转到文件内容的第一行 |
G | 跳转到文件内容的最后一行 | |
#G | 跳转到文件的第#行(#用具体的数字替换) | |
M | 跳转到当前页的中间位置 | |
删除替换字符 | x或Delete键 | 删除光标处的单个字符 |
dd | 删除光标所在行(有剪切功能) | |
#dd | 删除光标开始的#行内容 | |
d^ | 删除当前光标之前到行首的所有字符 | |
d$ | 删除当前光标处到行尾的所有字符 | |
R或Shift+r | 替换当前光标处字符 | |
复制 | yy | 复制当前行整行的内容到剪切板 |
#yy | 复制当前光标处开始#行内容到剪切板 | |
粘贴 | p | 粘贴到光标所在行之下 |
P(大写P) | 粘贴到光标所在行之上 | |
查找 | /word | 从当前光标处开始向后进行查找字符串“word” |
?word | 从当前光标处开始向前进行查找字符串“word” | |
n | 定位下一个匹配的被查找字符串 | |
N | 定位上一个匹配的被查找字符串 | |
撤销 | u | 撤销上次命令(可一直对回到最初) |
U | 为对其他行进行修改默认撤回当前行编辑,对其他行进行修改只会撤回上一次操作的所在行 |
6.在末行模式中操作
操作类型 | 操作类 | 作用 |
---|---|---|
显示行号 | :set nu(nu是number的缩写) | 在编辑器中显示行号 |
:set nonu | 在编辑器中关闭行号显示 | |
保存退出 | :w | 保存修改内容 |
:q | 退出修改内容不保存 | |
:q! | 强制退出 | |
:w /位置/新文件名 | 另存为其他文件 | |
ZZ :wq :x | 保存并退出 | |
打开新文件 | :e+其他文件名 | 在编辑器里面在此打开一个新文件进行编辑 |
导入文件内容 | :r+其他文件名 | 在当前文件中进行其他文件内容的导入 |
文件内容替换 | :s /old/new | 替换当前行所在的第一个字符 |
:s old/new/g | 将当前行中找到的所有字符进行替换 | |
:#,# s/old/new/g | 从第#,#行中找到的所有的字符进行替换 | |
:% s/old/new/g | 在全文中查找到的所有字符 进行替换 | |
:s old/new/c | 对每个替换进行用户确认 | |
复制/剪切/粘贴 | :5,10 m 15 | 将5-10行的内容剪切到15行下面 |
:5,10 co 15 | 将5-10行的内容复制到15行下面 |