我对VIM的认识仅仅是一款源码编辑器,在Linux下用来编辑程序源码或者某些服务的配置文件。最近无意中看到vim中竟然可以执行shell命令。第一次见,说句实话感觉好炫酷!不多说,我查了一些资料,一个一个尝试一下,留个笔记,备查。
vim中执行shell命令,有以下几种形式:
第一种 :!command
不退出vim,并执行shell命令command,将命令输出显示在vim的命令区域,不会改变当前编辑的文件的内容。执行:!ls -al命令,如下图所示:
特别的可以运行:!bash来启动一个bash shell并执行命令,不需要退出vim。这点在Linux渗透测试的时候很有用,关于日志清除相关的内容,不想说的太明白,自己体会吧。(最后还要删除VIM所产生的日志文件噢,kali里面是.viminfo,在vim中使用rm -rf强制清除)
第二种 :r !command
将shell命令command的结果插入到当前行的下一行。例如:r !date。读取系统时间并插入到当前行的下一行。如下图所示:
第三种 :起始行号,结束行号!command
将起始行号和结束行号指定的范围内的内容让shell命令command处理,并将处理结果替换起始行号和结束行号指定范围中的内容。例如 :1,4 !sort,将第1行到第4行的内容进行排序。如下图所示:
可以只指定起始行,例如:1 !tr [a-z] [A-Z],将第1行的小写字母转为大写字母。如下图所示:
除可以指定行号外,也可以用.表示当前光标所在行。例如:. !tr [a-z] [A-Z],将当前行的小写转为大写。如下图所示:
第四种 :起始行号,结束行号 w !command
将起始行号和结束行号所指定范围的内容作为命令command的输入,不会改变当前编辑的文件的内容。
例如:1,4 w !sort,将第1行到第4行的内容进行排序,但排序的结果并不会直接输出到当前编辑的文件中,而是显示到vim敲命令的区域。如下图所示:
特殊的可以用下面的命令: 1 w !bash,将会把第1行的内容作为bash命令来执行并显示结果,而且不会改变当前编辑的文件的内容。同样的 : . w !bash将当前行的内容作为bash命令来执行。
好了,参考人家的资料,试了一下,整理的内容。这个好炫酷。