lua执行shell命令6_Vim执行shell命令及使用Vim批量更改文件名
写在前面:我“胡汉三”又回来了~上周顺利通过了试用期答辩,现在俺是一名正式的鹅厂人啦。哈哈哈~感谢各位可爱又热心的好伙伴对我的“不离不弃”。
话休絮烦,今天分享下在Vim中执行shell命令的几个小知识。
可以在 Vim 内部调用外部程序(如shell命令),还可以把缓冲区的内容作为标准输入传递给外部命令,或是把外部命令的标准输出导入到Vim缓冲区。
一、在Vim内部执行shell命令
在 Vim 的命令行模式中,在命令前加一个 !
前缀 (参见:h :!
) 就可以调用外部的shell程序。
例如,如果想在Vim内部查看当前目录下的所有文件,可以在Vim命令行模式下运行命令 :!ls
。
注::!ls
和 :ls
是两个不同的Vim命令,前者是在Vim中调用shell命令 ls,用于列出目录下的所有文件,后者调用的是 Vim内置命令 ls,用来显示当前缓冲区列表的内容,可以参考Vim文件缓冲区列表介绍。
如Vim打开和保存文件所介绍,在 Vim 的命令行模式下,符号 % 代表当前文件的完整路径(参见:h cmdline-special
)。如果我们正在通过Vim编辑某个 python 文件,则可以用命令 :!python %
直接执行该文件。
二、启动一个可交互的shell进程
上面介绍的 :!{cmd}
这种语法适用于执行一次性命令,如果想在 shell 中连续执行多条命令,可以执行 Vim 的 :shell
命令启动一个可交互的 shell 会话,在执行完所需要的命令后用 exit
命令退出此 shell 并返回到原始的 Vim 进程。
三、Vim缓冲区内容作为输入/输出
在Vim命令行模式下执行某个Vim命令 :!{cmd}
时,Vim 会回显 {cmd}
命令的输出。可以用 :read !{cmd}
命令把 {cmd} 命令的输出重定向当前Vim缓冲区中,或使用 :write !{cmd}
把当前Vim的缓冲区内容作为指定 {cmd} 的标准输入。
例如,在Vim命令行模式下执行命令 :write !sh
后会在 shell 中执行当前缓冲区中的每行内容。假如当前所在目录包含如下的文件:
1.cc2.cc3.cc
如果我希望把 .cc 后缀更名为 .cpp,可以在Vim中通过 :read !ls *.cc
命令将shell命令 ls *.cc
的输出重定向到Vim缓冲区中,再使用Vim替换命令 :%s/\(.*\).cc/mv & \1.cpp
生成shell重命名命令 mv,最后使用 :write !sh
执行当前缓存区中的每一行,从而达到对所有 .cc 文件重命名为 .cpp 的目的。
PS:“Vim教程”这个主题俺觉得有点太小了,如果我想扩大下公众号的写作内容,比如还写写makefile, gdb, 正则表达式等等,不知道小伙伴们怎么看呢?
lua执行shell命令6_Vim执行shell命令及使用Vim批量更改文件名相关推荐
- linux sed名宁,Linux shell利用sed批量更改文件名的方法
微子网络与大家分享了在Linux shell中使用sed批量更改文件名的方法.希望你看完这篇文章有所收获.大家一起讨论一下. 示例 去除特定字符 目标:把2017-01-01.jpg和2018-01- ...
- linux下批量改文件名命令,Linux 批量更改文件名命令
想把一部分文件加上日期序.也就是在文件名称前加上当前的年月日进行输出. 获取日期格式如下 Zianed@ubuntu:~/public_web_sSmO9OUVY1/files/image$ date ...
- linux mv命令批量,linux 如何用mv命令批量更改文件名?
满意答案 单纯的依靠mv命令做不到,需要脚本来实现 编写脚本 rename 如下 #---------------------------------------------- #!/bin/sh l ...
- Linux shell利用sed如何批量更改文件名详解
转载自:http://www.jb51.net/article/124047.htm 示例1:去除特定的字符 目标:将 2017-01-01.jpg.2018-01-01.jpg 改为 2017010 ...
- 浅显易懂 Makefile 入门 (08)— 默认 shell (/bin/sh)、命令回显、make参数(-n 只显示命令但不执行,-s 禁止所有回显)、单行命令、多行命令、并发执行
1. shell 相关 1.1 默认 shell Makefile 所使用的命令是由 shell 命令行组成,他们是一条一条执行的. 多个命令之间要使用分号隔开,Makefile 中的任何命令都要以 ...
- shell脚本中判断上一个命令是否执行成功
2018-12-21 shell中使用符号"$?"来显示上一条命令执行的返回值,如果为0则代表执行成功,其他表示失败. 结合if-else语句实现判断上一个命令是否执行成功 示例如 ...
- 服务器免密码传输文件,CentOS7,使用 scp 命令, ssh 连接方式,免密码传输文件到远程服务器,免密执行远程服务器上的 shell 脚本...
如题 如果提示:-bash: scp: command not found, 执行下面的命令安装:1 yum install -y openssh-clients 免密码配置通常用 scp 命令通过 ...
- 69:shell脚本介绍 | shell脚本结构 | 执行data命令用法 | shell脚本中变量
2019独角兽企业重金招聘Python工程师标准>>> 1.shell脚本介绍: shell是一种脚本语言和传统的开发语言相比,会比较简单: shell有自己语法,可以支持逻辑判断. ...
- runtime无法执行grep_让你的 Shell 命令执行可视化和告警
Sampler是一个用于shell命令执行,可视化和告警的工具.其配置使用的是一个简单的YAML文件. 1.为什么我需要它? 你可以直接从终端对任意动态进程进行采样 – 观察数据库中的更改,监控MQ动 ...
最新文章
- 比较.ASP.NET中Application,Session,Cookie,ViewState和Cache
- 分离Exchange的OWA和Microsoft-Server-Activesync手机访问
- 用Canvas画圆环百分比进度条
- Java基础---封装继承静态
- 安卓电子市场_关于安卓手机发展史你知道多少?原来最早安卓居然不是手机系统!...
- 编程语言python入门-【python】编程语言入门经典100例--19
- 为 DEV-C++ 生成 libmysql.a 的过程 及 windows下 devc++ c语言访问mysql数据库 环境配置...
- 最长递增子序列(LIS longest-increment-subsequence)最长连续递增子序列 最大连续子序列和
- scratch课程案例——时钟
- 【rqnoj 74】24点
- 产品经理校招20道常见面试题:问题拆解与回答思路
- android8.0的电池图标,Android 8.0 电池图标 显示分析
- 大学计算机基础知识学习计划,大学个人学习计划
- 在Textview中获取指定文字位置(兼顾网址链接和emoji表情),并在其附近展示图片
- 【JAVA长虹键法】第八式 代理模式(23种设计模式)
- 华为摄像头采集自动聚焦崩溃
- 约束优化:约束优化的三种序列无约束优化方法
- 在ASP.NET 中检测手机浏览器(转)
- 军民链智合创:BitCEO.world比特维度全球CEO发展大会@台北HiFi++
- 简单的diy固态硬盘
热门文章
- Asp学习者完整攻略之三:操作SQL:SQL基础:
- 从2元钱到年赚20亿元的传奇经历!相信对你一定会有很大的启发!
- 使用XAMPP轻松建站(上)
- ST众泰:未与长城汽车签署过任何战略协议
- 官方揭晓iQOO 9正反面宣传照:挖孔直屏+巨型三摄相机模组
- 新的“钉子户”来了!一加9RT将于10月13日正式亮相
- 贾跃亭旗下FF公司遭做空 美国机构质疑其造车能力:卖不出一辆FF91
- 江苏通报“中通宠物盲盒”事件:已立案调查
- 微信支付分使用用户数超2.4亿 每日使用笔数达千万级
- 疑似全新华为Mate X2折叠屏手机入网:麒麟9000重磅加持