我正在尝试创建一个 vim 键映射,它将启动一个新文件的创建,该文件的名称以当前日期为前缀,等待我完成输入文件名。
更准确地说,我想要点击<Leader>n
,然后让 vim 在命令行中为我输入:
:new 2014-08-05-
... 等我完成文件名并点击<CR>
。
我该怎么做?我试过了,但它并没有达到我的预期,因为它只是回显了日期。我怎样才能让 vim 动态地将字符插入命令行?我是不是错过了一些简单的东西?
function! NewNotesFile()
echon ":new " . strftime("%F")
endfunction
nnoremap <Leader>n :call NewNotesFile()<CR>
答案1
有两种方法。您可以通过以下方式将表达式的结果插入到命令行:help c_CTRL-R
:
:nnoremap <Leader>n :new <C-r>=strftime('%F')<CR>
此映射反映了您如何以交互方式进行映射。或者,您可以通过以下方式评估映射的右侧:help map-expr
:
:nnoremap <expr> <Leader>n ':new ' . strftime('%F')
答案2
使用c_CTRL-\_e
(这是一个帮助标签,因此请查看:h c_CTRL-\_e
是否有不清楚的地方)例如:
nnoremap <Leader>n :<C-\>e"new " . strftime("%F")<CR>