Answers:
我想到的第一件事是使用touch
命令将光标下的文件名传递给它。
:map <silent> <leader>cf :!touch <c-r><c-p><cr><cr>
但是,有一个可以跨平台移植的纯Vim解决方案。内置函数writefile
逐行将列表写入文件。自然,当输入列表为空时,它将创建一个空文件。(请参阅参考资料:help writefile
。)我们可以利用这种副作用:
:map <silent> <leader>cf :call writefile([], expand("<cfile>"), "t")<cr>
请注意,可以使用其他expand
模式来调整文件名提取(请参阅参考资料:help expand()
)。
顺便说一句,如果一个人不想创建一个文件,而只是想打开它进行编辑,则可以定义一个类似gf
的映射:
:map <leader>gf :e <cfile><cr>
该:e
命令可以替换为:tabe
或类似命令。
我在上面的ib中得到了一个很好的答案,并将其扩展如下。我的目标是根据需要使用vim创建新的markdown文件(在本例中为Gollum Wiki)
我首先尝试:
map <silent> <leader>cf :call writefile([], expand("<cfile>"), "t")<cr>`
以上确实按答案中所述工作。但是,起初我以为它没有用,因为我实际上没有在vim中看到该文件打开。使用下面的第二段代码将打开一个新文件-这正是我想要的。因此,我将它们组合在一起并尝试:
map <leader>cf :e <cfile><cr>
但这不适用于Wiki,因为当您尝试使用类似[[the-new-file]]
Wiki语法的语法在Wiki中创建新文件时,不允许在方括号中扩展文件。但是,Vim在创建新文件时需要知道扩展名才能正常工作。在这种情况下,我使用了:
map <leader>cf :e <cfile>.md<cr>
因此我可以创建新的降价文件。有一些方法可以进一步自定义此内容(例如,通过不对扩展名进行硬编码),但是上面的方法可以很好地满足我的需求。如果我需要其他扩展名(例如,保存.wiki文件),则可能会选择简单的路线并制作另一个地图,例如:
map <leader>cwf :e <cfile>.wiki<cr>
作为附带的好处,您可以使用相同的命令来打开已经存在的markdown文件(gf
由于缺少文件扩展名,因此标准命令在这里不起作用)。
gf
如果set suffixesadd=.wiki
。至少在仅包含一项的情况下,您的改进版本才是值得cf
尊重的版本suffixesadd
。
<cfile>
代替教学<C-r><C-f>