繁体   English   中英

如何使用 shell 命令创建自定义 vim 命令

[英]How to create custom vim command with shell command

我经常用今天的日期创建新文件。 所以,我想让它成为一个调用 shell date命令的命令。 我使用的date命令是:

date +%Y-%m-%d-%B%d).md

我试图在我的.vimrc中使用这个自定义命令从 Vim 中调用这个相同的 shell 命令:

command Post e !date +%Y-%m-%d-%B%d.md

但这不起作用,因为%表示 Vim 中的当前文件名,并且没有创建所需的文件名。

您可以使用内置的:help strftime()函数代替date命令。 这使得该命令更具可移植性,并且由于该函数是在:edit执行之前评估的,因此您不会得到:help cmdline-special的不良副作用。

:command! Post execute 'edit ' .. strftime('%Y-%m-%d-%B%d') .. '.md'

我同意@romainl 使用内置函数的想法是一种比仅在 shell 中委托更好的方法。 为了显示如何打开 (:edit) 由 shell 命令生成的文件名将是这样的:

:command! Post execute 'let file=system("date +\\%Y-\\%m-\\%d-\\%B\\%d.md") | normal! :e ' .. file .. '^M'
  • 您需要用双 \ 引用 '%'。
  • 您需要在调用:edit命令之前调用 shell 命令,如果您执行以下操作: execute "normal! :e !date +%Y-%m-%d-%B%d.md" date 命令不会进行评估,但只是禁止粘贴到:edit

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM