在我的C头文件中说我想要包含另一个尚未创建的文件:
#include "AnotherFile.h" /*not being created yet*/
现在,我在Visual Mode中选择文件,
#include“AnotherFile.h
”
如何使用我选择的名称创建新文件?我的意思是,
:e {something that refers to what I selected}
答案 0 :(得分:6)
我能想到的最接近的是创建一个函数:
function! W() range
execute "e " . getline("'<")[getpos("'<")[2]-1:getpos("'>")[2]]
endfu
然后您可以选择单词并输入:call W()
+ enter,这将打开新的缓冲区。
编辑如果修改了包含#include
的缓冲区,则上述函数无效且无错误。在这种情况下,以下功能更适合:
function! W() range
let l:fileName = getline("'<")[getpos("'<")[2]-1:getpos("'>")[2]]
new
execute "w " . l:fileName
endfu
编辑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>
答案 1 :(得分:4)
在命令行模式CTRL-R
后跟寄存器“name”插入指定寄存器的内容。
假设您刚刚选择了文件名,请按 y : e SPACE CTRL + R “ ENTER 表示:
y
- 将选定的文本移入未命名的注册:e
+空格 - 进入命令行模式并开始输入:edit
命令CTRL-R"
- 只插入笨拙的文字请参阅:help c_CTRL-R
,:help registers
。
BTW,CTRL-R
在插入模式下也是如此,我经常使用它。见:help i_CTRL_R
答案 2 :(得分:1)
假设您在可视模式下选择了文件名:
y
q:
打开命令窗口i
进入命令窗口内的插入模式,然后输入e
Esc
猿进入正常模式,然后按p
粘贴被取消的文件名当然,如果您经常需要这样做,您应该创建一个宏并将其映射到一些易于记忆的组合键。
答案 3 :(得分:1)
大多数情况下,您只想从当前光标位置周围抽出有效的文件名。 Vim具有检测合理/有效文件名(isfname
)的功能,您可以在不选择任何内容的情况下使用它,输入 C-r C-f
或者,当前选择的单词有 C-r C-w 。
正如其他人所提到的,您也可以使用 Cr <reg>
来引用任何寄存器(例如 Cr “ 为默认寄存器)