tags:

views:

206

answers:

4

I apologize if this has already been asked; I did a few searches both here and on Google and I can't find the answer to my question.

While using Vim I'll sometimes want to look at a function definition or a struct definition, so I'll use C-] to jump to it. However, there are a few problems I run into. First off, I don't know how to jump back easily. It appears the previous file I was in closes and I'm now in the new one. Is there a way to jump back, or keep a stack of open files that I can pop back to or something?

Another thing I've noticed that when I have a change in the current file I need to save it because, like a mentioned a moment ago, my current file is being closed before the next one opens.

And sometimes I want to view my current code and my header at once. Is there a way open the tag definition in a split?

+4  A: 

To jump back from C-], use C-T. The :tags command shows the current stack.

Set the autowrite option to automatically save what you're doing before jumping to a new file.

Use C-W C-] to open the tag in a new window.

Finally, :help tags is the section in help that explains all this and more.

Greg Hewgill
+4  A: 

Add

set hidden

to you vimrc. It'll allow you switch files without saving them. I think this is one of 'must have' options.

Use C-o to jump back to previous locations which were autosaved in a jumplist.

:h jumplist
Maxim Kim
A: 

Another useful feature that comes handy is the uppercase marks. These marks are not local to a buffer and can be used to jump to them from across files. If you mark the line as say "A" using mA command before starting a long and arduous jumping around task, you can finally return back to the original position quickly by typing 'A or `A.

haridsv
+2  A: 

You might want to consider using a few vim extensions that make this even simpler.

lusty-juggler and lusty-explorer

http://www.vim.org/scripts/script.php?script%5Fid=2050 http://www.vim.org/scripts/script.php?script%5Fid=1890

These require that vim was built with +ruby.

% vim --version | grep +ruby

They're very useful for staying in vim and jumping between files.

xyld