Vim Editing Multiple Files and Windowing Support Under Linux / UNIX

by on July 9, 2008 · 25 comments· LAST UPDATED December 6, 2014

in , ,

How do I open and edit multiple files on a VIM text editor running under Ubuntu Linux / UNIX-like operating systems to improve my productivity?

Vim offers multiple file editing with the help of windows. You can easily open multiple files and edit them using the concept of buffers.

Tutorial details
DifficultyEasy (rss)
Root privilegesNo
Estimated completion time2m

Understanding vim buffer

A buffer is nothing but a file loaded into memory for editing. The original file remains unchanged until you write the buffer to the file using w or other file saving related commands.

Understanding vim window

A window is noting but a viewport onto a buffer. You can use multiple windows on one buffer, or several windows on different buffers. By default, Vim starts with one window, for example open /etc/passwd file, enter:
$ vim /etc/passwd

Open two windows using vim at shell promot

Start vim as follows to open two windows stacked, i.e. split horizontally:
$ vim -o /etc/passwd /etc/hosts
$ vim -o file1.txt resume.txt
Sample outputs:

(Fig.01: split horizontal windows under VIM)

The -Ooption allows you to open two windows side by side, i.e. split vertically, enter:
$ vim -O /etc/passwd /etc/hosts

How do I switch or jump between open windows?

This operation is also known as moving cursor to other windows. You need to use the following keys:

  1. Press CTRL + W + <Left arrow key> to activate left windows
  2. Press CTRL + W + <Right arrow key> to activate right windows
  3. Press CTRL + W + <Up arrow key> to activate to windows above current one
  4. Press CTRL + W + <Down arrow key> to activate to windows down current one
  5. Press CTRL-W + CTRL-W (hit CTRL+W twice) to move quickly between all open windows

How do I edit current buffer?

Use all your regular vim command such as i, w and so on for editing and saving text.

How do I close windows?

Press CTRL+W CTRL-Qto close the current windows. You can also press [ESC]+:q to quit current window.

How do I open new empty window?

Press CTRL+W + n to create a new window and start editing an empty file in it.

Press CTRL+W+ s to split current window in two.

How do I open exiting file in a new windows?

Press [ESC]+:new /path/to/file. This will create a new window and start editing file /path/to/file in it. For example, open file called /etc/hosts.deny, enter:
:new /etc/hosts.deny
Sample outputs:

(Fig.02: Create a new window and start editing file /etc/hosts.deny in it.)

(Fig.03: Two files opened in a two windows)

How do I resize Window?

You can increase or decrease windows size by N number. For example, increase windows size by 5, press [ESC] + 5 + CTRL + W+ +. To decrease windows size by 5, press [ESC]+ 5 + CTRL+ W + -.

Moving windows cheat sheet

Key combinationAction
CTRL-W h move to the window on the left
CTRL-W j move to the window below
CTRL-W k move to the window above
CTRL-W l move to the window on the right
CTRL-W t move to the TOP window
CTRL-W b move to the BOTTOM window

How do I quit all windows?

Type the following command (also known as quit all command):
If any of the windows contain changes, Vim will not exit. The cursor will automatically be positioned in a window with changes. You can then either use ":write" to save the changes:
or ":quit!" to throw them away:

How do save and quit all windows?

To save all changes in all windows and quite , use this command:
This writes all modified files and quits Vim. Finally, there is a command that quits Vim and throws away all changes:

Further readings:
  • Refer "Splitting windows" help by typing :help under vim itself.
Tweet itFacebook itG+ itDownload PDF versionFound an error/typo on this page?

{ 25 comments… read them below or add one }

1 Bash July 9, 2008 at 9:21 pm

I find the vertical split to be more useful.



for vertical split.


2 Ramesh | The Geek Stuff July 10, 2008 at 5:50 am


Yeah I agree with you. Vertical split is especially very good if you a wide screen monitor.

I absolutely love the multiple window feature of the vim and it definitely enhances the productivity to a great extend.



3 mohan July 10, 2008 at 6:10 am

vimdiff file1.txt file2.txt

will give you vertical split.


4 dev October 12, 2012 at 6:26 am

but that’s not the same thing dear.
vimdiff is intended to show differences between/among 2/3 files, which would produce the result you refer here in case of files with totally dissimilar content, but not otherwise.


5 dev October 12, 2012 at 8:36 am

