自定义Vim命令:基于日期自动打开/创建文件的功能问题
嗨,这个问题其实很好解决,我来给你一步步捋清楚!
问题根源
你之前的<Leader>gn映射末尾加了<cr>,这相当于告诉Vim「执行完这条命令后自动按回车」,所以不用手动敲回车就能打开文件夹。而你现在的<Leader>gt映射应该是漏掉了这个<cr>,所以Vim只会把命令加载到命令行,等你手动确认执行。
完美解决方案:自动打开/创建当日笔记
既然你的需求是基于日期自动打开或创建文件,我们可以直接把日期生成逻辑写到映射里,同时加上<cr>实现一键执行:
nnoremap <Leader>gt :execute 'edit ~/Dropbox/notes/' . strftime('%Y-%m-%d') . '.md'<cr>
拆解一下这个命令:
nnoremap:比普通的map更安全,避免递归映射问题(推荐你始终用这个)execute:用来动态拼接命令字符串,因为我们需要把日期变量和文件路径结合起来strftime('%Y-%m-%d'):Vim内置的日期函数,生成YYYY-MM-DD格式的日期(你可以改成自己习惯的格式,比如%Y%m%d、%b_%d_%Y都没问题).md:假设你用Markdown格式写笔记,改成你常用的后缀就行(比如.txt)<cr>:关键!让Vim自动执行这条命令,不用手动回车
现在按<Leader>gt,Vim会直接打开~/Dropbox/notes/2024-05-20.md(假设今天是2024年5月20日),如果这个文件不存在,会自动创建它——完全不用手动导航或新建,完美匹配你的需求!
额外小提示
如果你想保留原来打开文件夹的功能,同时新增当日笔记的快捷方式,两个映射可以共存:
nnoremap <Leader>gn :e ~/Dropbox/notes<cr> nnoremap <Leader>gt :execute 'edit ~/Dropbox/notes/' . strftime('%Y-%m-%d') . '.md'<cr>
这样<Leader>gn依然打开文件夹,<Leader>gt直接打开当日笔记,效率拉满!
内容的提问来源于stack exchange,提问作者Riley Bracken
相关产品推荐
相关产品推荐

