" Movement between tabs OR buffersnnoremap L :call MyNext()<CR>nnoremap H :call MyPrev()<CR>
" MyNext() and MyPrev(): Movement between tabs OR buffersfunction! MyNext()if exists( '*tabpagenr' ) && tabpagenr('$') != 1" Tab support && tabs opennormal gtelse" No tab support, or no tabs openexecute ":bnext"endifendfunctionfunction! MyPrev()if exists( '*tabpagenr' ) && tabpagenr('$') != '1'" Tab support && tabs opennormal gTelse" No tab support, or no tabs openexecute ":bprev"endifendfunction
For quickly moving around a project the answer is a fuzzy matching solution such as CtrlP. I bind it to <leader>a for quick access.
In the case I want to see a visual representation of the currently open buffers I use the BufExplorer plugin. Simple but effective.
If I want to browse around the file system I would use the command line or an external utility (Quicklsilver, Afred etc.) but to look at the current project structure NERD Tree is a classic. Do not use this though in the place of 2 as your main file finding method. It will really slow you down. I use the binding <leader>ff.
These should be enough for finding and opening files. From there of course use horizontal and vertical splits. Concerning splits I find these functions particularly useful:
Open new splits in smaller areas when there is not enough room and expand them on navigation. Refer here for comments on what these do exactly:
:set nomore|:ls|:set more1 h "script.py" line 12 #h + "file1.txt" line 6 -- '#' for alternative buffer3 %a "README.md" line 17 -- '%' for current buffer4 "file3.txt" line 0 -- line 0 for hasn't switched to5 + "/etc/passwd" line 42 -- '+' for modified:b '<Cursor> here'