but that’s not what its intended for. Its meant to bring out (highlight) the diffenrences between/among 2/3 files, which would be same as vim -O [,], with highlighted differences.


6 Tim July 10, 2008 at 11:30 am

Your text states “You can then either use “:write” to save the changes, or “:quit!” to throw them away.”

But your command says “:quite!”

May wanna fix that ;)


7 Eric Lin July 14, 2008 at 2:10 am

When you are in split mode, you can type

:set mouse=a

to enable mouse command and then you can use your mouse to drag the window boundary to resize the all windows.



8 Aman July 30, 2008 at 6:54 am


If I have multiple files opened, say by
$ vim file1.txt file2.txt file3.txt

Now, :ls shows all the open buffers

When I do :q ,all the buffers are closed, but is there a way to close a particular buffer, say only file2.txt


9 Chris October 2, 2008 at 3:47 pm


It’s easy to close one buffer. In fact, there are a lot of ways to navigate through many open buffers. Here’s some

Using your example:
$ vim file1.txt file2.txt file3.txt

you currently have 3 open buffers. Let’s say you are currently editing file1.txt

:bn – go to next buffer (in this case, file2.txt)
:bp – go to previous buffer (will go backwards to file3.txt)
:bd – delete current buffer (file1.txt will be closed and file2.txt will become the current buffer) (can also take a filename or number as an argument)
:b – go directly to a file

If you are editing file2.txt and want to close file3.txt, type:

:bd file3.txt

You will still be editing file2.txt, but file3.txt will no longer be open.

in vim,
:ls – this command lists your open files and assigns an identifying number to each one.

In your example, it would look like
1 “file1.txt” line 0
2 “file2.txt” line 0
3 “file3.txt” line 0

:b 3
will go directly to file3.txt (which is buffer 3)

:bd 2
will delete the file2.txt buffer

I think this is a good starting point. Google something like “vim buffers” for more info!



10 Syed K June 4, 2009 at 11:26 am

Very useful



11 Laxman August 2, 2009 at 11:45 am

Thanks dude
I generally used gvim instead of vi/vim. I really like to woke with multi-file in split windows. This web page help me to switch window using keystrokes only which i have needed.


12 Shahid September 17, 2009 at 11:07 am

Great work!! It helped us soo much!! the navigation through multiple windows/files..
Thanks a million!!!


13 Patrick October 17, 2009 at 8:00 am

How can I change the size of a vertical split without using the mouse. I know that you can use #,Ctrl+w,+ to re-size a horizontal split but I can’t seem to figure out how to get the same results for a vertical one.


14 Edward Lee May 26, 2011 at 12:55 am
if you search for “6. Window resizing” you’ll see that you can resize vertical with:


15 Nishad October 20, 2009 at 9:22 am

Gr8. It helped me a lot to work around with Vim/vi.

Many Many thanks



16 finn March 2, 2010 at 7:03 pm

Ctrl w

put a number before the to say how much


17 Mukesh Raghav July 20, 2010 at 7:09 pm

try vi -d file1.txt file2.txt for diff,


18 Rambo July 27, 2010 at 4:02 pm

Hey Raghav,

Great …. I tried this command; we can make an awesome diff with this.



19 Sathish March 16, 2011 at 5:25 am

Really all are awesome and help a lot, thanks for all commenter come up with their various alternate
thanks a lot!


20 siddhartha August 26, 2011 at 6:50 am

If i goto some dir and do vi *, then i have to see all the files in vi vertically..doing :sba shows all the files horizontally .. how could this be achived?


21 saina October 15, 2011 at 10:28 am

Really awesome.. thanks for all commenter


22 JadedEvan October 19, 2011 at 5:54 pm

I would suggest updating your documentation above. Moving between vertical / horizontal split windows is CTRL + w + , not CTRL + W + . The uppercase W should be lowercase.


23 john March 21, 2013 at 2:24 pm

great post!!


24 Krishnan May 14, 2014 at 5:30 pm

I checked multiple forums to get a help on vim but found that this tutorial was most helpful . Thanks a lot for this post . wonderful


25 kgas May 24, 2014 at 4:01 am

One more thing to mention is switching the windows. If you have two windows with horizontal split and making them to vertical split use ctrl+w+K , for the reverse ctrl+w+L


Leave a Comment

Tagged as: , , , , , , , , , , , , , , , , ,

Previous Faq:

Next Faq: