vim插件NERDTree的安装与使用

安装与配置

NERDTree是一个vim的文件管理器插件。

## 安装

1
git clone https://github.com/scrooloose/nerdtree.git ~/.vim/bundle/nerdtree

配置

在~/.vimrc中添加

1
2
3
4
5
6
7
8
9
" 初始化NERDTree变量
let g:NERDTreeGlyphReadOnly=0
let g:NERDTreeDirArrows = 1
let g:NERDTreeDirArrowExpandable = '▸'
let g:NERDTreeDirArrowCollapsible = '▾'

" 自动打开或关闭NERDTree
autocmd vimenter * if !argc() | NERDTree | endif
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif

解释

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
" 打开vim时自动打开NERDTree
autocmd vimenter * NERDTree

" 打开vim时如果没有文件被打开自动打开NERDTree
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif

" 当使用vim打开一个文件夹时自动打开NERDTree
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") | exe 'NERDTree' argv()[0] | wincmd p | ene | endif

" 使用Ctrl+N快捷键切换NERDTree
map <C-n> :NERDTreeToggle<CR>

" 当vim只剩NERDTree窗口时使用q退出vim
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif

" NERDTree自定义设置
let g:NERDTreeDirArrowExpandable = '▸'
let g:NERDTreeDirArrowCollapsible = '▾'

使用

vim新增的命令

1
2
3
4
5
6
:NERDTree " 打开NERDTree
:NERDTreeClose " 关闭NERDTree
:NERDTreeFind " 使用NERDTree搜索
:NERDTreeFromBookmark " 打开NERDTree的书签
:NERDTreeMirror "
:NERDTreeToggle " 切换NERDTree

常用操作

基本操作

操作 按键
新增文件或目录 m,a
移动文件或目录 m,m
删除文件或目录 m,d
复制文件或目录 m,c

文件操作

操作 按键
打开文件 鼠标双击/回车键/o
预览文件(打开文件光标停留在NERDTree) go
在新标签页打开文件 t
在新标签页打开文件光标停留在NERDTree T
横向分隔窗口打开 鼠标中键/i
横向分隔窗口打开光标停留在NERDTree gi
纵向分隔窗口打开 s
纵向分隔窗口打开光标停留在NERDTree gs

目录操作

操作 按键
打开或关闭目录 双击/o
递归打开目录 O
关闭父目录 x
递归关闭父目录 X
将当前目录以一个新NERDTree打开 e

书签操作

操作 按键
打开或关闭书签 双击/o
在新标签页打开书签 t
在新标签页打开书签光标停留在NERDTree T
删除书签 D

目录树移动操作

操作 按键
到根目录 P
到父目录 p
到第一个子节点 K
到最后一个子节点 J
到上一个子节点 Ctrl+j
到下一个子节点 Ctrl+k

文件系统操作

操作 按键
到选中的目录 C
将根目录上移一个目录关闭当前根目录 u
将根目录上移一个目录不关闭当前根目录 U
刷新当前目录 r
刷新根目录 R
显示菜单操作(添加,移动,删除,复制) m
显示当前目录完整路径 cd

过滤操作

操作 按键
显示或隐藏以.开关的隐藏文件 I
文件过滤(似乎没作用) f
显示或隐藏文件 F
显示或隐藏书签栏 B

其他操作

操作 按键
关闭NERDTree q
切换NERDTree全屏 A
切换显示帮助 ?

书签命令

1
2
3
4
5
6
:Bookmark <name>             
:BookmarkToRoot <name>
:RevealBookmark <name>
:OpenBookmark <name>
:ClearBookmarks [<names>]
:ClearAllBookmarks