Function 如何将文本键入Vim';在不执行命令行的情况下执行命令行?

Function 如何将文本键入Vim';在不执行命令行的情况下执行命令行?,function,vim,Function,Vim,我的背景: 我经常用VIM做笔记。我想要一个VIM函数在命令行中键入一个标准头(具体来说,是一个时间戳,如:sav 20180418_u),而不执行;控件将在VIM仍处于命令模式时返回(以便用户可以附加文件名的其余部分并执行) 我的基本困难:我似乎无法让Vim函数/宏进入命令模式,向命令行提供文本,然后在保持命令模式且不执行提供的文本时退出 这可能吗 谢谢。您可以使用expand()函数。例如,如果您当前正在编辑文件20180418_uu418.txt,则可以键入: :sav <c-r&g

我的背景: 我经常用VIM做笔记。我想要一个VIM函数在命令行中键入一个标准头(具体来说,是一个时间戳,如
:sav 20180418_u
),而不执行;控件将在VIM仍处于命令模式时返回(以便用户可以附加文件名的其余部分并执行)

我的基本困难:我似乎无法让Vim函数/宏进入命令模式,向命令行提供文本,然后在保持命令模式且不执行提供的文本时退出

这可能吗

谢谢。

您可以使用
expand()
函数。例如,如果您当前正在编辑文件
20180418_uu418.txt
,则可以键入:

:sav <c-r>=expand("%:r")<cr>

非常感谢。是否可以在Vim函数中对其进行编码(这样我就可以通过密钥绑定来启动它)?我可能会使用
strftime(“%Y%m%d”)
,而不是
expand(“%:t”)
(它不会为我返回任何内容)。关于Vim函数中的命令模式内容,有一些我似乎不理解的基本内容:我尝试输入
:sav=strftime(“%Y%m%d”)
作为函数的一行(未运行)。您可以使用命令行映射:
cnoremap'e=strftime(“%Y%m%d”)
。现在,在命令行中键入
'e
将扩展到
20180418\u
谢谢,对于我来说,这是一个足够接近的解决方法。:)
:sav 20180418_