147 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			147 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# NERDTree and tabs together in Vim, painlessly
 | 
						|
 | 
						|
## Features
 | 
						|
 | 
						|
This plugin aims at making NERDTree feel like a true panel, independent of tabs.
 | 
						|
 | 
						|
* **Just one NERDTree**, always and ever. It will always look the same in
 | 
						|
  all tabs, including expanded/collapsed nodes, scroll position etc.
 | 
						|
 | 
						|
* Open in all tabs / close in all tabs. Do this via `:NERDTreeTabsToggle`
 | 
						|
 | 
						|
* Meaningful tab captions for inactive tabs. No more captions like 'NERD_tree_1'.
 | 
						|
 | 
						|
* When you close a file, the tab closes with it. No NERDTree hanging open.
 | 
						|
 | 
						|
* Autoopen NERDTree on GVim / MacVim startup.
 | 
						|
 | 
						|
Many of these features can be switched off. See section Configuration.
 | 
						|
 | 
						|
## Installation
 | 
						|
 | 
						|
1. If you haven't already, install NERDTree (see https://github.com/scrooloose/nerdtree)
 | 
						|
 | 
						|
2.  Install the plugin **through Pathogen**:
 | 
						|
 | 
						|
        cd ~/.vim/bundle
 | 
						|
        git clone https://github.com/jistr/vim-nerdtree-tabs.git
 | 
						|
 | 
						|
    Or **through Vundle**:
 | 
						|
 | 
						|
        Bundle 'jistr/vim-nerdtree-tabs'
 | 
						|
 | 
						|
    Or **through Janus**:
 | 
						|
 | 
						|
        cd ~/.janus
 | 
						|
        git clone https://github.com/jistr/vim-nerdtree-tabs.git
 | 
						|
 | 
						|
3. Map :NERDTreeTabsToggle command to some combo so you don't have to type it.
 | 
						|
   Alternatively, you can use plug-mapping instead of a command, like this:
 | 
						|
 | 
						|
        map <Leader>n <plug>NERDTreeTabsToggle<CR>
 | 
						|
 | 
						|
4. Celebrate.
 | 
						|
 | 
						|
## Commands and Mappings
 | 
						|
 | 
						|
Vim-nerdtree-tabs provides these commands:
 | 
						|
 | 
						|
* `:NERDTreeTabsOpen` switches NERDTree on for all tabs.
 | 
						|
 | 
						|
* `:NERDTreeTabsClose` switches NERDTree off for all tabs.
 | 
						|
 | 
						|
* `:NERDTreeTabsToggle` toggles NERDTree on/off for all tabs.
 | 
						|
 | 
						|
* `:NERDTreeTabsFind` find currently opened file and select it
 | 
						|
 | 
						|
