Jade Dungeon

NERDTree

简介

Nerd tree可以让你浏览文件系统并打开文件或目录。你可以通过键盘或鼠标控制它以 树状图显示文件系统,也可以在其中进行一些简单的文件系统操作。

nerdtree提供如下功能及特性:

  • 以继承树的形式显示文件和目录
    • 对如下类型的文件进行不同的高亮显示
    • 文件
    • 目录
    • sym-links
      • 快捷方式
    • 只读文件
    • 可执行文件
  • 提供许多映射来控制树状结构
    • 对展开/收拢/浏览目录结点的映射
    • 对在新的或已存在的窗口或Tab页中打开文件的映射
    • 对改变根结点的映射
    • Mappings to navigate around the tree
  • 可以将文件和目录添加到收藏夹
  • 可以用鼠标进行大部分的树状结构导航
  • 对树状结构内容的过滤(可在运行时切换)
    • 自定义文件过 滤器可以阻止某些文件(比如vim备份文件等)的显示
    • 可选是否显示隐藏文 件
    • 可选不显示文件只显示目录
  • 提供文本文件系统菜单来创建/删除/移动/复制目录或文件
  • 可以自定义Nerd窗口的位置和大小
  • 可以自定义结点排序方式
  • 当你浏览文件系统的时候就会有一 个文件系统的模型被创建或维护。这样做有几个优点 :
    • 所有文件系统信息都被 缓存了,有需要的时候只要重新读入缓存
    • 如果重新浏览之后访问过的tree的一部分,结点就会以上次保持的展开或合拢的样子 显示
  • 该脚本能记住光标位置和窗口位置,所以可以用NERDTreeToggle来切换tree的显示与 隐藏
  • 对于多Tab,可以共享一个Tree,也可以各自拥有各自的tree,还可以混合以上两种方式
  • 默认情况下,该脚本覆盖vim的默认文件浏览器(netrw),所以如果直接输入:edit命令 也会用nerd树打开

功能

全局命令

:NERDTree [ | ]

打开一个Nerdtree,根结点由参数指定,不指定参数就是以当前目录为根结点

:NERDTreeFromBookmark

打开一个Nerdtree,根结点由参数所指定的书签

:NERDTreeToggle [ | ]

在当前Tab中如果Nerdtree已经存在,就切换显示与隐藏; 如果不存在,就相当于执行:NERDTree命令

:NERDTreeMirror

从另一个Tab中共享一个NerdTree过来(在当前Tab的Tree所作的改变也反应到原Tab中) 如果总共只有一个Tree,就直接共享;如果不止一个,就会询问共享哪个

:NERDTreeClose

在当前Tab中关闭Tree

书签

在NerdTree中,书签用于标记某个感兴趣的文件或目录,比如可以用书签标记所有Project 目录

书签表

  • 如果书签被激活,则显示于树状图的上方
  • 可以双击或用NERDTree-o来激活选中文件
  • 可以用NERDTree-t映射使选中文件用新Tab打开,并跳到新tab页
  • 可以用NERDTree-T映射使选中文件用新Tab打开,但不跳到新Tab页

书签命令

以下命令只在在Nerdtree的buffer中有效

:Bookmark

将选中结点添加到书签列表中,并命名为name(书签名不可包含空格); 如与现有书签重名,则覆盖现有书签。

:BookmarkToRoot

以指定目录书签或文件书签的父目录作为根结点显示NerdTree

:RevealBookmark

如果指定书签已经存在于当前目录树下,打开它的上层结点并选中该书签

:OpenBookmark

打开指定的文件。(参数必须是文件书签) 如果该文件在当前的目录树下,则打开它的上层结点并选中该书签

:ClearBookmarks []

清除指定书签;如未指定参数,则清除所有书签

:ClearAllBookmarks

清除所有书签

:ReadBookmarks

重新读入'NERDTreeBookmarksFile'中的所有书签

无效书签

  • 如果监测到无效书签,脚本就会发布一个错误消息并将无效书签置为不可用;
  • 无效书签将被移到书签文件的最后,在有效书签和无效书签之间有一个空行。
  • 书签文件中的每一行代表一个书签,格式是
  • 如果修正了某个无效书签,则可以重启vim或使用:ReadBookmarks命令重新读入 书签信息

