How to effectively work with multiple files in Vim?
I've started using Vim to develop Perl scripts and am starting to find it very powerful.
One thing I like is to be able to open multiple files at once with eg vi main.pl maintenance.pl
and then hop between them with:
:n
:prev
and see which file are open with
:args
And to add a file, I can say:
:n test.pl
which I expect would then be ADDED to my list of files, but instead it wipes out my current file list and when I type :args
I only have test.pl
open.
So how can I ADD and REMOVE files to my args list?
Why not use tabs (introduced in Vim 7)? You can switch between tabs with :tabn
and :tabp
, With :tabe <filepath>
you can add a new tab; and with a regular :q
or :wq
you close a tab. If you map :tabn
and :tabp
to your F7/F8 keys you can easily switch between files.
If there are not that many files or you don't have Vim 7 you can also split your screen in multiple files: :sp <filepath>
. Then you can switch between splitscreens with Ctrl+W and then an arrow key in the direction you want to move (or instead of arrow keys, w for next and W for previous splitscreen)
Listing
To see a list of current buffers, I use:
:ls
Opening
To open a new file, I use
:e ../myFile.pl
with enhanced tab completion (put set wildmenu
in your .vimrc
).
Note: you can also use :find
which will search a set of paths for you, but you need to customize those paths first.
Switching
To switch between all open files, I use
:b myfile
with enhanced tab completion (still set wildmenu
).
Note: :b#
chooses the last visited file, so you can use it to switch quickly between two files.
Using windows
Ctrl-W s
and Ctrl-W v
to split the current window horizontally and vertically. You can also use :split
and :vertical split
( :sp
and :vs
)
Ctrl-W w
to switch between open windows, and Ctrl-W h
(or j
or k
or l
) to navigate through open windows.
Ctrl-W c
to close the current window, and Ctrl-W o
to close all windows except the current one.
Starting vim with a -o
or -O
flag opens each file in its own split.
With all these I don't need tabs in Vim, and my fingers find my buffers, not my eyes.
Note: if you want all files to go to the same instance of Vim, start Vim with the --remote-silent
option.
:ls
for list of open buffers
:bp
previous buffer :bn
next buffer :bn
( n
a number) move to n'th buffer :b <filename-part>
with tab-key providing auto-completion (awesome !!) In some versions of vim, bn
and bp
are actually bnext
and bprevious
respectively. Tab auto-complete is helpful in this case.
Or when you are in normal mode, use ^
to switch to the last file you were working on.
Plus, you can save sessions of vim
:mksession! ~/today.ses
The above command saves the current open file buffers and settings to ~/today.ses
. You can load that session by using
vim -S ~/today.ses
No hassle remembering where you left off yesterday. ;)
链接地址: http://www.djcxy.com/p/3860.html上一篇: 我如何使用vim寄存器?
下一篇: 如何在Vim中有效地处理多个文件?