* `:NERDTreeMirrorOpen` acts as `:NERDTreeMirror`, but smarter: When opening,
 | 
						|
  it first tries to use an existing tree (i.e. previously closed in this tab or
 | 
						|
  perform a mirror of another tab's tree). If all this fails, a new tree is
 | 
						|
  created. It is recommended that you use this command instead of
 | 
						|
  `:NERDTreeMirror`.
 | 
						|
 | 
						|
* `:NERDTreeMirrorToggle` toggles NERDTree on/off in current tab, using
 | 
						|
  the same behavior as `:NERDTreeMirrorOpen`.
 | 
						|
 | 
						|
* `:NERDTreeSteppedOpen` focuses the NERDTree, opening one first if none is present.
 | 
						|
 | 
						|
* `:NERDTreeSteppedClose` unfocuses the NERDTree, or closes/hides it if it was
 | 
						|
  not focused.
 | 
						|
 | 
						|
* `:NERDTreeFocusToggle` focus the NERDTree or create it if focus is
 | 
						|
  on a file, unfocus NERDTree if focus is on NERDTree
 | 
						|
 | 
						|
There are also plug-mappings available with the same functionality:
 | 
						|
 | 
						|
* `<plug>NERDTreeTabsOpen`
 | 
						|
* `<plug>NERDTreeTabsClose`
 | 
						|
* `<plug>NERDTreeTabsToggle`
 | 
						|
* `<plug>NERDTreeTabsFind`
 | 
						|
* `<plug>NERDTreeMirrorOpen`
 | 
						|
* `<plug>NERDTreeMirrorToggle`
 | 
						|
* `<plug>NERDTreeSteppedOpen`
 | 
						|
* `<plug>NERDTreeSteppedClose`
 | 
						|
 | 
						|
## Configuration
 | 
						|
 | 
						|
You can switch on/off some features of the plugin by setting global vars to 1
 | 
						|
(for on) or 0 (for off) in your vimrc. Here are the options and their default
 | 
						|
values:
 | 
						|
 | 
						|
* `g:nerdtree_tabs_open_on_gui_startup` (default: `1`)  
 | 
						|
  Open NERDTree on gvim/macvim startup. (When set to `2`, 
 | 
						|
  open only if directory was given as startup argument).
 | 
						|
 | 
						|
* `g:nerdtree_tabs_open_on_console_startup` (default: `0`)  
 | 
						|
  Open NERDTree on console vim startup. (When set to `2`, 
 | 
						|
  open only if directory was given as startup argument).
 | 
						|
 | 
						|
* `g:nerdtree_tabs_no_startup_for_diff` (default: `1`)  
 | 
						|
  Do not open NERDTree if vim starts in diff mode
 | 
						|
 | 
						|
* `g:nerdtree_tabs_smart_startup_focus` (default: `1`)  
 | 
						|
  On startup, focus NERDTree if opening a directory, focus file if opening
 | 
						|
  a file. (When set to `2`, always focus file window after startup).
 | 
						|
 | 
						|
* `g:nerdtree_tabs_open_on_new_tab` (default: `1`)  
 | 
						|
  Open NERDTree on new tab creation (if NERDTree was globally opened by
 | 
						|
  :NERDTreeTabsToggle)
 | 
						|
 | 
						|
* `g:nerdtree_tabs_meaningful_tab_names` (default: `1`)  
 | 
						|
  Unfocus NERDTree when leaving a tab for descriptive tab names
 | 
						|
 | 
						|
* `g:nerdtree_tabs_autoclose` (default: `1`)  
 | 
						|
  Close current tab if there is only one window in it and it's NERDTree
 | 
						|
 | 
						|
* `g:nerdtree_tabs_synchronize_view` (default: `1`)  
 | 
						|
  Synchronize view of all NERDTree windows (scroll and cursor position)
 | 
						|
 | 
						|
* `g:nerdtree_tabs_synchronize_focus` (default: `1`)  
 | 
						|
  Synchronize focus when switching windows (focus NERDTree after tab switch
 | 
						|
  if and only if it was focused before tab switch)
 | 
						|
 | 
						|
* `g:nerdtree_tabs_focus_on_files` (default: `0`)  
 | 
						|
  When switching into a tab, make sure that focus is on the file window,
 | 
						|
  not in the NERDTree window. (Note that this can get annoying if you use
 | 
						|
  NERDTree's feature "open in new tab silently", as you will lose focus on the
 | 
						|
  NERDTree.)
 | 
						|
 | 
						|
* `g:nerdtree_tabs_startup_cd` (default: `1`)  
 | 
						|
  When given a directory name as a command line parameter when launching Vim,
 | 
						|
  `:cd` into it.
 | 
						|
 | 
						|
* `g:nerdtree_tabs_autofind` (default: `0`)  
 | 
						|
  Automatically find and select currently opened file in NERDTree.
 | 
						|
 | 
						|
### Example
 | 
						|
 | 
						|
To run NERDTreeTabs on console vim startup, put into your .vimrc:
 | 
						|
 | 
						|
    let g:nerdtree_tabs_open_on_console_startup=1
 | 
						|
 | 
						|
## Credits
 | 
						|
 | 
						|
The tab autoclose feature is stolen from Carl Lerche & Yehuda Katz's
 | 
						|
[Janus](https://github.com/carlhuda/janus). Thanks, guys!
 | 
						|
 |