Monday, September 17, 2012

How to use multiple files efficiently in vim editor

Many time we need to work with multiple files all together. If its
windows system then we can use some GUI based editor to accomplish our
task. But what if you are on putty or have only CLI(Command Line
Interface) as an option to edit your files. I prefer using vim editor.
After doing some experiments and knowing some important commands, I
though to share with you. So i have written few commands point wise
which may be useful for you while editing multiple files using vim (not
GVIM, although these commands are valid there too.)
Tested on Linux box under vim v6.3 and vim v7.1

Open multiple files in vim altogether

Vim file1 file2 file3 ….

Vim dirPath/pattern for files like vim perlfiles/*.pl

It will load in buffer simultaneously so that you can go back and forth to navigate files

Open files in vim one by one

Vim file1

After opening it you can type :e file2 . This command will be used only to open one file in buffer at one time.
If you try to open more it will throw error. For ex: :e file2 file3

It will not load instantly in buffer.

You need to load it manually by browsing that file for the first
time. Use command :b filename(now it will be loaded in buffer) ex: :b
file2

In vim v7 we can use :tabe filename too (to see filename in tab)
:b filename (tab completion will not work in earlier version. In Vim7 it will work.)

set wildmenu in your .vimrc profile to use enhanced tab completion while navigating files through buffer.

To know how many files have been opened and you are currently in which files

use command :ls

Or : args

or :ar to list file names

% refers to the file currently visible and # refers to the alternate file. (When you are using: ls to list files in buffer). You can easily toggle between these two files by pressing -shift-6

To Navigate files use following options:

use :bn for next file in buffer :bp for previous file in buffer.

Use :bn or :nb to browse nth file
(n being a positive integer). :bn or :bnext is just an alias. You can
use any one of them. Ex: 2b or b2 would open file which is at second
buffer

You can use :n also for browsing next file and :prev for previous file

By default vim will not allow you to switch to another buffer unless
and until you save the current buffer. It will thrown an error message
like this. E37: No write since last change (add ! to override)

So to avoid this just write set hidden in your .vimrc
profile so that it will let you switch buffers even if you have unsaved
changes in the one you are leaving. Use this option if you know what
changes you have made. (Be careful).

You can use tab for multiple files in vim by using tabe filename (but only one file name will be allowed at one time). Then browse opened files in tab using gt (for next file) and gT (for previous file). Even if file is not saved you can move from one tab to other tab.

You can split your screen by entering the number with command sb
instead of just b. ex: 2sb means split the current window with the
second buffer at the top horizontally. And ctrl+w o will bring back into single file edit mode

Use :ctrl+d to see the list of all available option under vim.

Use :menu to see available menu to use.

I am still experimenting vim features. If I will come to know anything
else apart from these features, I will update this post with latest
stuff.

If you know anything related to this topic or if you find any problem
while using those commands, please revert here as comment with detailed
issues.