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



vim 代表的是vi文本编辑器在Linux上的一个更新、改进的版本。vim默认安装在CentOS 7(CentOS的最新版本)上。但是,一些较旧的和最小化的基础安装默认情况下只包含原始的vi。

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

vi 文本文档导航 −

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

使用vim,可以使用标准英文(和其他常用语言)qwerty键盘布局上的箭头键来完成相同的操作。类似地,vi通常也无法解释数字键盘。

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

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

  • 普通模式 − 这是vim在第一次打开文件时使用的模式,允许输入命令

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

让我们在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` 并按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的stdout“管道”到另一个命令。

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

在上面,我们将cat的stdout传递给wc以处理管道字符。然后,wc处理来自cat的输出,将output.txt的行数打印到终端。将管道字符视为一个“管道”,它将一个命令的输出传递给下一个命令进行处理。

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

编号 文件描述符 字符
0 标准输入 <
1 标准输出 >
2 标准错误
追加stdout >>
赋值重定向 &
管道stdout |
basic_centos_linux_commands.htm
广告