Linux 管理员 - 使用 vi / vim 文本编辑器

vim 代表 Linux 版 vi 文本编辑器的更新、改进版本。vim 默认安装在 CentOS 7 上,这是 CentOS 的最新版本。但是,一些较旧和最小的基本安装将默认仅包含原始 vi。

vi 和 vim 之间最大的区别是高级易用功能,例如使用箭头键移动光标。 vim 允许用户使用箭头键浏览文本文件,而 vi 则只能使用"h"、"j"、"k"、"l"键,如下所示。

vi 文本文档导航 −

操作
j 向下移动一行
k 向上移动一行
l 向左移动一个字符
h 向右移动一个字符字符

使用 vim,可以在基于标准英语(和其他常用语言)的 qwerty 键盘布局上使用箭头键完成相同的操作。同样,vi 通常也不会解释数字键盘。

现在,vi 大多会符号链接到 vim。如果您发现按下箭头键时会出现意想不到的情况,请尝试使用包管理器安装 vim。

vim 在操作和打开文件时使用模式概念。我们将重点关注的两种模式是 −

  • normal − 这是 vim 首次打开文件时使用的模式,允许输入命令

  • insert − 插入模式用于实际编辑文件中的文本。

让我们在 vim 中打开一个文件。我们将使用位于 /usr/share/dict − 的 CentOS 默认词典

[root@localhost rdc]# cp /usr/share/dict/words

您看到的是在正常模式下打开的文本文件。现在练习使用箭头键浏览文档。此外,尝试使用 h、j、k 和 l 键浏览文档。

Vim 希望我们发送文件操作命令。要启用行号,请使用冒号键:shift+:。您的光标现在将出现在文档底部。输入"set nu",然后按回车键。

:set nu

现在,我们将始终知道我们在文件中的哪个位置。这也是在 vim 中编程时的必需品。是的!vim 具有最好的语法突出显示功能,可用于制作 Ruby、Perl、Python、Bash、PHP 和其他脚本。

下表列出了正常模式下最常用的命令。

命令 操作
G 转到文件末尾
gg 转到文件开头
x 删除所选字符
u 撤消上次修改
Enter 向前跳转行
dd 删除整行
? 搜索字符串
/ 继续到下一个搜索结果

请在 vim 中尝试以下任务,以熟悉它。

  • 搜索字符串"test",然后搜索前 5 次出现

  • 找到"test"的前 5 次出现后移动到文档的开头

  • 使用 Enter 转到第 100 行

  • 使用"x"删除整个单词

  • 撤消删除使用"u"

  • 使用"dd"删除整行

  • 使用"u"重建行

我们假装对一个关键文件进行了编辑,并希望确保保存任何意外更改。按shift+:并输入:q!。这将退出 vim,丢弃所做的任何更改。

现在,我们想要在 vim 中实际编辑一个文件:在控制台输入:vim myfile.txt

我们现在正在查看 vim 中的空白文本缓冲区。让我们写点东西:比如 - 按"i"。

vim 现在处于插入模式,允许我们像在记事本中一样对文件进行编辑。在缓冲区中输入几个段落,随你喜欢。稍后,使用以下步骤保存文件 −

  • 步骤 1 − 按下 Esc 键

  • 步骤 2 − 按下 shift+:

  • 步骤 3 − 输入 w myfile.txt:w 并按 Enter 键

  • 步骤 4 − 按下 shift+:

  • 步骤 5 − 输入 q! 并按 Enter 键

我们刚刚创建了一个名为 myfile.txt 的文本文件并将其保存 −

[root@localhost]# cat myfile.txt  
this is my txt file.
[root@localhost]#

Linux 文件输入/输出重定向

管道符"|"将从第一个命令中获取输出,并将其传递给下一个命令。这称为标准输出或 stdout。另一个常见的 Linux 重定向器是标准输入或 stdin

以下是两个示例;第一个使用 cat 命令将文件内容放入 stdout。第二个使用 cat 读取文件,并使用 standardinput 重定向器输出其内容。

STDOUT

[root@centosLocal centos]# cat output.txt  
Hello, 
I am coming from Standard output or STDOUT. 
[root@centosLocal centos]#

STDIN

[root@centosLocal centos]# cat < stdin.txt  
Hello, 
I am being read form Standard input, STDIN. 
[root@centosLocal centos]#

现在,让我们将 cat 的标准输出"管道"到另一个命令。

[root@centosLocal centos]# cat output.txt | wc -l
2
[root@centosLocal centos]#

上面,我们将 cat 的标准输出传递给 wc 以处理管道字符。然后,wc 处理 cat 的输出,将 output.txt 的行数打印到终端。将管道符视为传递一个命令的输出以供下一个命令处理的"管道"。

以下是处理命令重定向时需要记住的关键概念。

数字 文件描述符 字符
0 标准输入 <
1 标准输出 >
2 标准错误
附加 stdout >>
分配重定向 &
管道 stdout |

basic_centos_linux_commands.html