根据“实用 Vim”和 Vim 帮助,快捷方式<C-^>
应该可以返回到编辑的文件。我使用 输入 netrw :E
。
作为一项实验,我尝试重新映射默认快捷方式,如下所示:
:nnoremap <C-y> <C-^>
我使用后<C-y>
得到的反馈是:
E23: No alternate file
...但我没有回到编辑的缓冲区。
我怎样才能返回到已编辑的缓冲区,或者就此而言,我怎样才能调试此问题以找出是什么阻止我按照记录的程序返回到该缓冲区?
注意:我在命令提示符上设置映射,而不是在中.vimrc
。
答案1
实际上,备用文件是先前在同一窗口中打开的缓冲区:
:e file1
:e file2
<C-^> shows file1
<C-^> shows file2
<C-^> shows file1
…
<C-^>
用于在两个缓冲区之间快速切换在同一个窗口中。
您可能没有可以跳转到的“备用文件”(可能是 netrw 的东西,对我来说没什么意义),而且<C-^>
在这里没有用。
相反,使用:bd
删除当前缓冲区 (netrw) 并返回上一个缓冲区。请注意,您可以:Rex
随时使用 来返回最新的 netrw 窗口。
如果您不打开文件(您使用 netrw 来查找某种信息),您的工作流程可能是:
:Ex
(exploration)
:bd
if you want to start a new exploration,
:Ex
:bd
if you want to explore from where you were,
:Rex
:bd
但是,您应该阅读,:h netrw
因为它有更多可能对您有很大帮助的命令:(:Hex[plore]
在水平分割窗口中打开 netrw)、:Vex[plore]
(在垂直分割窗口中打开 netrw)、:Tex[plore]
(在新选项卡中打开 netrw)... 这些命令将让您在 Safari 上保持某些“状态”。
作为替代方案,<C-o>
和<C-i>
是两个方便的快捷方式,可让您在跳转列表中上下移动。 在您的情况下,<C-o>
可能是返回上一个缓冲区的最快方法。
答案2
我看不出映射与 有什么关系E23
;使用原始命令时应该会得到相同的错误<C-^>
。可能尚未设置备用文件;一些插件还明确使用该:keepalt
命令来避免记录缓冲区更改。
您可以通过以下方式检查备用文件名
:echo expand('#')
或者,在 的输出中:ls
查找带有#
符号的行。