在vi中执行shell命令

整机外设

  Linux中的vi文本编辑器功能强大,我们可以使用它来创建和编辑文件,有没有想过在vi编辑器中执行shell命令,以便实现其他的一些操作?

  我们可以通过以下面的命令在vi中执行某个shell命令,不过首先要确保vi工作在命令模式下(按键盘上的Esc键),然后输入“:!command”(输入时不要加引号,叹号与冒号之间没有空格,下同),使用时用自己所要执行的命令替换其中的command,输入完毕后按下回车键。此时vi会调用一个执行command命令的新shell,执行输入的命令,在完成任务后shell会将控制权返回到vi中。

  这种方法将把来自命令的执行结果输出替换当前行的内容,如果用户不希望替换文本内容,则可以使用命令“!!command”,使用这条命令时,当用户输入第一个叹号时屏幕不会发生任何的变化,而当输入第二个叹号时,vi将移动光标到状态行,这时就可以输入命令了。

  我们也可以使某个命令的标准输入为用户的编辑文本的全部或者部分内容,同时使命令的标准输出为替换用户正在编辑的文件的内容。

  指定标准输入的文本,可以将光标移动到某个文本块中,然后输入一个叹号,再输入一个可以将光标移动到文本的另一端的命令。例如:输入命令“!'a”(位于光标和标记a处之间的内容将会作为标准输入)。当输入光标移动命令之后,就可以输入要执行的命令了。

  还有一种执行shell的方法就是在命令方式下输入“:sh”,将会创建一个新的交互式的shell,这时就可以在shell中执行命令了,当输入exit命令后就会回到vi中,可以继续编辑文本。