Nerdtree映射

o 在已有窗口中打开文件、目录或书签,并跳到该窗口 NERDTree-o
go 在已有窗口 中打开文件、目录或书签,但不跳到该窗口 NERDTree-go
t 在新Tab中打开选中文件/书签,并跳到新Tab NERDTree-t
T 在新Tab中打开选中文件/书签,但不跳到新Tab NERDTree-T
i split 一个新窗口打开选中文件,并跳到该窗口 NERDTree-i
gi split一个新窗口打开选中文件,但不跳到该窗口 NERDTree-gi
s vsp一个新窗口打开选中文件,并跳到该窗口 NERDTree-s
gs vsp一个新 窗口打开选中文件,但不跳到该窗口 NERDTree-gs
! 执行当前文件 NERDTree-!
O 递归打开选中 结点下的所有目录 NERDTree-O
x 合拢选中结点的父目录 NERDTree-x
X 递归 合拢选中结点下的所有目录 NERDTree-X
e Edit the current dif NERDTree-e
双击 相当于NERDTree-o
中键 对文件相当于NERDTree-i,对目录相当于NERDTree-e
   
D 删除当前书签
   
P 跳到根结点
p 跳到父结点
K 跳到当前目录下同级的第一个结点
J 跳到当前目录下同级的最后一个结点
<C-j> 跳到当前目录下同级的前一个结点
<C-k> 跳到当前目录下同级的后一个结点
   
C 将选中目录或选中文件的父目录设为根结点
u 将当前根结点的父目录设为根目录,并变成合拢原根结点
U 将当前根结点的父目录设为根目录,但保持展开原根结点
r 递归刷新选中目录
R 递归刷新根结点
m 显示文件系统菜单
cd 将CWD设为选中目录
   
I 切换是否显示隐藏文件
f 切换是否使用文件过滤器
F 切换是否显示文件
B 切换是否显示书签
   
q 关闭NerdTree窗口
? 切换是否显示Quick Help

文件系统菜单

m,帮助说中包含新建、复制、移动、删除四种命令,但copy只支持*nix系统。

自定义选项

loaded_nerd_tree 不使用NerdTree脚本
NERDChristmasTree 让Tree把自己给装饰得多姿多彩漂亮点
NERDTreeAutoCenter 控制当光标移动超过一定距离时,是否自动将焦点调整到屏中心
NERDTreeAutoCenterThreshold 与NERDTreeAutoCenter配合使用
NERDTreeCaseSensitiveSort 排序时是否大小写敏感
NERDTreeChDirMode 确定是否改变Vim的CWD
NERDTreeHighlightCursorline 是否高亮显示光标所在行
NERDTreeHijackNetrw 是否使用:edit命令时打开第二NerdTree
NERDTreeIgnore 默认的「无视」文件
NERDTreeBookmarksFile 指定书签文件
NERDTreeMouseMode 指定鼠标模式(1.双击打开;2.单目录双文件;3.单击打开)
NERDTreeQuitOnOpen 打开文件后是否关闭NerdTree窗口
NERDTreeShowBookmarks 是否默认显示书签列表
NERDTreeShowFiles 是否默认显示文件
NERDTreeShowHidden 是否默认显示隐藏文件
NERDTreeShowLineNumbers 是否默认显示行号
NERDTreeSortOrder 排序规则
NERDTreeStatusline 窗口状态栏
NERDTreeWinPos 窗口位置('left' or 'right')
NERDTreeWinSize 窗口宽

我的配置

"NERD Tree
let NERDChristmasTree=1
let NERDTreeAutoCenter=1
let NERDTreeBookmarksFile=$VIM.'\Data\NerdBookmarks.txt'
let NERDTreeMouseMode=2
let NERDTreeShowBookmarks=1
let NERDTreeShowFiles=1
let NERDTreeShowHidden=1
let NERDTreeShowLineNumbers=1
let NERDTreeWinPos='left'
let NERDTreeWinSize=31
nnoremap f :NERDTreeToggle