Unix / Linux - vi 编辑器教程

Posted by Tigress Feathermoon💄 on September 2, 2023
   

Vi 是一款非常强大的编辑器,新手小白通过本文可以学会基本操作,当作记事本替代完全够用。

在本章中,我们将了解 vi 编辑器在 Unix 中的工作原理。在 Unix 中编辑文件的方法有很多种。使用强大的文本编辑器 vi 编辑文件是最好的方法之一。该编辑器使您能够在上下文中编辑文件中的其他行。

Vim 是从 vi 发展出来的一个文本编辑器。其代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。这里,VIM 代表 Vi IMproved。

vi 通常被认为是 Unix 编辑器的事实上的标准,因为 -


它通常适用于所有版本的 Unix 系统。

它的实现在整体上非常相似。

它需要很少的资源。

它比 ed 或 ex 等其他编辑器更加用户友好。


您可以使用 vi 编辑器编辑现有文件或从头开始创建新文件。也可以使用此编辑器来读取文本文件。

启动 vi 编辑器


1  vi 文件名

如果文件不存在则创建一个新文件,否则打开现有文件。
 
2  vi -R 文件名
 
以只读模式打开现有文件。
 
3  view 文件名
 
以只读模式打开现有文件。

以下是创建新文件 testfile(如果当前工作目录中不存在)的示例 -

$vi testfile

上面的命令将生成以下输出 -


|
   
~
  
~
  
~
  
~
  
~
  
~
  
~
  
~
  
~
  
~
  
~
  
~
  
"testfile" [New File]    

您会注意到光标后面的每一行都有一个波形符 (~)。波形符代表未使用的行。如果一行不以波形符开头并且显示为空白,则表示存在空格、制表符、换行符或其他一些不可见字符。

您现在已经创建了一个文件。在继续之前,让我们先了解一些重要的概念。

操作模式

在使用 vi 编辑器时,我们通常会遇到以下两种模式 -


命令模式- 此模式使您能够执行管理任务,例如保存文件、执行命令、移动光标、剪切(拉动)和粘贴行或单词,以及查找和替换。在此模式下,您键入的操作都将被视为命令。

编辑模式- 此模式使您可以将文本插入文件中。在此模式下键入的所有内容都将被以文本的形式写入文件。

vi 始终以命令模式启动。要输入文本,您必须处于插入模式,只需键入 i 即可。要退出插入模式,请按 Esc 键,这将带您返回命令模式。

提示 - 如果您不确定自己处于哪种模式,请按 Esc 键两次;这将带您进入命令模式。 首先在编辑模式输入一些字符,然后进入命令模式以了解其中的区别。


退出 vi

退出 vi 的命令是 :q。进入命令模式后,键入冒号和“q”,然后按回车键。如果您的文件被以任何方式修改,编辑器会警告您,并且不会让您退出。要忽略此消息,退出 vi 而不保存的命令是 :q!。这使您可以退出 vi 而不保存任何更改。

保存编辑器内容的命令是:w。您可以将上述命令与 quit 命令结合使用,或使用 :wq 并返回。

保存更改并退出 vi 的最简单方法是使用 ZZ 命令。当您处于命令模式时,键入 ZZ。 ZZ 命令的工作方式与 :wq 命令相同。

如果您想重命名文件,可以通过在 :w 之后指定它来实现。例如,如果您想将正在处理的文件另存为名为 filename2 的另一个文件名,则可以键入 :w filename2 并返回。

移动光标

要在文件中移动光标而不影响文本,您必须处于命令模式(按 Esc 两次)。下表列出了一些可用于一次移动一个字符的命令 -


1 	k

将光标向上移动一行

2 	j

将光标向下移动一行

3 	h

将光标向左移动一个字符位置

4 	l

将光标向右移动一个字符位置

在文件内移动需要考虑以下几点 -

vi 区分大小写。使用命令时需要注意大小写。

vi 中的大多数命令都可以以您希望操作重复的次数作为前缀。例如,2j 将光标从光标位置向下移动两行。

在 vi 中还有许多其他方法可以在文件内移动。请记住,您必须处于命令模式(按 Esc 两次)。下表列出了一些用于移动文件的命令 -

Vi / Vim 命令键盘图

Vi / Vim 键盘图英文版PDF

## 编辑文件

要编辑文件,您需要处于编辑模式。从命令模式进入编辑模式有多种方法 -


i

在当前光标位置之前插入文本

I

在当前行的开头插入文本

a

在当前光标位置后插入文本

A

在当前行末尾插入文本

o

在光标位置下方创建一个新行用于文本输入

O

在光标位置上方创建一个新行用于文本输入

删除字符


x

删除光标所在位置下的字符

X

删除光标所在位置之前的字符

dw

删除从当前光标位置到下一个单词

d^

删除从当前光标位置到行首的内容

d$

删除从当前光标位置到行尾的内容

D

删除从光标位置到当前行末尾

dd

删除光标所在行

如上所述,vi 中的大多数命令都可以以您希望重复操作的次数作为前缀。例如,2x 删除光标所在位置下的两个字符,2dd 删除光标所在的两行。

复制和粘贴命令


1 	yy

复制当前行。

2 	yw

从小写 w 光标所在的字符开始复制当前单词,直到单词末尾。

3 	p

将复制的文本放在光标后面。

4 	P

将拉出的文本放在光标之前。

重要注意事项

您必须处于命令模式才能使用这些命令。 (随时按 Esc 两次以确保您处于命令模式。)

您必须小心使用命令。这些是区分大小写的。

您必须处于插入模式才能输入文本。