你如何从Vim中的'gf'返回

时间:2020-03-06 14:43:23  来源:igfitidea点击:

我将Vim用于以Unix模式安装的Windows。多亏了这个站点,我现在使用gf命令转到光标所在的文件。

我正在寻找命令之一:

  • 返回上一个文件(类似于ctags的Ctrl + T),或者
  • 重新映射gf以在新窗口中自动启动新文件。

解决方案

Ctrl-Shift-6是一个。

:e#?是另一个。

我用Ctrl-O

只需使用:e#后接Enter,基本上就是说要编辑最后一个文件。

参见:help备用文件。

我不知道我们问题的第2部分的答案,但我可以为第1部分提供帮助。

:e#

Vim会维护一个正在编辑的文件(缓冲区)列表。如果我们输入

:buffers

它将列出我们当前正在编辑的所有文件。该列表中带有%的文件是当前文件。旁边有一个是替代文件。 :e将在当前文件和备用文件之间切换。不用输入那么多,而是将F2映射到:eso,我可以轻松地在当前文件和备用文件之间切换。我通过将命令添加到.vimrc来将命令映射到F2

nmap `<F2> :e#<CR>`

我经常为此使用Ctrl-6.

它很方便,因为它使我可以在两个文件之间快速来回跳转。

当我们打开新文件(使用gf或者:n或者其他命令)时,旧文件仍保留在缓冲区列表中。我们可以使用:ls列出打开的文件

如果要在vim中的缓冲区之间轻松导航,可以创建如下映射:

nmap <M-LEFT> :bN<cr>
nmap <M-RIGHT> :bn<cr>

现在,我们可以使用Alt +左​​箭头或者Alt +右箭头在缓冲区之间切换。

有关映射的完整文档在这里:

:help map.txt

我没有看过gf命令,但我想它使用了:e或者:find命令。
假设这是正确的,只需将:e或者:find替换为:new(或者:vnew进行垂直拆分),文件将在新窗口中打开,而不是在同一窗口中打开。

例如

"Switch between header and cpp
nmap ,s :find %:t:r.cpp<CR>
nmap ,S :new %:t:r.cpp<CR>
nmap ,h :find %:t:r.h<CR>
nmap ,H :new %:t:r.h<CR>
nmap ,F :new =expand("<cfile>:t")<CR><CR>
nmap ,d :new =expand("<cfile>")<CR><CR>

我们可能要使用CTRL-W gf在新标签页中打开文件。

我们可以一如既往地通过:bd来关闭新打开的文件,或者使用CTRL-6和其他常用的更改缓冲区的方法。

我有CTRL-W f可以工作。
令人沮丧的是,我花了这么长时间完善这些命令的映射,才发现有内置版本。

使用gf降级到文件中,然后使用:bf取回