外部命令 external
回忆
- 上次研究的是global
- :[range]global/{pattern}/{command} range 是执行的范围 pattern 是搜索的模式 command 执行的命令
- 命令有很多 d 删除 m 移动 t 拷贝 p 打印 s 替换 sort 排序 update 更新
- global 是很好用的内部命令
- 据说vim还可以执行外部命令呢?!
- 怎么玩呢?
回忆外部命令
- :!ls 在命令行列表
- :!python % 运行python程序额
- :!javac % 编译java程序
r读取
- :r oeasy.txt
- :r !ls
- :r !ls -lah
- :r !cat oeasy.txt
- :r !curl -s 'http://oeasy.org'
- 这样就可以把各种信息直接读到vim中了
我杀死我自己
- :!ps
?
- :!kill -9 341
tr命令translate
?
- :.!tr '[:lower:]' '[:upper:]' .! 当前行执行外部命令` !tr '[:lower:]' '[:upper:]' 调用外部命令把小写字母translate成大写字母
- :%!tr '[:lower:]' '[:upper:]' 全部行都执行
- :1,2!tr '[:lower:]' '[:upper:]' 1、2行执行
awk
- awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan
?
- :%!awk '{print $1}'
- u回来
- 再试试:%!awk '{print $2}'
管道pipe
?
- :%!awk 'NR > 1' | sort -nk 3 | column -t %! 执行范围range是所有行 awk 'NR > 1' 从第二行开始awk | 管道 sort -nk 3 使用第3列进行排序 column -t 用空格隔开
总结
- 这次我们尝试了一下各种在vi中执行外部程序 可以排序 可以改大小写 还可以用管道 直接对于缓冲buffer文件进行操作 还是很方便的
- 其实还有一个外部命令很重要 根据内容搜索grep 这个怎么和vim配合呢?
- 下次再说!
?