我在阅读学术文章时使用 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。
你很亲近。我认为最好在创建文件时重命名文件;在写入期间弄乱文件名会使这变得更加困难(例如,如果您重新打开现有笔记,或者只是再次写入缓冲区怎么办?)
该: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)