5. Vim 文本编辑器 5.12 如何在 Vim 中执行 Linux 命令? 💎

Vim 编辑器不仅提供了大量的命令来方便和加快我们的文件编辑工作,在此编辑器中,我们还可以直接使用 Linux 命令来进一步提高文件编辑的效率,这就是 Vim 编辑器的所谓过滤功能。

由于 Vim 编辑器中支持直接执行 Linux 命令,从而可以方便快捷地对文件完成以下操作:

  1. 将一个命令的输出结果存入正在编辑的文件;
  2. 将正在编辑的文件中的一些数据作为某个指定 Linux 命令的输入。

下面,通过一个简单的例子,来演示如何在 Vim 编辑器中执行 Linux 命令。

首先,我们新建一个 demo.txt 文件,并手动输入如下内容,并将光标移动至下一行开头:

http://c.biancheng.net

在此基础上,按 Esc 令 Vim 返回到命令模式,再按下 !! ,这时在窗口的左下角会出现 :.! 的提示信息,这就表明我们可以输入 Linux 命令了。例如,我们输入 date 命令,如图 1 所示:
image
图 1 向文件中输入命令的执行结果

注意,窗口左下角的 :.! 表示操作文本的范围,其中 . 表示从光标所在行开始,! 表示后续会执行 Linux 命令,整体表示命令的执行结果将插入到光标所在行的位置,因此,如果光标所在位置处有数据,就会被命令的执行结果直接覆盖掉。

确认光标位置无误后,按 Enter(回车)键,这时会发现系统当前的日期和时间写到了 demo.txt 文件中第 2 行的位置:

http://c.biancheng.net
Tue Nov 12 07:20:49 PST 2017

在此基础上,再向该文件中手动输入以下数据:

http://c.biancheng.net
Tue Nov 12 07:20:49 PST 2017
1 C语言中文网
3 c.biancheng.net
2 Linux教程

输出完成之后,将光标调整至第 3 行第 1 个字符的位置,然后按 Esc 使 Vim 进行命令模式,并按下 !} 组合键,你会看到窗口的左下角出现 :.,$! 的提示信息,如图 2 所示。
image
图 2 Vim命令模式下按 !} 的提示信息

其中 . 表示光标所在的当前行,$ 表示文件最后一行,因此和之前不同,这次选取的是文件中第 3 行及之后的所有内容。

在此基础上,我们使用 sort 命令对选中文本按照第 1 列进行降序排序,执行命令如下:

:.,$!sort -nr -k1

有关 sort 命令的用法,由于不是本节重点,这里不再做过多讲解。

按 Enter(回车)键,可以看到,demo.txt 文件中的内容变成:

http://c.biancheng.net
Tue Nov 12 07:20:49 PST 2017
3 c.biancheng.net
2 Linux教程
1 C语言中文网

由此,通过将所选文件作为 sort 命令的输入,实现了对该部分文本的降序排序操作。

除此之外,表 3 罗列出了常用的几种 Vim 和 Linux 命令搭配使用的方式
image

posted @ 2023-02-07 23:34  HopeLive  阅读(233)  评论(0编辑  收藏  举报