我如何构建插入当前日期的 vim 键映射?

我如何构建插入当前日期的 vim 键映射?

我正在尝试创建一个 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>

相关内容