How do you return from 'gf' in Vim

VimEditor

Vim Problem Overview


I am using Vim for windows installed in Unix mode. Thanks to this site I now use the gf command to go to a file under the cursor.

I'm looking for a command to either:

  1. return to the previous file (similar to Ctrl+T for ctags), or
  2. remap gf to automatically launch the new file in a new window.

Vim Solutions


Solution 1 - Vim

I use Ctrl-O

Solution 2 - Vim

I frequently use Ctrl-6 for this.

It's handy because it allows me to quickly jump back and forth between the two files.

Solution 3 - Vim

You might want to use CTRL-W gf to open the file in a new tab.

You can close the newly opened file as always with :bd, or use CTRL-6 and other usual ways of changing buffers.

Solution 4 - Vim

Just use :e# followed by Enter - that basically says to edit the last (most recent) file.

Solution 5 - Vim

Use gf to descend into a file and use :bf to get back

Solution 6 - Vim

Ctrl-Shift-6 is one.

:e#↲ is another.

Solution 7 - Vim

I got CTRL-Wf to work.
It's quite depressing that I've spent so long perfecting maps for these commands only to discover that there are built-in versions.

Solution 8 - Vim

I don't know the answer to part 2 of your question, but I can help with part 1. Use

:e#

Vim maintains a list of files (buffers) that it's editing. If you type

:buffers

it will list all the files you are currently editing. The file in that list with a % beside it is the current file. The one with the # beside it is the alternate file. :e# will switch between the current and alternate file. Rather than type that much, I map F2 to :e# so I can easily flip between the current and alternate files. I map the command to F2 by adding this to .vimrc

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

Solution 9 - Vim

Solution 10 - Vim

When you open a new file (with gf or :n or another command) the old file remains in a buffer list. You can list open files with :ls

If you want to navigate easily between buffers in vim, you can create a mapping like this:

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

Now you can switch between buffers with Alt+ or Alt+.

The complete documentation on mappings is here:

:help map.txt

Solution 11 - Vim

I haven't looked at your gf command but I imagine it uses the :e or :find command.
Assuming that this is correct, simply replace the :e or :find with :new (or :vnew for a vertical split) and the file will open in a new window instead of the same one.

e.g.

"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>

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJayGView Question on Stackoverflow
Solution 1 - VimjopView Answer on Stackoverflow
Solution 2 - VimDominic Dos SantosView Answer on Stackoverflow
Solution 3 - VimRoman OdaiskyView Answer on Stackoverflow
Solution 4 - VimpaxdiabloView Answer on Stackoverflow
Solution 5 - VimRamView Answer on Stackoverflow
Solution 6 - VimtzotView Answer on Stackoverflow
Solution 7 - VimgroovyspacemanView Answer on Stackoverflow
Solution 8 - VimcodebunnyView Answer on Stackoverflow
Solution 9 - VimBruno De FraineView Answer on Stackoverflow
Solution 10 - VimOliView Answer on Stackoverflow
Solution 11 - VimgroovyspacemanView Answer on Stackoverflow