关于编辑器:如何从Vim中的’gf’返回

How do you return from 'gf' in Vim

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

我正在寻找命令之一:

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

  • 我使用Ctrl-O


    我经常为此使用Ctrl-6

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


    您可能要使用CTRL-W gf在新选项卡中打开文件。

    您可以像以前一样使用:bd关闭新打开的文件,或者使用CTRL-6和其他常用的更改缓冲区的方法。


    使用gf下降到文件中,然后使用:bf返回


    只需使用:e#,然后使用Enter-基本上说编辑最后一个(最新)文件。


    Ctrl-Shift-6是一个。

    :e#?是另一个。


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

    1
    :e#

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

    1
    :buffers

    它将列出您当前正在编辑的所有文件。该列表中带有%的文件是当前文件。旁边带有#的是备用文件。 :e#将在当前文件和备用文件之间切换。我将F2映射到:e#而不是键入太多内容,因此可以轻松地在当前文件和备用文件之间切换。我通过将命令添加到.vimrc将其映射到F2

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


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


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

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

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

    现在,您可以使用Alt +左??箭头或Alt +右箭头在缓冲区之间切换。

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

    1
    :help map.txt

    参见:help替代文件。


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

    例如

    1
    2
    3
    4
    5
    6
    7
    "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>