有没有办法在Vim中引用命令中当前选定的文本?

Tom*_*aps 4 vim

在我的C头文件中说我想包含另一个尚未创建的文件:

#include "AnotherFile.h" /*not being created yet*/
Run Code Online (Sandbox Code Playgroud)

现在,我在Visual Mode中选择文件,
#include" AnotherFile.h"

如何使用我选择的名称创建一个新文件?我的意思是,

:e  {something that  refers to what I selected} 
Run Code Online (Sandbox Code Playgroud)

Ren*_*ger 6

我能想到的最接近的是创建一个函数:

function! W() range
  execute "e " .  getline("'<")[getpos("'<")[2]-1:getpos("'>")[2]] 
endfu
Run Code Online (Sandbox Code Playgroud)

然后,您可以选择单词并输入:call W()+ enter,这将打开新缓冲区.

编辑如果#include修改了包含该缓冲区的缓冲区,则上述函数无法正常运行.在这种情况下,以下功能更适合:

function! W() range
  let l:fileName = getline("'<")[getpos("'<")[2]-1:getpos("'>")[2]] 
  new      
  execute "w " . l:fileName
endfu
Run Code Online (Sandbox Code Playgroud)

编辑2您也可以尝试键入:e <cfile>(请参阅:help <cfile>).

编辑3最后,在:help gf你发现隐藏之下

If you do want to edit a new file, use: >
        :e <cfile>
To make gf always work like that: 
        :map gf :e <cfile><CR>
Run Code Online (Sandbox Code Playgroud)