下面来看看NERD tree中快捷键操作
2.3. NERD tree Mappings *NERDTreeMappings*
Default Description~ help-tag~
Key~
o.......Open files, directories and bookmarks....................|NERDTree-o|
go......Open selected file, but leave cursor in the NERDTree.....|NERDTree-go|
t.......Open selected node/bookmark in a new tab.................|NERDTree-t|
T.......Same as 't' but keep the focus on the current tab........|NERDTree-T|
i.......Open selected file in a split window.....................|NERDTree-i|
gi......Same as i, but leave the cursor on the NERDTree..........|NERDTree-gi|
s.......Open selected file in a new vsplit.......................|NERDTree-s|
gs......Same as s, but leave the cursor on the NERDTree..........|NERDTree-gs|
O.......Recursively open the selected directory..................|NERDTree-O|
x.......Close the current nodes parent...........................|NERDTree-x|
X.......Recursively close all children of the current node.......|NERDTree-X|
e.......Edit the current dir.....................................|NERDTree-e|
<CR>...............same as |NERDTree-o|.
double-click.......same as the |NERDTree-o| map.
middle-click.......same as |NERDTree-i| for files, same as
|NERDTree-e| for dirs.
D.......Delete the current bookmark .............................|NERDTree-D|
P.......Jump to the root node....................................|NERDTree-P|
p.......Jump to current nodes parent.............................|NERDTree-p|
K.......Jump up inside directories at the current tree depth.....|NERDTree-K|
J.......Jump down inside directories at the current tree depth...|NERDTree-J|
<C-J>...Jump down to the next sibling of the current directory...|NERDTree-C-J|
<C-K>...Jump up to the previous sibling of the current directory.|NERDTree-C-K|
C.......Change the tree root to the selected dir.................|NERDTree-C|
u.......Move the tree root up one directory......................|NERDTree-u|
U.......Same as 'u' except the old root node is left open........|NERDTree-U|
r.......Recursively refresh the current directory................|NERDTree-r|
R.......Recursively refresh the current root.....................|NERDTree-R|
m.......Display the NERD tree menu...............................|NERDTree-m|
cd......Change the CWD to the dir of the selected node...........|NERDTree-cd|
CD......Change tree root to the CWD..............................|NERDTree-CD|
I.......Toggle whether hidden files displayed....................|NERDTree-I|
f.......Toggle whether the file filters are used.................|NERDTree-f|
F.......Toggle whether files are displayed.......................|NERDTree-F|
B.......Toggle whether the bookmark table is displayed...........|NERDTree-B|
q.......Close the NERDTree window................................|NERDTree-q|
A.......Zoom (maximize/minimize) the NERDTree window.............|NERDTree-A|
?.......Toggle the display of the quick help.....................|NERDTree-?|
个人渣翻译:
默认按键小写o:
适用于文件,目录和书签
如果选择的是文件,它会在整个窗口打开;
如果选择的是目录,它打开与关闭取决于当前状态;
如果选择的是一个链接到目录的书签,那么这个目录会成为新的根。
如果选择的是一个链接到文件的书签,那么它会在整个窗口打开。
默认按键go:
适用于文件
功能和o差不多,只能打开文件,区别在于光标不动,会停留在nerd tree 窗口中。
即nerd tree窗口与vim编辑区并存。
默认按键小写t:
适用于文件和目录
在新标签页中打开选定的文件(或指向文件的书签),如果选定的是目录(或指向目录的书签),那么新的NERD tree会在新标签页中打开,即可以存在多个不同的nerd tree。
默认按键小写i:
适用于文件
新建一个水平分割窗口,打开选定文件,并且把光标停留在新窗口。
默认按键gi:
适用于文件
和按键i作用相同,区别在于光标不会移动到新窗口。
默认按键小写s:
适用于文件
新建一个垂直分割窗口,打开选定文件,并且把光标停留在新窗口。
默认按键gs:
适用于文件
和按键s作用相同,区别在于光标不会移动到新窗口。
默认按键大写O:
适用于目录
递归打开选定目录,意思是该目录下包含的所有多重文件和目录全都打开。
如果目录包含在过滤|'NERDTreeIgnore'| |NERDTree-f| 和隐藏 |'NERDTreeShowHidden'|中,那么就不会打开。
特别如果你有.svn目录,这非常方便。
默认按键小写x:
适用于文件和目录
合拢(关闭)所选节点的父节点。
默认按键大写X:
适用于目录
合拢(关闭)所选目录的所有子节点。
默认按键小写e:
适用于文件和目录
编辑选定目录,或者选定文件目录,这可能导致一个NERD tree被打开
默认按键大写D:
适用于书签表中的一行
删除当前选定的书签
默认按键大写P:
适用于无限制
跳到树根
默认按键小写p:
适用于文件和目录
跳到选定节点的父节点,即上层目录
默认按键大写K:
适用于文件和目录
跳到当前节点的父节点的第一个子节点
默认按键大写J:
适用于文件和目录
跳到当前节点的父节点的最后一个子节点
默认按键<ctrl+J>
适用于文件和目录
跳到选定节点的下一个兄弟
默认按键<ctrl+K>
适用于文件和目录
跳到选定节点的上一个兄弟
默认按键大写C:
适用于文件和目录
改变root,在新树中生成选定目录节点,如果选定的是文件,则使用它的父节点
默认按键小写u:
适用于无限制
把树根移动到上一级,类似于cd ..
默认按键大写U:
适用于无限制
类似于小写u功能,区别在于保持旧树根打开
默认按键小写r:
适用于文件和目录
如果目录被选定,递归刷新它,即扫描文件系统变化,在树节点上显示。
如果文件节点被选定,在它的父节点上做操作
默认按键大写R:
适用于无限制
从树根处递归刷新
默认按键小写m:
适用于文件和目录
显示nerd tree菜单,详细资料参见|NERDTreeMenu|
NERDTree有一个菜单,其目的是模仿绝大多数文件都有的“右键点击”弹出菜单操作。
可以创建/删除/移动/复制文件和目录
默认按键cd:
适用于文件和目录
以选定节点,作为vim当前工作目录
默认按键大写CD:
适用于无限制
改变vim当前工作目录的树根
默认按键大写I:
适用于无限制
切换是否显示隐藏文件(即点文件)
默认按键小写f:
适用于无限制
切换文件过滤功能,详细信息参见|'NERDTreeIgnore'|
默认按键大写F:
适用于无限制
切换是否显示文件节点
默认按键大写B:
适用于无限制
切换是否显示书签表
默认按键小写q:
适用于无限制
关闭nerd tree 窗口
默认按键大写A:
适用于无限制
最大化和最小化nerd tree 窗口
默认按键?:
适用于无限制
切换是否显示快速帮助
个人总结:
一共33个默认快捷键,没有必要完全记住,只需要挑选最常用的即可。
比如o打开文件目录,enter键同此,还可以起到收拢目录的作用。
但是用o打开时,文件会彻底占据整个窗口,nerdtree窗口自动关闭了,如果想保持两者并存,使用go打开。
q关闭nerd tree窗口;大写I切换隐藏文件显示。
i打开文件,水平分割窗口;s打开文件,垂直分割窗口。
x合拢打开的目录,大写D删除书签,刷新目录树R。
m使用文件系统的添加删除文件或目录等操作。
如果你不想它显示隐藏文件,每次都要按I切换太过麻烦,可以在vimrc中配置
let NERDTreeShowHidden=0
如果你想把nerdtree放在右边(默认是左边),可以在vimrc中配置
let NERDTreeWinPos=right
如果你想让vim启动时自动运行NERD tree,无需【ctrl+e】手工切换,可以在vimrc中配置
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
缺陷:
但是nerdtree仍然不够强大,它无法像visual studio那样,把不同目录下的不同文件,整合成逻辑上的整体(文件本身位置并无变化),形成所谓的工程项目。
它只能把已经建好层次关系的文件目录给展示出来。
换句话说,它无法把 /home/usr/a.c /mypro/today/b.c 这样不同目录下的两个文件整合成“项目”。
只能先在同一个文件目录中,分别建立a.c和b.c,nerd tree才能展示出来。
值得注意的是,nerd tree对文件系统的管理是直接调用了操作系统功能,因此所有对文件或目录的添加与修改,都会直接影响到物理上的结构。
比如在nerd tree中删除了某个目录节点,那么相当于执行 rm –rf ,该目录下的文件或目录也将被删除,造成资料丢失!!!
很多习惯了各种IDE的初学者,特别容易踩坑,因为IDE建立的是逻辑型文件结构,可以随意删除工程项目(包括项目中的文件),其本质仅删除掉了逻辑关系,不会影响到原文件本身,所以在使用NERD Tree按键m的时候,要格外小心。