vi编辑器

vi是一个命令,也是一个命令行下的编辑器, 它有如下功能:

• 打开文件,新建文件,保存文件

• 光标移动

• 文本编辑

• (多行间 | 多列间)复制,黏贴,删除

• 查找和替换

很多人不习惯在命令行下编辑文件,在实际开发中也不会经常在命令行下编辑文件. 但是在Linux系统中对文件做些简单修改时, 使用vi命令的效率非常高,并且在很多时候,比如现场调试,并没有GUI形式的编辑工具,vi是唯一选择.

(1)模式

vi编辑器有三种模式,各个模式侧重点不一样:

(a)一般模式(光标移动,复制,黏贴,删除)

(b)编辑模式(编辑文本)

©命令行模式(查找和替换)

vi编辑器的三种模式间切换如下图所示:

image-20240716172048841

注意:

• 当不知道处于何种模式时, 按ESC键返回到一般模式

• wq(write quit)

• i(insert)

(2)文件的打开/新建/保存

打开文件, 新建文件,命令如下(如果文件存在则打开文件,否则新建文件并打开)

vi 文件名

修改结束之后,输入 “:” 进入命令行模式, 再输入 "wq"保存退出:

:wq	保存并退出文件

**注意:**如果文件不存在,也需要输入":wq"才可以保存新文件,否则不会新建文件.

在编辑完成时,返回一般模式,方法如下:

第1步 输入":w" 则保存文件,如果已经保存文件, 输入":q" 则退出文件

第2步 直接输入 “:wq” 保存退出

第3步 如果不想保存被修改的内容,则输入":q!"强制退出

这些命令列表如下:

命令描述
x保存当前文档并且退出
q退出
w保存文档
q!退出vi/vim, 不保存文档

(3)编辑文件

打开文件后,默认处于"一般模式",这是可以输入以下字母:

指令描述
i在当前光标所在字符的前面,转为编辑模式
I在当前光标所在的行的行首转换为编辑模式
a在当前光标所在的字符的后面,转为编辑模式
A在光标所在行的行尾,转换为编辑模式
o在当前光标所在行的下方,新建一行,并转为编辑模式
O在当前光标所在行的上方,新建一行,并转为编辑模式

(4)快速移动光标

在一般模式下, 可以使用下面快捷键移动光标或是翻页:

移动光标

h(或左方向键)光标左移一个字符
l(或右方向键)光标右移一个字符
j(或下方向键)光标下移一行
k(或上方向键)光标上移一行
nG或ngg光标移动到第n行首
n+光标下移n行
n-光标上移n行

屏幕翻滚

ctrl+f屏幕向下翻一页,相当于下一页
ctrl+b屏幕向下翻一页,相当于上一页

详细介绍如下:

① 快速的定位到某一行: 文件头, 文件尾, 指定某一行

• ngg: 光标移至第n行的行首(n为数字,想要跳转的行)

• 1gg: 就跳到第一行的行首,就是文件头

• 2gg: 就跳到第二行的行首

• G : 转至文件结尾

② 在某一行如何快速定位到某一列

• 0: (数字零)光标移至当前行行首

• $: 光标移至当前行行末

• fx: 搜索当前行中下一个出现字母x的地方

注意:当你不知道vi处于何种模式时,使用esc键回到一般模式

(5)文本复制/粘贴/删除/撤销

image-20240716175944641

a) 复制

yy //复制当前行(y:yank(复制)) 
nyy //复制当前行及其后的 n-1 行(n 是数字)

b) 粘贴

p //粘贴(p:paste)

c) 删除

dd //删除光标所在行(d:delete)
ndd //删除当前行及其后的 n-1 行(n 是数字)
x //删除光标所在位置的字符

d) 撤销

u //撤销上一步操作

(6)文本查找和替换

在一般模式下,可以执行以下命令。

a) 查找

/pattern //从光标开始处向文件尾搜索 pattern,后按下 n 或 N

注意:

• n:在同一个方向重复上一次搜索命令
• N:在反方向重复上一次搜索命令
• 在/pattern 之前先跳到第一行则进行全文件搜索。
b) 替换
• :%s/p1/p2/g //将文件中所有的 p1 均用 p2 替换
• :%s/p1/p2/gc //替换时需要确认
• “s“ 全称:substitute 替换;
• “g“ 全称:global 全局;
• “c“ 全称:confirm,确认

参考:

Linux 命令大全 | 菜鸟教程 (runoob.com)

(7)vi编辑器使用示例

本例创建一个名为 hello.txt 的文件,添加如下 2 行文件字,再回退去删
除第 2 行的字母“X”:

www.100ask.net
wiki.100askX.net

首先执行以下命令,如果当前目录下没有 hello.txt 它就会新建并打开该文件,
否则直接打开该文件:

vi hello.txt

界面如下:

image-20240716181334247

输入字符“i”,它表示“insert”,即在光标前输入字符,界面如下:

image-20240716181403685

在上述界面中,可以输入字符了,可以使用回车键、删除键、箭头键等等,跟
一般得文本工具没什么差别,如下:

image-20240716181435634

无论当前是否处于编辑模式,都可以使用箭头键移动光标。

•在编辑模式下,使用删除键(Backspace)删除字符;

• 不在编辑模式下时,使用“x”删除光标所在的字符;

image-20240716181511764

最后输入“:wq”保存并退出,“:”表示进入命令行模式,“wq”表示“write
and quit”,即写入并退出。如果不想保存则可以输入“:q!”,它表示“退出、
不保存”:

image-20240716181529429

最后执行“cat hello.txt”命令验证一下:

image-20240716181543553
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