Any developer involved in a largish project is actively editing multiple source files. There are multiple factors that makes such a developer efficient in the task of editing multiple files. Generally speaking such efficiency depends on:
- being able to move from one active file to another seamlessly
- active viewing area
vim provides multiples ways to do it.
Before we get to details let’s understand the terms buffers, windows, and tabs.
A buffer is the in-memory text of the file that was opened using vim. It may be visible or hidden. It is identified by a buffer number and has flags to indicate whether it is current, has been modified or not etc.
A window is a viewport on a buffer whereas
A tab is a collection of windows
Lets looks at some commands related to buffers
Open a text file in VIM
vim lorem.txt
In VIM do a :ls
to view all buffers you can open an alternate (indicated by #) buffer by giving a :edit cal.txt
. View all buffers again and you will see
1 # "lorem.txt" line 1
2 %a "cal.txt" line 1
1, 2 above are buffer numbers and the ‘line’ number indicate current position in each buffer.
The ‘#’ indicates that this is an alternate buffer and the current buffer indicated by ‘%’ is ‘cal.txt’ and is active indicated by ‘a’
easiest way to switch from one buffer to another is by issuing :bn
command where ‘n’ is the buffer number
Go ahead and try to to switch from one buffer to another for editing. Modify a line in any buffer and check the list of buffers – you will notice a ‘+’ in the status to indicate that this buffer has been modified.
1 # "lorem.txt" line 1
2 %a + "cal.txt" line 1
If you vim file1 file2 file3
VIM will create 3 buffers the first one will be the active one. Using :ls
lists all buffers
If you want to work with windows instead of buffers then here is a quick way to convert all buffers to windows
1 %a "file1" line 1
2 "file2" line 0
3 "file3" line 0
Go ahead and try this.
:ball
We will explore windows in Part 2