如何创建调用shell date命令的自定义Vim命令?解决%符号解析问题
解决Vim自定义日期命名文件命令的%符号冲突问题
问题背景
需要创建一个Vim自定义命令,调用shell的date命令生成当日日期命名的Markdown文件,使用的date命令格式为:
date +%Y-%m-%d-%B%d.md
(注:原命令中的多余右括号)属于笔误,需移除)
尝试在.vimrc中添加的自定义命令为:
command Post e !date +%Y-%m-%d-%B%d.md
但该命令无法正常工作——Vim中%是特殊字符,代表当前文件名,导致传给date命令的参数被错误解析,无法生成目标文件。
解决方法
方法1:转义%符号
Vim中用%%表示字面意义的%,以此避免被解析为当前文件名。修改后的自定义命令如下:
command Post e !date +%%Y-%%m-%%d-%%B%%d.md
方法2:用execute拼接命令
通过execute函数拼接shell输出的方式更直观,也能避免转义问题:
command Post execute 'edit ' . trim(system('date +%Y-%m-%d-%B%d.md'))
system()调用shell命令并返回输出结果trim()去除输出末尾的换行符execute执行拼接后的edit命令打开新文件
内容的提问来源于stack exchange,提问作者jlconlin
相关产品推荐
相关产品推荐

