I understand that limiting myself to vanilla Vim (not using plugins) limits the power of the editor, but as I switch between different machines frequently, it is often too m
The answer depends a lot on your preferences and circumstances. Some examples:
<C-^>
is very handy. In general, the alternate file is an important concept.:split
s turn the problem of locating a buffer from locating the window (once you've got all buffers opened). You can use [N]<C-w><C-w>
to quickly switch to it.:[N]b[uffer]
and :[N]sb[uffer]
commands are quite handy; :ls
tells you the numbers.Plugins (or at least custom mappings) can improve things a lot, and there's a whole variety on this topic on vim.org. There are various mechanisms to distribute your config (Pathogen + GitHub, Dropbox, ...), or you could remotely edit server files through the netrw plugin that ships with Vim.
You can do wildcard tab completion on the command line without any plugins. e.g.
:e src/**/foo*<tab>
will let you cycle through all the files starting with 'foo' in the directory tree under ./src and select the one you want to edit.
If you have already edited the file and it is still in a buffer then you can switch to it with:
:b foo<tab>
which will cycle through all the buffers with 'foo' in the path. You may need to set the wildmode and wildmenu options to get the behaviour you want. I have
wildmode=longest:full
wildmenu
in my .vimrc.
I had the same issue with Vim.
The last thing I want is to depend on plugins for a task as mundane as file switching.
I added the following lines to .vimrc
set path+=**
set wildmenu
And BAM! I can now :find any/filename/in/any/folder/
as long as vim is in the root directory of the project. Tab completion works. Wildcards work!
Once files are opened already, and there are a ton of buffers in the background (you could use :ls
to see all buffers), running :b any/file <TAB>
will fuzzy search for all buffers and jumps to the required file. In case it is not unique there will be a wildmenu of tabs (hence the 2nd line in .vimrc) which can be selected using tab.
My answer is coming from this awesome video
https://www.youtube.com/watch?v=XA2WjJbmmoM&feature=youtu.be&t=489
There are more tricks in and I recommend watching it.
If you are on a filename and want to jump to that file, gf will do it for you. I also like using ctags, which isn't a plugin; you just build the tags and can easily jump around your codebase.
If you want switch between files in vim editor, please see below answer
First press Esc
key to exit from edit mode.
Then type :e
to check current file path.
if you want to go another file then type :e /path-of-file.txt/
using this you are able to switch.
If you want to go previous file simply type :e#
which switch to previous file path.
Sometimes it is also handy to go sequentially through a list of files (e.g., if you did something like vim *.php
to open several files at once). Then you can use :n[ext]
(as well as :prev[ious]
, :fir[st]
, and :la[st]
) for navigation (in addition to what was suggested in the other answers).