如何在Vim中从“gf”返回

209

我使用了在Unix模式下安装的Windows版Vim。感谢该网站我现在使用gf命令可以跳转到光标下的文件。

我正在寻找一个命令来:

  1. 回到上一个文件(类似于 ctags 的 Ctrl+T),或
  2. 重新映射 gf 命令,以自动在新窗口中启动新文件。
11个回答

322

我使用 Ctrl-O


46
使用CTRL-O可以回到跳转列表中的旧位置,<Tab>或CTRL-I可以前往新位置。 - Sébastien RoccaSerra
5
@g33kz0r 的助记符应该是 O = 出, I = 进 => Ctrl - O 带你出去,Ctrl 带你进来。如果每次跳跃就像走过一扇门一样的话。 - kronn
CTRL-O 会跳转到上次访问的位置,当在新文件中搜索时,这很烦人。我更喜欢 Shift-Ctrl-6(在我的情况下 Ctrl-6 不起作用)。 - Adriano
我认为paxdiablo的答案更好。:e#只能回到上一步(即使我们打开了文件或目录)。ctrl-o跳转到第一个文件。 - Chan Kim

83

我经常使用Ctrl-6来实现这个功能。

这很方便,因为它允许我快速在两个文件之间切换。


53

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

你可以像往常一样使用 :bd 关闭新打开的文件,或使用 CTRL-6 和其它常用的切换 buffer 的方法。


7
对我而言,选项卡比缓冲区更方便,使用 nnoremap gf <C-W>gf 在新标签页中打开可能更好。 - Searene

15

只需使用:e#,然后按下Enter,这基本上是在编辑最后(最近)的文件。


14

使用 gf 命令进入文件,使用 :bf 命令返回。


1
我在一个标签页中打开了两个窗口,但这只是在第一个窗口中打开了第二个窗口,而没有跳回到先前的缓冲区。 - Kenny Evitt

12

Ctrl-Shift-6 是一个快捷键。

:e#↲ 是另一个快捷指令。


10
不必进行转换。停止虐待你的手指。 - Zathrus
6
嗯,我有点老派。在我多年前工作时使用的Wyse终端上,Ctrl-6无法与vi一起使用。你知道,有些事情是铭刻在心的。而在此组合中不使用Shift几乎不会对我的手指造成太大的伤害。嘿,至少你尽力了。希望对你有所帮助。再见。 - tzot
1
这将切换到所谓的备用文件 - jpaugh

8

我成功使用了CTRL-Wf
令人沮丧的是,我花费了很长时间来完善这些命令的映射,才发现其实有内置版本。


5

我不知道你问题的第二部分的答案,但是我可以帮你解决第一部分。使用

:e#

Vim维护着一个文件列表(缓冲区),它正在编辑这些文件。如果您输入
:buffers

它将列出您当前正在编辑的所有文件。列表中带有%的文件是当前文件。带有#的文件是备用文件。:e#将在当前文件和备用文件之间切换。为了避免输入那么多,我将F2映射到:e#,这样我就可以轻松地在当前文件和备用文件之间切换。我通过将此命令添加到.vimrc文件中将命令映射到F2。

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

3
我认为你不希望使用 :e#,因为那可能会重新载入文件。相比之下,:b#则可以解决这个问题。 - lambacck
好的,这会切换到另一个缓冲区而不重新加载它。 - codebunny

4
当您使用gf:n等命令打开一个新文件时,旧文件会保留在缓冲区列表中。您可以使用:ls命令列出已打开的文件。
如果您想在Vim之间轻松切换缓冲区,可以创建以下映射:
nmap <M-LEFT> :bN<cr>
nmap <M-RIGHT> :bn<cr>

现在您可以使用Alt+Alt+在缓冲区之间进行切换。
有关映射的完整文档在此处:
:help map.txt

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接