在Vim中,什么是"备用文件"?

Nat*_*ong 34 vim

我刚刚:help registers在Vim中运行并注意到#'包含备用文件的名称'.

我看过一个重命名文件的例子,如下所示:

" Save the current file, foo.txt, as bar.txt
:w bar.txt
" Start editing bar.txt
:e#
Run Code Online (Sandbox Code Playgroud)

显然,在这种情况下,您刚刚保存的文件是"备用文件".

有人可以给我一个更为一般的"备用文件"定义以及你可以用它做什么?

Ben*_*oit 25

备用文件是在当前窗口中最后编辑的文件.实际上,当您使用某个命令打开新缓冲区时,如果显示的缓冲区具有与之关联的文件名,则该文件名将记录为备用文件名.

:help alternate-file.

  • 是啊,但是有什么用呢? (2认同)

PDu*_*Dug 19

非常有用......

粘贴在我刚刚查看当前文件的文件名中.

您可以<C-R>#在插入模式或"#p正常模式下使用此功能.

对...没有用

在两个文件之间来回跳转.它做得很好,但这只是我通常不需要做的事情.

即使在给出的例子中,我也可能会使用:saveas bar.txt.

一个例子:

假设您正在进行一些C编程并想要调用某些函数.您无法记住该函数的名称,因此您在当前位置放置一个标记,mA并使用标记或grep跳转到几个不同的文件,以找出声明函数的位置以及实际调用的内容.

啊 - 找到了.您可以复制名称并返回标记yiw'A

呃 - 哦 - 我们还需要#include文件!简单 - 只需使用备用文件名寄存器将文件名粘贴到...Gi#include"<C-R>#"

很高兴你避免分心回到函数的声明并通过以下方式复制文件名:let @"= @%或类似的东西.

在文件之间跳转时我宁愿做什么:

  • 编辑两个文件时,分割它们可能更容易,因此您可以同时将它们保留在屏幕上.如果我正在编辑2个文件,我通常会以某种方式比较它们.
  • 通常我对1-3个文件感兴趣(任何更多,我感到困惑).我经常跳进或直接打开许多其他文件.标记有趣的文件,或遍历跳转列表通常是在这种情况下解决的方法.
  • 如果你正在编辑C/C++,你要在文件和它的标题之间切换,请使用插件!它会更方便.

  • " 在 C++ 源代码和头文件之间切换的本机方式 `nnoremap &lt;F4&gt; :e %:p:s,.h$,.X123X,:s,.cpp$,.h,:s,.X123X$,.cpp, &lt;CR&gt;` (2认同)

Rob*_*ker 7

我在缓冲区上下文中使用它来返回我正在编辑的最后一个缓冲区

vim foo bar 
:n 
:e#
Run Code Online (Sandbox Code Playgroud)

在那种情况下会带你回到foo


Xav*_* T. 5

我一直将“备用文件”解释为“上一个文件”,因此这是跳回到您正在编辑的缓冲区的便捷方法。