在 Vim 中保存时自动将当前日期附加到文件名

Bri*_*roe 3 vim autocmd

我在阅读学术文章时使用 vim 做笔记。我更喜欢为我所做的每个笔记创建一个新的文本文件,但组织它们变得乏味。

我想要做的是设置一个自动命令来检测我是否在某个目录中,写入一个新文件,然后将当前日期和时间附加到我写的任何文件名中。

所以如果我有:

:pwd
/path/to/projects
Run Code Online (Sandbox Code Playgroud)

当我打字

:w Notes
Run Code Online (Sandbox Code Playgroud)

我希望 vim 将文件保存为“ Notes - <CURRENT DATE - TIME >.txt

我相信它涉及在我的 vimrc 中声明如下内容:

autocmd BufNewFile,BufWrite "/path/to/projects/*" <command involving strftime("%Y-%m-%d_%H-%M")>
Run Code Online (Sandbox Code Playgroud)

但我想不通是什么。有任何想法吗?我在 Debian Linux 上使用 Vim 7.3。

Ing*_*kat 5

你很亲近。我认为最好在创建文件时重命名文件;在写入期间弄乱文件名会使这变得更加困难(例如,如果您重新打开现有笔记,或者只是再次写入缓冲区怎么办?)

:file命令可用于重命名当前文件;当前文件名在%特殊标识符中。创建新文件时触发,这将完成以下工作:

autocmd BufNewFile /path/to/projects/* execute 'file' fnameescape(expand('%') . strftime(" - %Y-%m-%d_%H-%M.txt"))
Run Code Online (Sandbox Code Playgroud)

如果您不想考虑原始文件名,这将变得更加容易:

autocmd BufNewFile /path/to/projects/* execute 'file' fnameescape(strftime("Notes - %Y-%m-%d_%H-%M.txt"))
Run Code Online (Sandbox Code Playgroud)