如何浏览Vim文件历史记录

4
我正在使用带有MRU插件的Vim 7.3。
使用此插件,当您键入:MRU时,会出现一个新窗口,其中包含最近使用的文件。这很酷,但我想要比那更具体的东西:
假设我只使用一个窗口。我首先打开文件A,然后是文件B,最后是文件C。
现在我正在文件C上工作,我想通过按一个按键回到文件B,然后再回到文件A,就像浏览器历史记录中的后退按钮一样。我还想做同样的事情向前移动,从文件A返回到文件B,最后返回到文件C,就像玩浏览器历史记录一样。
我该怎么做?
3个回答

7

Vim记录了您在文件内部和文件之间进行的最近100个跳转动作。您可以使用Ctrl-O返回先前的位置,使用Ctrl-I再次前进。


这几乎就是我想要的,但我只想从一个文件导航到另一个文件,而不是通过这些文件内部所做的所有跳转。有没有什么过滤器或类似的东西可以实现这个功能? - user645579
2
我的 EnhancedJumps 插件 提供了一个 g_CTRL-O 映射,可以实现这一点。 - Ingo Karkat

4
文件A、B和C在Vim术语中被称为“缓冲区”。你想要的是直接从一个缓冲区跳转到另一个缓冲区,或者选择你想要跳转的缓冲区的能力。
从一个缓冲区跳转到另一个缓冲区很容易。可以使用:b命令或其相关命令来实现:
:b filename<CR>         " jump directly to the named buffer
:b fil<tab>             " select from <tab>-navigable menu if
                        " more than one match, completes the 
                        " filename otherwise
:b <tab>                " select from <tab>-navigable menu
:2b                     " go to buffer number 2
:bfirst<CR>    (or :bf) " self-descriptive
:blast<CR>     (or :bl) " self-descriptive
:bnext<CR>     (or :bn) " self-descriptive
:bprevious<CR> (or :bp) " self-descriptive

从列表中选择一个缓冲区也很容易::ls<CR> 显示了一个带编号的缓冲区列表并等待命令。此时,您可以键入 :b <number><CR>:<number>b<CR> 来跳转到所选缓冲区。您可以将以下映射添加到您的~/.vimrc 中,以使整个过程更快:
nnoremap <leader>b :ls<CR>:b<space>

您还可以使用相当多的缓冲区切换插件(页面的其余部分也充满有趣的信息)。

我会在可能时使用CtrlP,如果不能使用,则使用上面的映射。


0
我也强烈推荐使用 Tim Pope 的 Unimpaired 插件,它可以让你使用 [b]b 快捷键来执行 :bprev:bnext 命令,以及更多其他功能。

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