Linux Vi编辑器的模式分为哪三种?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux Vi编辑器的模式分为哪三种?相关的知识,希望对你有一定的参考价值。
参考技术A Linux系统中vi是什么?vi是Linux/Unix系统中一款著名的编辑软件,也是Linux系统中第一款全屏幕编辑软件,凭借功能强大、高度可定制、简单易用的优势为广大Linux用户所熟悉,也成为Linux运维人员必备技能之一。接下来我们来看看详细的内容介绍吧。Linux系统中vi是什么?
Vi,是一款由加州大学伯克利分校、Bill Joy研究开发的文本编辑器。
文本编辑器有很多,比如图形模式的gedit、kwrite、OpenOffice,文本模式下的编辑器有VI、vim。vi和vim是我们在Linux中最常用的编辑器。vi或vim是Linux最基本的文本编辑工具,vi或vim虽然没有图形界面编辑器那样点鼠标的简单操作,但vi编辑器在系统管理、服务器管理字符界面中,永远不是图形界面的编辑器能比的。
注意:vi是Unix/Linux操作系统中最经典的文本编辑器,只能在编辑字符,不能对字体、段落进行排版,它既可以新建文件,也可以编辑文件;它没有菜单,只有命令,且命令繁多。
虽然vi的操作方式与其他常用的文本编辑器很不相同,但是由于其运行于字符界面,并可用于所有Unix/Linux环境,仍被经常使用。
vi的三种命令模式
command(命令)模式,用于输入命令
Insert(插入)模式,用于插入文本
Visual(可视)模式,用于视化的高亮并选定正文
①命令模式
命令模式是启动vi后进入的工作模式,并可转换为文本编辑模式和最后行模式。在命令模式下,从键盘上输入的任何字符都被当作编辑命令来解释,而不会在屏幕上显示。如果输入的字符是合法的vi命令,则vi就会完成相应的动作,否则vi会响铃警告。
②文本编辑模式
文本编辑模式用于字符编辑。在命令模式下输入i、a等命令后进入文本编辑模式,此时输入的任何字符都被vi当作文件内容显示在屏幕上。按Esc键可从文本编辑模式返回到命令模式。
③最后行模式
在命令模式下,按“:”进入最后行模式,此时vi会在屏幕的底部显示“:”符号年作为最后行模式的提示符,等待用户输入相关命令。命令执行完毕后,vi自动回到命令模式。
Linux基础知识 | vi编辑器
Linux基础知识 | vi编辑器
vi
编辑器是一个文本编辑器,提供了大量指令用来编辑文件,而且Linux
中很多程序默认以vi
编辑器打开,同时vi
编辑器的编辑速度也很快。
vi的三种模式
基本上vi
共分为三种模式,分别是 命令模式(command mode
)、插入模式(insert mode
)、和底行模式(last line mode
),各种模式的功能如下:
命令模式(
command mode
)一般默认
vi
打开的就是命令模式,在这个模式中,可以使用上下左右键来移动光标,也可以使用一些功能删除字符或者删除整列。同时这个模式中可以进行切换到插入模式(insert mode
)或者切换到底行模式(last line mode
)。插入模式(
insert model
)在命令模式中通过输入
i/o/a
可以进入插入模式。进入插入模式之后,就可以对文件进行编辑。如果要切换回命令模式则需要按Esc
键底行模式(
last line mode
)在这个模式中可以提供存盘、读取、离开
vi
、列出行号等功能
需要注意的是:插入模式和底行模式都需要在命令模式切换,就是说不能直接从插入模式切换到底行模式,或者从底行模式直接切换到插入模式。
其实在一般情况下,最常用的指令为使用vi filename
打开某个文件,然后输入i
进入插入模式,在编辑完成后,按下Esc
键,进入命令模式。然后输入:wq
存盘保存退出文件。
通常使用vi来创建或者打开一个文件,如果文件名对应的文件不存在,则会创建一个新的文件,但是这个新的文件其实还未存到磁盘中去,只有你对这个文件进行编辑并且输入了:w
进行存盘操作才会把文件保存起来。
三种模式下面的命令说明
vi的强大之处在于它提供了很多方便的指令让我们对文件进行编辑,浏览,复制等其他功能,这些功能都是通过命令来执行的。下面列出三种模式下的按键说明:
命令模式的按键
- 移动光标的指令
按键 | 说明 |
---|---|
h 或 左方向键 | 光标向左移动一个字符 |
j 或 下方向键 | 光标向下移动一个字符 |
k 或 上方向键 | 光标向上移动一个字符 |
l 或 右方向键 | 光标向右移动一个字符 |
以上移动光标操作符可以在前面添加数字表示移动的字符个数,比如 30h表示向左移动30个字符 | |
ctrl + f | 向下移动一页(相当page down) |
ctrl + b | 向上移动一页(相当page up) |
ctrl + d | 屏幕向下移动半页 |
ctrl + u | 屏幕向上移动半页 |
+ | 光标移动到非空白字符下一列 |
- | 光标移动到非空白字符的上一列 |
n space | n表示数字,输入8 space则会将光标向后移动8个字符 |
0 或 home | 表示光标移动到当前列第一个个字符 (常用) |
$ 或 end | 表示光标移动到当前列最后一个字符(常用) |
H | 光标移动到屏幕最上方那一列的第一个字符 |
M | 光标移动到屏幕中央那一列的第一个字符 |
L | 光标移动到屏幕最下方那一列的第一个字符 |
G | 移动到这个文件最后一列 (常用) |
nG | 移动到这个文件的第n列 |
n enter | 向下移动n列 |
- 查找替换相关指令
按键 | 说明 |
---|---|
/xxx | 向光标之下寻找一个名称为 xxx 的字串(常用) |
?xxx | 向光标之上寻找一个字串名称为 xxx 的字串 |
n | 代表“重复前一个搜寻的动作”。举例来说, 如果刚刚我们执行 /xxx 去向下搜寻 xxx 这个字串,则按下 n 后,会向下继续搜寻下一个名称为 xxx 的字串 |
N | 与 n 刚好相反,为“反向”进行前一个搜寻动作 |
:n1,n2s/word1/word2/g | 搜寻 word1 并取代为 word2,s表示开头字符,g表示结尾字符,如果再g后面添加c则表示每查找到一个则会提示询问是否要替换,n1,n2为数字,表示从第n1行到第n2行之间搜索替换,其中如果n2输入$ 则表示从n1到最后一行 |
- 删除、复制与粘贴
按键 | 说明 |
---|---|
x, X | 在一列字当中,x为向后删除一个字符, X 为向前删除一个字符(常用) |
nx | n 为数字,连续向后删除 n 个字符。 |
dd | 删除光标所在的那一整列(常用) |
ndd | n 为数字。删除光标所在的向下 n 列 |
d1G | 删除光标所在到第一列的所有数据 |
dG | 删除光标所在到最后一列的所有数据 |
d$ | 删除光标所在处,到该列的最后一个字符 |
d0 | 删除光标所在处,到该列的最前面一个字符 |
yy | 复制光标所在的那一列(常用) |
nyy | n 为数字。复制光标所在的向下 n 列(常用) |
y1G | 复制光标所在列到第一列的所有数据 |
yG | 复制光标所在列到最后一列的所有数据 |
y0 | 复制光标所在的那个字符到该列行首的所有数据 |
y$ | 复制光标所在的那个字符到该列行尾的所有数据 |
p, P | p 为将已复制的数据在光标下一列贴上,P 则为贴在光标上一列(常用) |
J | 将光标所在列与下一列的数据结合成同一列 |
c | 重复删除多个数据,例如向下删除 10 列,[ 10cj ] |
u | 复原前一个动作。(常用) |
[Ctrl]+r | 重做上一个动作。(常用) |
. | 重复前一个动作的意思。(常用) |
命令模式切换到插入模式相关指令
按键 | 说明 |
---|---|
i, I | 进入插入模式(Insert mode) |
a, A | 进入插入模式(Insert mode)a 为“从目前光标所在的下一个字符处开始插入”, A 为“从光标所在列的最后一个字符处开始插入”。(常用) |
o, O | 进入插入模式(Insert mode)o 为“在目前光标所在的下一列处插入新的一列”; O 为在目前光标所在处的上一列插入新 |
r, R | 进入取代模式(Replace mode)r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用) |
[Esc] | 退出编辑模式,回到一般指令模式中(常用) |
命令模式切换到底行模式相关指令
按键 | 说明 |
---|---|
:w | 保存编辑的内容到硬盘 |
:w! | 强制写入文件,能不能写入和文件权限有关 |
:q | 退出vi编辑器 |
:q! | 如果不想保存编辑的结果,可以强制离开vi |
:wq | 存盘。退出 |
ZZ | 若文件没有变更,则不储存离开,若文件更改,则储存后离开 |
:w filename | 将编辑的文件保存为另一个新文件 |
:r filename | 在编辑的数据中,写入另一个文件的数据 |
:n1,n2 filename | 将n1行到n2行保存到新文件中 |
:! command | 暂时离开vi到命令行界面下执行command的显示结果 |
:set nu | 显示行号 |
:set nonu | 取消显示行号 |
以上是关于Linux Vi编辑器的模式分为哪三种?的主要内容,如果未能解决你的问题,请参考以下文章