在 Vim 中创建光标下的文件

Ale*_*lex 10 vim

我有一个文件列表

file1.ext
file2.ext
...
Run Code Online (Sandbox Code Playgroud)

如果我的光标在 file2.ext 内,如何创建一个名为 file2.ext 的文件。有点像gf仅用于创建新文件(这是一种假设情况,只是认为有一天可能会有所帮助)。

小智 18

我想到的第一件事是使用touch命令将光标下的文件名传递给它。

:map <silent> <leader>cf :!touch <c-r><c-p><cr><cr>
Run Code Online (Sandbox Code Playgroud)

但是有一个纯 Vim 解决方案可跨平台移植。内置函数writefile将列表逐行写入文件。自然地,当输入列表为空时,它会创建一个空文件。(有关:help writefile详细信息,请参阅。)我们可以利用这种副作用:

:map <silent> <leader>cf :call writefile([], expand("<cfile>"), "t")<cr>
Run Code Online (Sandbox Code Playgroud)

请注意,可以使用不同的expand模式来调整文件名提取(请参阅 参考资料:help expand())。

顺便说一句,如果不想创建文件,而只想打开它进行编辑,可以定义一个类似gf映射:

:map <leader>gf :e <cfile><cr>
Run Code Online (Sandbox Code Playgroud)

其中:e命令可以替换为:tabe或类似的命令。