Linux Vi编辑器
带有命令的Vi编辑器
什么是vi
vi编辑器详细说明为 vi 普通编辑器。它安装在每个Unix系统中。换句话说,它在所有Linux发行版中都可用。它是用户友好的,并且可以在不同发行版和平台上使用。这是一个非常强大的应用程序。 vi编辑器的改进版本是 vim 。
vi编辑器具有两种模式:
命令模式: : 在命令模式下,对文件执行操作。 vi编辑器以命令模式启动。在这里,键入的单词将在vi编辑器中充当命令。要传递命令,您需要处于命令模式。
插入模式: 在插入模式下,输入的文本将插入到文件中。 Esc 键将带您从插入模式进入命令模式。
默认情况下,vi编辑器以命令模式启动。要输入文字,您必须处于插入模式,只需键入'i',您就会处于插入模式。尽管在输入我之后,屏幕上将不会显示任何内容,但您将进入插入模式。现在您可以键入任何内容。
要退出插入模式,请按 Esc 键,您将被定向到命令模式。
如果不确定您处于哪种模式,请按两次Esc键,您将进入命令模式。
使用vi
vi编辑器工具是一种交互式工具,可以在您编辑文件时在屏幕上显示文件中所做的更改。
在vi编辑器中,当光标在文件中移动时,您可以插入,编辑或删除单词。
为每个函数都指定了命令,如删除x或dd。
vi编辑器区分大小写。例如, p 允许您粘贴在当前行之后,而 P 允许您粘贴在当前行之前。
vi语法:
在终端中,当您输入带有文件名的vi命令时,终端将变得清晰,并且将显示文件的内容。如果没有这样的文件,那么将创建一个新文件,并在完成后将使用提到的文件名保存该文件。
Linux vi示例
让我们通过一个示例来理解vi:
要启动vi,请打开终端并输入vi命令,后跟文件名。如果文件在其他目录中,则可以指定文件路径。而且,如果万一您的文件不存在,它将在给定位置创建一个具有指定名称的新文件。
示例:
vi /home/sssit/Downloads/file.txt
看上面的快照,我们正在创建一个新文件 file.txt (因为此文件不存在),并已输入目录下载的完整路径。
命令模式
在上面的命令后按Enter键时,您将看到以下内容。如果您将开始键入命令,则不会出现任何命令状态。默认情况下,vi在命令模式下打开。
看上面的快照,它为空,因为它是一个新文件。要开始输入,您必须进入插入模式。在终端窗口的末尾,将显示目录名和文件名。
插入模式
要移至插入模式,请按 i。尽管还有其他命令可以移至插入模式,我们将在下一页中进行研究。
查看上面的快照,按 i 后,我们进入了插入模式。现在我们可以写任何东西了。要移至下一行,请按Enter。
完成键入后,请按 esc 键返回命令模式。
要保存并退出
您可以从命令模式下保存并退出vi编辑器。在编写保存或退出命令之前,必须按冒号(: )。冒号允许您向vi发出指令。
退出vi表:
命令 |
动作 |
:wq |
保存并退出 |
:w |
保存 |
:q |
退出 |
:w fname |
另存为fname |
ZZ |
保存并退出 |
:q! |
放弃放弃所做的更改 |
:w! |
保存(并写入不可写文件) |
要退出vi,首先请确保您处于命令模式。现在,键入: wq并按Enter。它将保存并退出vi。
键入: wq 保存并退出文件。
看上面的快照,命令: wq将保存并退出vi编辑器。在命令模式下键入时,它将自动出现在左下角。
如果要退出而不保存文件,请使用: q。仅当您未对文件进行任何更改时才起作用。
查看上面的快照,此文件被修改,因此在键入: q 时,它会在左下角显示此消息。
可以使用命令保存以上文件: !q。。它丢弃文件中所做的更改并保存。
看看上面的快照,我们输入了: !q ,它将通过放弃所做的更改来保存我们的文件。
Vi命令
Linux vi编辑器不同于其他编辑器。您必须使用不同的键才能使用不同的功能。虽然,使用vi编辑器很容易而且很有趣。
vi编辑器命令区分大小写。
看看下表中的vi命令。
从命令中切换插入模式:
命令 |
动作 |
i |
开始在当前字符之前输入 |
I |
从当前行的开头开始输入 |
a |
在当前字符之后开始输入 |
A |
在当前行的末尾开始输入 |
o |
在当前行之后开始在新行上输入 |
O |
在当前行之前开始在新行上键入 |
要在文件中移动:
命令 |
动作 |
j |
下移 |
k |
要上移 |
h |
向左移动 |
l |
向右移动 |
要跳线:
命令 |
动作 |
G |
将您定向到文件的最后一行 |
`` |
将您定向到文件中的最后一个位置 |
要删除:
命令 |
动作 |
x |
删除当前字符 |
X |
删除光标之前的字符 |
r |
替换当前字符 |
xp |
切换两个字符 |
dd |
删除当前行 |
D |
将当前行从当前字符删除到行尾 |
dG |
从当前行删除到文件末尾 |
要重复和撤消操作:
命令 |
动作 |
u |
撤消上一条命令 |
. |
重复最后一个命令 |
剪切,复制和粘贴的命令:
命令 |
动作 |
dd |
删除一行 |
yy |
(yank yank)复制一行 |
p |
在当前行之后粘贴 |
P |
在当前行之前粘贴 |
剪切,复制和粘贴块的命令:
命令 |
动作 |
dd |
删除指定的n行数 |
yy |
复制指定的n行数 |
行首和行尾:
命令 |
动作 |
θ |
在当前行的开头 |
^ |
在当前行的开头 |
$ |
在当前行末尾 |
dθ |
删除直到一行开始 |
d $ |
删除到一行的结尾 |
加入行:
命令 |
动作 |
J |
加入两行 |
yyp |
重复当前行 |
ddp |
交换两行 |
向前或向后移动:
命令 |
动作 |
w |
向前移动一个单词 |
b |
后退一个单词 |
<n>w |
将指定的单词数向前移动 |
dw |
删除一个字 |
yw |
复制一个词 |
<n>dw |
删除指定的单词数 |
搜索字符串:
命令 |
动作 |
/string |
向前搜索给定的字符串 |
?string |
向后搜索给定的字符串 |
/^ string |
在行首处向前搜索字符串 |
/string $ |
在行尾向前搜索字符串 |
n |
转到下一个出现的搜索字符串 |
/\<he\> |
搜索他(不是那里,在这里,等等)这个词 |
/pl[abc]ce |
搜索地点,地点和地点 |
替换全部
语法:
:<startLine,endLine> s/<oldString>/<newString>/g
示例:
命令 |
动作 |
:1,$ s/readable/changed/ |
从第一行到最后一行向前并向后替换 |
:3,6 s/letters/neww/g |
从第三行向后替换为第九行 |
文本缓冲区:
命令 |
动作 |
"add |
删除当前行并将文本放入缓冲区a |
"ap |
从缓冲区a中粘贴行 |
缩写
语法:
:ab <abbreviation> <abbreviatedWord>
示例:
命令 |
动作 |
:ab au的缩写 |
将au缩写为"缩写和不缩写" |
:una au |
Un-缩写au |