-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathNERD_tree.cnx
1281 lines (985 loc) · 55.6 KB
/
NERD_tree.cnx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
*NERD_tree.txt* 像妈妈一样体贴的树形浏览插件!
天哪,这是 ... ~
________ ________ _ ____________ ____ __________ ____________~
/_ __/ / / / ____/ / | / / ____/ __ \/ __ \ /_ __/ __ \/ ____/ ____/~
/ / / /_/ / __/ / |/ / __/ / /_/ / / / / / / / /_/ / __/ / __/ ~
/ / / __ / /___ / /| / /___/ _, _/ /_/ / / / / _, _/ /___/ /___ ~
/_/ /_/ /_/_____/ /_/ |_/_____/_/ |_/_____/ /_/ /_/ |_/_____/_____/ ~
参考手册~
译者:闲耘™ <hotoo.cn[AT]gmail.com>
Asins <asinsimple[AT]gmail.com>
codepiano <codepiano.li[AT]gmail.com>
Fernando G.P. da Silva <firefgx[AT]gmail[d0t]com>
==============================================================================
目录 *NERDTree-contents*
1.简介....................................|NERDTree|
2.功能....................................|NERDTreeFunctionality|
2.1.全局命令..........................|NERDTreeGlobalCommands|
2.2.书签..............................|NERDTreeBookmarks|
2.2.1.书签表......................|NERDTreeBookmarkTable|
2.2.2.书签命令....................|NERDTreeBookmarkCommands|
2.2.3.无效书签....................|NERDTreeInvalidBookmarks|
2.3.NERD tree 映射....................|NERDTreeMappings|
2.4.NERD tree 菜单....................|NERDTreeMenu|
3.选项....................................|NERDTreeOptions|
3.1.选项概要..........................|NERDTreeOptionSummary|
3.2.选项细节..........................|NERDTreeOptionDetails|
4.NERD tree API...........................|NERDTreeAPI|
4.1.按键映射 API......................|NERDTreeKeymapAPI|
4.2.菜单 API..........................|NERDTreeMenuAPI|
5.关于....................................|NERDTreeAbout|
6.更新日志................................|NERDTreeChangelog|
7.致谢名单................................|NERDTreeCredits|
8.授权协议................................|NERDTreeLicense|
==============================================================================
1. 简介 *NERDTree*
"NERD tree" 是什么??
NERD tree 允许你浏览你的文件系统,打开文件和目录。它会以树形结构呈现使用键盘
和/或鼠标操作的文件系统,并允许你执行简单的文件系统操作。
NERD tree 提供以下特性和功能:
* 文件和目录呈现在一个有层级关系的树形结构中
* 为以下类型的节点提供不同的高亮显示:
* 文件
* 目录
* 符号链接
* Windows 快捷方式(.lnk 文件)
* 只读文件
* 可执行文件
* 提供许多(可定制的)映射来操作树:
* 映射为打开、关闭或浏览目录节点
* 映射为在新的或已存在的窗口或标签页中打开文件
* 映射为改变当前树的根节点
* 映射为在树结构中进行导航
* ...
* 目录和文件可以设为书签
* 大部分 NERD tree 的导航操作也可以使用鼠标完成
* 过滤树的内容(可以在运行时切换)
* 自定义的文件过滤器,以阻止像 Vim 备份这样的文件的显示
* 可以选择是否显示隐藏文件(以 . 开头的文件)
* 可以关闭文件的显示,只显示目录
* NERD tree 窗口的位置和大小可以定制
* 树中节点的显示顺序可以定制
* 在你浏览文件系统时,会创建或维护你的文件系统模型。这样做有以下几个优点:
* 所有的文件系统信息将被缓存,并且只在需要的时候被重新读取
* 如果你重新访问目录树中你以前的会话中访问过的部分,这个目录节点将保持
你之前打开或关闭它们时的状态
* 插件会记住在 NERD tree 中的光标位置和窗口位置,这样你就可以把窗口隐藏
(或者直接关闭属性窗口),当再次打开它的时候(使用 NERDTreeToggle),
NERD tree 将出现在你最后使用过的位置
* 你可以为每一个标签页打开一个不相关的 NERD tree,或者跨标签页共享树,或者
混合使用上面两种方式
* 默认情况下,插件会替换默认的文件浏览器(netrw),所以如果你使用 :edit
编辑一个目录,一个(轻微修改过的)NERD tree 会出现在当前窗口中
* 提供一个可编程的菜单系统(模拟右键点击一个节点上)
* 提供一个执行基本的文件系统操作的默认菜单插件(新建、删除、移动或复制
文件及目录)
* 提供一个可以添加自定义按键映射的 API
==============================================================================
2. 功能 *NERDTreeFunctionality*
------------------------------------------------------------------------------
2.1. 全局命令 *NERDTreeGlobalCommands*
:NERDTree [<起始目录> | <书签>] *:NERDTree*
打开一个新的 NERD tree。根节点由参数指定。有三种情况:
如果没有指定参数,会使用当前目录。
如果指定了目录,会使用指定的目录。
如果指定了书签名,会使用书签相应的目录。
例如: >
:NERDTree /home/marty/vim7/src
:NERDTree foo (foo 是一个书签名)
<
:NERDTreeFromBookmark <书签> *:NERDTreeFromBookmark*
使用 <书签> 的目录作为根目录打开一个新的 NERD tree。使用该命令而不是
:NERDTree 的惟一原因是为了补全功能(会补全书签而不是目录)。
:NERDTreeToggle [<起始目录> | <书签>] *:NERDTreeToggle*
在当前的标签页中如果已经存在一个 NERD tree,它会被重新打开和渲染。
如果这个标签页内没有 NERD tree 存在,就相当于执行 |:NERDTree| 命令。
:NERDTreeMirror *:NERDTreeMirror*
从另一个标签页共享一个存在的 NERD tree 到当前标签页里面。
由于是使用同一个缓冲区,当一个树改变的时候,会体现在所有的共享标签页里面。
如果只有一个另外的 NERD tree 存在,那个树会被自动镜像。如果存在多个,插件
会询问使用哪一个作为镜像。
:NERDTreeClose *:NERDTreeClose*
在当前标签页中关闭 NERD tree。
:NERDTreeFind *:NERDTreeFind*
在树中找到当前文件。
如果没有树存在并且当前文件在 Vim 的当前工作目录(CWD)中,就使用当前工作目
录(CWD)初始化树并且显示文件。否则使用当前文件的目录初始化树。
在任何情况下,当前文件都被显示并且光标置于其上。
:NERDTreeCWD *:NERDTreeCWD*
修改树的根节点为当前目录。如果当前标签页没有 NERD tree 存在,一个新的树会
被打开。
------------------------------------------------------------------------------
2.2. 书签 *NERDTreeBookmarks*
NERD tree 中的书签是一种标记感兴趣的文件或者目录的方式。例如,你可以使用书签来
标记你所有的项目目录。
------------------------------------------------------------------------------
2.2.1. 书签表 *NERDTreeBookmarkTable*
如果书签表被激活(参阅 |NERDTree-B| 和 |'NERDTreeShowBookmarks'|),则会被渲染
到树状图的上方,你可以双击书签或者使用 |NERDTree-o| 来激活选中文件。
另请参阅 |NERDTree-t| 和 |NERDTree-T|。
------------------------------------------------------------------------------
2.2.2. 书签命令 *NERDTreeBookmarkCommands*
注意下面的命令只在 NERD tree 的缓冲区内可用。
:Bookmark [<名称>]
将当前节点添加为书签 <名称> 。如果已经存在一个名字为 <名称> 的书签,它会被
覆盖。<名称> 不能包含空格。
如果没有提供 <名称> ,默认为文件名或者目录名。
对于目录,会在尾部显示一个斜杠。
:BookmarkToRoot <书签>
使用 <书签> 标记的目录作为新的树的根节点。如果 <书签> 标记的树节点已经被缓
存在树的某处,将会使用当前的树,否则一个新的树会被打开。
注意如果 <书签> 指向一个文件,那么会使用它的父目录。
:RevealBookmark <书签>
如果这个节点被缓存在当前的根节点下,它会被展现(即它的祖先节点会被打开),
并且光标置于其上。
:OpenBookmark <书签>
<书签> 必须指向一个文件。这个文件以 |NERDTree-o| 那种方式打开。如果这个节
点被缓存在当前根节点下,它会被显示并且光标置于其上。
:ClearBookmarks [<书签>]
刪除所有指定的书签。如果没有指定书签,会刪除当前节点上的所有书签。
:ClearAllBookmarks
刪除所有书签。
:ReadBookmarks
重新读取 |'NERDTreeBookmarksFile'| 中的书签。
另请参阅 |:NERDTree| 和 |:NERDTreeFromBookmark|。
------------------------------------------------------------------------------
2.2.3. 无效书签 *NERDTreeInvalidBookmarks*
如果检测到无效书签,脚本就会发布一个错误消息并将无效书签置为不可用。
无效书签仍然会被储存在书签文件中,但将被移到书签文件的底部(请参阅
|'NERDTreeBookmarksFile'| ),在有效书签和无效书签之间永远会有一个空行。
书签文件中的每一行代表一个书签。正确的格式是
<书签名><空格><书签位置的完整路径>
在你修复了任何无效书签后,重启 Vim 或者在 NERD tree 窗口执行 :ReadBookmarks
命令重新读入书签信息。
------------------------------------------------------------------------------
2.3. NERD tree 映射 *NERDTreeMappings*
默认描述~ help-tag~
键~
o.......打开文件、目录和书签.....................................|NERDTree-o|
go......打开选中的文件,但保持光标在 NERD tree 中................|NERDTree-go|
t.......在新标签页中打开选中的节点/书签..........................|NERDTree-t|
T.......类似于't',但保持焦点在当前的标签页中....................|NERDTree-T|
i.......在一个新的横向分割的窗口中打开文件.......................|NERDTree-i|
gi......类似于'i',但保持光标在 NERD tree 中.....................|NERDTree-gi|
s.......在一个新的竖向分割的窗口中打开选中的文件.................|NERDTree-s|
gs......类似于's',但保持光标在 NERD tree 中.....................|NERDTree-gs|
O.......递归打开选中节点下的所有节点.............................|NERDTree-O|
x.......关闭选中节点的父节点.....................................|NERDTree-x|
X.......递归关闭选中节点下的所有子节点...........................|NERDTree-X|
e.......编辑当前目录.............................................|NERDTree-e|
回车...............和 |NERDTree-o| 一样。
左键双击...........和 |NERDTree-o| 映射一样。
中键单击...........对文件和 |NERDTree-i| 一样,对目录和 |NERDTree-e| 一样。
D.......删除当前书签.............................................|NERDTree-D|
P.......跳转到根节点.............................................|NERDTree-P|
p.......跳转到当前节点的父节点...................................|NERDTree-p|
K.......跳转到当前目录下同级的第一个节点.........................|NERDTree-K|
J.......跳转到当前目录下同级的最后一个节点.......................|NERDTree-J|
<C-J>...跳转到当前目录下同级的上一个节点.........................|NERDTree-C-J|
<C-K>...跳转到当前目录下同级的下一个节点.........................|NERDTree-C-K|
C.......将选中目录或文件的父目录设为根节点.......................|NERDTree-C|
u.......将当前节点的父目录设为根节点.............................|NERDTree-u|
U.......类似于'u',但是旧的根节点保持打开状态....................|NERDTree-U|
r.......递归刷新当前目录.........................................|NERDTree-r|
R.......递归刷新当前根节点.......................................|NERDTree-R|
m.......显示 NERD tree 菜单......................................|NERDTree-m|
cd......将当前工作目录(CWD)设为选中目录........................|NERDTree-cd|
CD......将当前工作目录(CWD)设为树的根目录......................|NERDTree-CD|
I.......切换是否显示隐藏文件.....................................|NERDTree-I|
f.......切换是否使用文件过滤器...................................|NERDTree-f|
F.......切换是否显示文件.........................................|NERDTree-F|
B.......切换是否显示书签表.......................................|NERDTree-B|
q.......关闭 NERD tree 窗口......................................|NERDTree-q|
A.......缩放(最大化/最小化)NERD tree 窗口......................|NERDTree-A|
?.......切换是否显示快速帮助.....................................|NERDTree-?|
------------------------------------------------------------------------------
*NERDTree-o*
默认映射: o
映射选项: NERDTreeMapActivateNode
应用对象: 文件和目录
如果一个文件节点被选中,它会在前一个窗口中被打开。
如果一个目录节点被选中,会根据它现在的状态被打开或者关闭。
如果一个标记目录的书签被选中,那个目录会成为新的根节点。
如果一个标记文件的书签被选中,那个文件会在前一个窗口中被打开。
------------------------------------------------------------------------------
*NERDTree-go*
默认映射: go
映射选项: 无
应用对象: 文件
如果一个文件节点被选中,它会在前一个窗口中被打开,但是光标位置不会变。
这个按键组合永远是 "g" + NERDTreeMapActivateNode(请参阅 |NERDTree-o|)。
------------------------------------------------------------------------------
*NERDTree-t*
默认映射: t
映射选项: NERDTreeMapOpenInTab
应用对象: 文件和目录
在一个新标签页中打开所选文件。如果一个目录被选中,在新标签页中为该目录打开一个
新的 NERD tree。
如果一个标记目录的书签被选中,在新标签页中为该目录打开一个新的 NERD tree。如
果一个标记文件的书签被选中,在新标签页中打开那个文件。
------------------------------------------------------------------------------
*NERDTree-T*
默认映射: T
映射选项: NERDTreeMapOpenInTabSilent
应用对象: 文件和目录
和 |NERDTree-t| 一样,只不过焦点仍然保留在当前标签页。
------------------------------------------------------------------------------
*NERDTree-i*
默认映射: i
映射选项: NERDTreeMapOpenSplit
应用对象: 文件
在新的横向分割窗口中打开所选文件并且将光标放置在新窗口中。
------------------------------------------------------------------------------
*NERDTree-gi*
默认映射: gi
映射选项: 无
应用对象: 文件
和 |NERDTree-i| 一样,只不过光标不会被移动。
这个按键组合永远是 "g" + NERDTreeMapOpenSplit 的形式(请参阅 |NERDTree-i|)。
------------------------------------------------------------------------------
*NERDTree-s*
默认映射: s
映射选项: NERDTreeMapOpenVSplit
应用对象: 文件
在新的竖直分割窗口打开所选文件并且将光标放置在新窗口中。
------------------------------------------------------------------------------
*NERDTree-gs*
默认映射: gs
映射选项: 无
应用对象: 文件
和 |NERDTree-s| 一样,只不过光标不会被移动。
这个按键组合永远是 "g" + NERDTreeMapOpenVSplit 的形式(请参阅 |NERDTree-s|)。
------------------------------------------------------------------------------
*NERDTree-O*
默认映射: O
映射选项: NERDTreeMapOpenRecursively
应用对象: 目录
递归打开所选目录。
所有文件和目录被缓存,但是如果一个目录由于文件过滤器(请参阅 |'NERDTreeIgnore'|
|NERDTree-f|)或者隐藏文件过滤器(请参阅 |'NERDTreeShowHidden'|)而不被显示,
那么它的内容不会被缓存。这样是便于使用的,尤其是当你有 .svn 目录的时候。
------------------------------------------------------------------------------
*NERDTree-x*
默认映射: x
映射选项: NERDTreeMapCloseDir
应用对象: 文件和目录
关闭所选节点的父节点。
------------------------------------------------------------------------------
*NERDTree-X*
默认映射: X
映射选项: NERDTreeMapCloseChildren
应用对象: 目录
递归关闭所选目录的所有子节点。
提示:快速“重置”树,使用 |NERDTree-P| 和这个按键。
------------------------------------------------------------------------------
*NERDTree-e*
默认映射: e
映射选项: NERDTreeMapOpenExpl
应用对象: 文件和目录
|:edit| 所选目录,或者所选文件的目录。依据 |'NERDTreeHijackNetrw'| 的设定,可
以打开一个 NERD tree 或者一个 netrw。
------------------------------------------------------------------------------
*NERDTree-D*
默认映射: D
映射选项: NERDTreeMapDeleteBookmark
应用对象: 书签表中的行
删除当前选中的书签。
------------------------------------------------------------------------------
*NERDTree-P*
默认映射: P
映射选项: NERDTreeMapJumpRoot
应用对象: 没有限制
跳转到根节点。
------------------------------------------------------------------------------
*NERDTree-p*
默认映射: p
映射选项: NERDTreeMapJumpParent
应用对象: 文件和目录
跳转到所选目录的父节点。
------------------------------------------------------------------------------
*NERDTree-K*
默认映射: K
映射选项: NERDTreeMapJumpFirstChild
应用对象: 文件和目录
跳转到当前节点父节点的第一个子节点。
如果光标已经在第一个节点上,按照以下做法:
* 在当前节点父节点的兄弟节点中向后查找,直到找到了一个打开的有子节点的目录
* 跳转到那个节点的第一个子节点
------------------------------------------------------------------------------
*NERDTree-J*
默认映射: J
映射选项: NERDTreeMapJumpLastChild
应用对象: 文件和目录
跳转到当前节点父节点的最后一个子节点。
如果光标已经在最后一个节点上,按照以下做法:
* 在当前节点父节点的兄弟节点中向前查找,直到找到了一个打开的有子节点的目录
* 跳转到那个节点的最后一个子节点
------------------------------------------------------------------------------
*NERDTree-C-J*
默认映射: <C-J>
映射选项: NERDTreeMapJumpNextSibling
应用对象: 文件和目录
跳转到所选节点的下一个兄弟节点。
------------------------------------------------------------------------------
*NERDTree-C-K*
默认映射: <C-K>
映射选项: NERDTreeMapJumpPrevSibling
应用对象: 文件和目录
跳转到所选节点的上一个兄弟节点。
------------------------------------------------------------------------------
*NERDTree-C*
默认映射: C
映射选项: NERDTreeMapChangeRoot
应用对象: 文件和目录
使用所选的目录节点作为新的根节点。如果被选择的是一个文件,会使用它的父节点。
------------------------------------------------------------------------------
*NERDTree-u*
默认映射: u
映射选项: NERDTreeMapUpdir
应用对象: 没有限制
将树的根节点向上移动一级(就像执行了 "cd .." )。
------------------------------------------------------------------------------
*NERDTree-U*
默认映射: U
映射选项: NERDTreeMapUpdirKeepOpen
应用对象: 没有限制
和 |NERDTree-u| 一样,只不过旧的根节点保持打开。
------------------------------------------------------------------------------
*NERDTree-r*
默认映射: r
映射选项: NERDTreeMapRefresh
应用对象: 文件和目录
如果选择的是目录,递归更新那个目录,即:扫描文件系统来获取更改并且显示到树中。
如果选择的是文件,上面的操作被应用到它的父节点上。
------------------------------------------------------------------------------
*NERDTree-R*
默认映射: R
映射选项: NERDTreeMapRefreshRoot
应用对象: 没有限制
递归更新树的根节点。
------------------------------------------------------------------------------
*NERDTree-m*
默认映射: m
映射选项: NERDTreeMapMenu
应用对象: 文件和目录
显示 NERD tree 的菜单。详细请参阅 |NERDTreeMenu|。
------------------------------------------------------------------------------
*NERDTree-cd*
默认映射: cd
映射选项: NERDTreeMapChdir
应用对象: 文件和目录
改变 Vim 的当前工作目录为那个选中的节点。
------------------------------------------------------------------------------
*NERDTree-CD*
默认映射: CD
映射选项: NERDTreeMapCWD
应用对象: 没有限制
将树的根节点改变为 Vim 的当前工作目录。
------------------------------------------------------------------------------
*NERDTree-I*
默认映射: I
映射选项: NERDTreeMapToggleHidden
应用对象: 没有限制
切换是否显示隐藏文件(即以点号开头的文件)。
------------------------------------------------------------------------------
*NERDTree-f*
默认映射: f
映射选项: NERDTreeMapToggleFilters
应用对象: 没有限制
切换是否使用文件过滤。详细请参阅 |'NERDTreeIgnore'|。
------------------------------------------------------------------------------
*NERDTree-F*
默认映射: F
映射选项: NERDTreeMapToggleFiles
应用对象: 没有限制
切换是否显示文件。
------------------------------------------------------------------------------
*NERDTree-B*
默认映射: B
映射选项: NERDTreeMapToggleBookmarks
应用对象: 没有限制
切换是否显示书签表。
------------------------------------------------------------------------------
*NERDTree-q*
默认映射: q
映射选项: NERDTreeMapQuit
应用对象: 没有限制
关闭 NERDTree 窗口。
------------------------------------------------------------------------------
*NERDTree-A*
默认映射: A
映射选项: NERDTreeMapToggleZoom
应用对象: 没有限制
缩放(最大化/最小化)NERDTree 窗口。
------------------------------------------------------------------------------
*NERDTree-?*
默认映射: ?
映射选项: NERDTreeMapHelp
应用对象: 没有限制
切换是否显示快速帮助。
------------------------------------------------------------------------------
2.4. NERD tree 菜单 *NERDTreeMenu*
NERD tree 有一个可以通过 API 编程的菜单(详细请参阅 |NERDTreeMenuAPI|)。这个主
意是为了模拟大多数文件浏览器都具有的右键菜单。
这个插件有两个默认菜单插件: exec_menuitem.vim 和 fs_menu.vim。fs_menu.vim 添
加一些基本的新建、删除、移动或复制文件及目录的操作。exec_menuitem.vim 提供了一
个菜单项来执行可执行文件。
相关标签: |NERDTree-m| |NERDTreeApi|
==============================================================================
3. 定制 *NERDTreeOptions*
------------------------------------------------------------------------------
3.1. 定制概要 *NERDTreeOptionSummary*
提供下面的选项,可以定制 NERD tree 的行为。这些选项需要被设置在您的 vimrc 中。
|'loaded_nerd_tree'| 不使用 NERD tree 插件。
|'NERDTreeAutoCenter'| 当光标移动到距离顶部/底部指定的距离的时候,控
制 NERD tree 是否将光标所在位置自动设置为窗口
的中心。
|'NERDTreeAutoCenterThreshold'| 控制自动将光标位置居中的敏感度。
|'NERDTreeCaseSensitiveSort'| 告诉 NERD tree 排序节点的时候是否大小写敏感。
|'NERDTreeSortHiddenFirst'| 告诉 NERD tree 排序节点的时候是否考虑隐藏文件
开头的点号。
|'NERDTreeChDirMode'| 告诉 NERD tree 什么情况下/什么时候它应该改变当
前工作目录。
|'NERDTreeHighlightCursorline'| 告诉 NERD tree 是否高亮光标所在行。
|'NERDTreeHijackNetrw'| 告诉 NERD tree 是否替换 netrw 来浏览本地目录。
|'NERDTreeIgnore'| 告诉 NERD tree 忽略哪些文件。
|'NERDTreeRespectWildIgnore'| 告诉 NERD tree 是否考虑 |'wildignore'| 。
|'NERDTreeBookmarksFile'| 指定书签存储位置。
|'NERDTreeBookmarksSort'| 显示书签的时候是否排序。
|'NERDTreeMouseMode'| 告诉 NERD tree 如何处理鼠标点击。
|'NERDTreeQuitOnOpen'| 打开文件后关闭树窗口。
|'NERDTreeShowBookmarks'| 告诉 NERD tree 启动时是否显示书签。
|'NERDTreeShowFiles'| 告诉 NERD tree 启动时是否显示文件。
|'NERDTreeShowHidden'| 告诉 NERD tree 启动时是否显示隐藏文件。
|'NERDTreeShowLineNumbers'| 告诉 NERD tree 树窗口中是否显示行号。
|'NERDTreeSortOrder'| 告诉 NERD tree 如何排序节点。
|'NERDTreeStatusline'| 给 NERD tree 窗口设置一个状态栏。
|'NERDTreeWinPos'| 告诉插件把 NERD tree 窗口放置在哪儿。
|'NERDTreeWinSize'| 设置 NERD tree 窗口被打开时的大小。
|'NERDTreeMinimalUI'| 禁止显示 'Bookmarks' 和 'Press ? for help'。
|'NERDTreeDirArrows'| 告诉 NERD tree 显示目录的时候使用箭头代替 + ~ 。
|'NERDTreeCascadeOpenSingleChildDir'|
当所选目录只有一个子节点并且该节点是目录的时
候,级联展开。
|'NERDTreeAutoDeleteBuffer'| 告诉 NERD tree 当文件被上下文菜单命令删除或重
命名的时候,自动删除缓冲区。
------------------------------------------------------------------------------
3.2. 定制细节 *NERDTreeOptionDetails*
把给出的行加到你的 ~/.vimrc 中来开启下面的选项
*'loaded_nerd_tree'*
如果这个插件让你抓狂得想杀人,在你的 vimrc 中使用这行设置来关闭它: >
let loaded_nerd_tree=1
<
------------------------------------------------------------------------------
*'NERDTreeAutoCenter'*
取值范围: 0 或 1
默认值: 1
如果设置为 1,当光标移动到距顶部/底部的行数是 |'NERDTreeAutoCenterThreshold'|
指定的行范围以内的时候,NERD tree 窗口会将光标所在位置自动设置为窗口的中心。
这个选项只会对树导航映射作出反应,
即: |NERDTree-J| |NERDTree-K| |NERDTree-C-J| |NERDTree-C-K| |NERDTree-p|
|NERDTree-P|
使用 |zz| 操作来居中。
------------------------------------------------------------------------------
*'NERDTreeAutoCenterThreshold'*
取值范围: 任何自然数。
默认值: 3
这个选项控制自动居中的敏感度,详细请参阅 |'NERDTreeAutoCenter'|。
------------------------------------------------------------------------------
*'NERDTreeCaseSensitiveSort'*
取值范围: 0 或 1
默认值: 0
默认情况下 NERD tree 排序节点的时候并不是大小写敏感的,即节点会像这样排序: >
bar.c
Baz.c
blarg.c
boner.c
Foo.c
<
但是,如果你把选项设置为 1,上面的节点会按下面的方式排序: >
Baz.c
Foo.c
bar.c
blarg.c
boner.c
<
------------------------------------------------------------------------------
*'NERDTreeChDirMode'*
取值范围: 0,1 或 2
默认值: 0
用这个选项告诉插件什么时候(如果真的需要)改变 Vim 的当前工作目录(CWD)。
如果设置为 0,当前工作目录(CWD)永远不会被 NERD tree 改变。
如果设置为 1,当前工作目录(CWD)会在第一次加载 NERD tree 的时候被改变为它初始
化的目录。比如:
如果你使用下面的命令启动 NERD tree: >
:NERDTree /home/marty/foobar
<
然后当前工作目录(CWD)会被改变为 /home/marty/foobar 并且不会被再次改变,除非
你使用相似的命令初始化了另一个 NERD tree。
如果这个选项被设置为 2,插件的行为和被设置为 1 类似,只不过当树的根目录被改变
的时候当前工作目录(CWD)也会被改变。例如,如果当前工作目录(CWD)是
/home/marty/foobar 并且你把 /home/marty/foobar/baz 设置为了新的根节点,当前工
作目录(CWD)也会被改变为 /home/marty/foobar/baz。
------------------------------------------------------------------------------
*'NERDTreeHighlightCursorline'*
取值范围: 0 或 1
默认值: 1
如果设置为 1,NERD tree 缓冲区内的当前光标所在行会被高亮,使用 |'cursorline'|
来完成。
------------------------------------------------------------------------------
*'NERDTreeHijackNetrw'*
取值范围: 0 或 1
默认值: 1
如果设置为 1,当执行 >
:edit <some directory>
<
会在目标窗口打开一个“次等”的 NERD tree 来代替 netrw。
“次等”的 NERD tree 在下面几个方面和普通的有所区别:
1. 'o' 会在和树同一个窗口打开文件,替换掉当前打开的内容。
2. 在同一个标签页内你可以有任意多的“次等”的 NERD tree。
------------------------------------------------------------------------------
*'NERDTreeIgnore'*
取值范围: 正则表达式列表
默认值: ['\~$']
这个选项用来指定哪些文件会被 NERD tree 忽略。它必须是一个正则表达式的列表。当
NERD tree 被渲染的时候,被 'NERDTreeIgnore' 中的正则表达式匹配的任何文件及目录
都不会被显示。
例如你把下面的设置放到你的 vimrc 中: >
let NERDTreeIgnore=['\.vim$', '\~$']
<
那么所有以 .vim 或 ~ 结尾的文件都会被忽略。
有两个魔术标志可以添加到每一个正则表达式后面来指定这个正则表达式只能被用于匹配
文件或者只能被用于匹配目录。这些标志是 "[[dir]]" 和 "[[file]]",例如: >
let NERDTreeIgnore=['.d$[[dir]]', '.o$[[file]]']
<
会导致所有以 ".d" 结尾的目录会被忽略,所有以 ".o" 结尾的目录会被忽略。
注意:告诉 NERD tree 不要忽略任何文件,你必须用下面这种设置。 >
let NERDTreeIgnore=[]
<
文件过滤器可以被 |NERDTree-f| 映射动态地打开或关闭。
------------------------------------------------------------------------------
*'NERDTreeRespectWildIgnore'*
取值范围: 0 或 1
默认值: 0
如果设置为 1,会考虑 |'wildignore'| 选项。
------------------------------------------------------------------------------
*'NERDTreeBookmarksFile'*
取值范围: a path
默认值: $HOME/.NERDTreeBookmarks
指定书签存储位置。详细请参阅 |NERDTreeBookmarkCommands|。
------------------------------------------------------------------------------
*'NERDTreeBookmarksSort'*
取值范围: 0 或 1
默认值: 1
如果设置为 0,书签表不会被排序。
如果设置为 1,书签表会被排序。
------------------------------------------------------------------------------
*'NERDTreeMouseMode'*
取值范围: 1,2 或 3
默认值: 1
如果设置为 1,双击一个节点会打开它。
如果设置为 2,单击一个节点会打开目录节点,文件节点需要双击才会打开。
如果设置为 3,单击会打开任何类型的节点。
注意:双击树节点所在行的任何位置都会激活它,但是所有单击激活必须单击节点名称。
例如,如果有下面的节点: >
| | |-application.rb
<
那么(为单击激活它)你必须单击 'application.rb' 中的某个地方。
------------------------------------------------------------------------------
*'NERDTreeQuitOnOpen'*
取值范围: 0 或 1
默认值: 0
如果设置为 1,NERD tree 窗口会在用下面的映射打开文件后被关闭:|NERDTree-o|,
|NERDTree-i|,|NERDTree-t| 和 |NERDTree-T|。
------------------------------------------------------------------------------
*'NERDTreeShowBookmarks'*
取值范围: 0 或 1
默认值: 0
如果选项设置为 1,会显示书签表。
这个选项可以被每个树动态切换,使用 |NERDTree-B| 的按键映射。
------------------------------------------------------------------------------
*'NERDTreeShowFiles'*
取值范围: 0 或 1
默认值: 1
如果这个选项被设置为 1,会在 NERD tree 中显示文件。如果设置为 0,只有目录被显
示。
这个选项可以被每个树动态切换,使用 |NERDTree-F| 的按键映射,并且在你需要导航到
树的某个部分的时候可以大幅缩减树的节点。
------------------------------------------------------------------------------
*'NERDTreeShowHidden'*
取值范围: 0 或 1
默认值: 0
这个选项告诉 Vim 是否默认显示隐藏文件。这个选项可以被每个树动态改变,使用
|NERDTree-I| 的按键映射。使用下面的方式来设置这个选项。 >
let NERDTreeShowHidden=0
let NERDTreeShowHidden=1
<
------------------------------------------------------------------------------
*'NERDTreeShowLineNumbers'*
取值范围: 0 或 1
默认值: 0
这个选项用来告诉 Vim 是否为 NERD tree 窗口显示行号。使用下面的方式来设置: >
let NERDTreeShowLineNumbers=0
let NERDTreeShowLineNumbers=1
<
------------------------------------------------------------------------------
*'NERDTreeSortOrder'*
取值范围: 正则表达式列表
默认值: ['\/$', '*', '\.swp$', '\.bak$', '\~$']
这个选项中设置的正则表达式列表用来指定父节点下子节点的顺序。
例如,如果这些选项被设置为: >
['\.vim$', '\.c$', '\.h$', '*', 'foobar']
<
那么所有的 .vim 文件会被放置在顶部,接着是 .c 文件,然后是所有 .h 文件。所有包
含字符串 'foobar' 的文件会被放置在底部。星号是一个特殊的标志:它告诉脚本每一个
不匹配任何正则表达式的节点应该被放在这里。
如果 'NERDTreeSortOrder' 选项中没有星号,会在数组末尾自动添加一个。
正则表达式 '\/$' 用来匹配目录。
排序完成后,每一个组内的文件按字母顺序排序。
其它例子: >
(1) ['*', '\/$']
(2) []
(3) ['\/$', '\.rb$', '\.php$', '*', '\.swp$', '\.bak$', '\~$']
<
1. 目录在最后,其它所有在前面。
2. 任何节点都会按字母顺序展现。
3. 目录在前面,接着是 Ruby 和 PHP 文件。交换文件,备份文件和 Vim 备份文件跟随
在其它所有文件后面。
------------------------------------------------------------------------------
*'NERDTreeStatusline'*
取值范围: 任何可用的状态栏设置
默认值: %{b:NERDTreeRoot.path.strForOS(0)}
告诉插件为 NERD tree 窗口使用 |'statusline'| 设置。
注意状态栏是使用 |:let-&| 而不是 |:set| 所以不用转义空格。
将这个选项设置为 -1 会禁止它,这样就可以使用你自己的全局状态栏设置。
------------------------------------------------------------------------------
*'NERDTreeWinPos'*
取值范围: "left"(意为左边) 或 "right"(意为右边)
默认值: "left"
这个选项用来决定 NERD tree 窗口被显示在屏幕的什么位置。
这个选项使同时使用两个浏览插件成为可能。例如,你可以在左侧显示 taglist 插件的
窗口,右侧显示 NERD tree 的窗口。
------------------------------------------------------------------------------
*'NERDTreeWinSize'*
取值范围: 正整数
默认值: 31
这个选项用来改变 NERD tree 窗口在加载时的大小。
------------------------------------------------------------------------------
*'NERDTreeMinimalUI'*
取值范围: 0 或 1
默认值: 0
这个选项禁止 NERD tree 窗口显示 'Bookmarks' 和 'Press ? for help' 文本,
使用下面的方式来设置这个选项: >
let NERDTreeMinimalUI=0
let NERDTreeMinimalUI=1
<
------------------------------------------------------------------------------
*'NERDTreeDirArrows'*
取值范围: 0 或 1
默认值: 0
这个选项用来改变树中目录节点的默认外观。当这个选项设置为 0 的时候,会使用老式
的长条(|),+,~ 字符。当设置为 1 的时候使用右箭头和下箭头。使用下面方式设置
这个选项: >
let NERDTreeDirArrows=0
let NERDTreeDirArrows=1
<
------------------------------------------------------------------------------
*'NERDTreeCascadeOpenSingleChildDir'*
取值范围: 0 或 1
默认值: 1
当打开目录节点的时候,这个选项告诉 NERD tree 来递归地打开只有一个目录类型子节
点的目录。当找到一个包含除了单独的目录类型子节点以外的任何类型的子节点的目录的
时候,NERD tree 会停止递归。这个选项可以使 |NERDTree-x| 映射以同样的方式关闭目
录。这个选项对于 Java 工程很有用。使用下面的方式来设置这个选项: >
let NERDTreeCascadeOpenSingleChildDir=0
let NERDTreeCascadeOpenSingleChildDir=1
<
------------------------------------------------------------------------------
*'NERDTreeAutoDeleteBuffer'*
取值范围: 0 或 1
默认值: 0
当使用上下文菜单来删除或重命名文件的时候,你可能也想删除那个不再可用的缓冲区。
这个选项没有被设置的时候,你会看到一个询问你是否真的想删除旧的缓冲区的确认信
息。如果你总是按 'y' ,那么值得把这个选项设置为 1。
使用下面的方式来设置这个选项: >
let NERDTreeAutoDeleteBuffer=0
let NERDTreeAutoDeleteBuffer=1
<
==============================================================================
4. NERD tree API *NERDTreeAPI*
NERD tree 插件允许你通过 API 添加自定义的按键映射和菜单项。任何使用 API 的脚本
需要被放在 ~/.vim/nerdtree_plugin/ (*nix 系统)或 ~/vimfiles/nerdtree_plugin
(Windows 系统)。
插件导出了一些可以用来操作树和/或从中获得信息的原型对象: >
g:NERDTreePath
g:NERDTreeDirNode
g:NERDTreeFileNode
g:NERDTreeBookmark
<
请参阅 NERD_tree.vim 中的代码及注释来找到使用这些对象的方法。
使用了下面的编码约定:
* 类成员变量以大写字母开头
* 实例成员变量以小写字母开头
* 私有成员变量以下划线开头
更多细节见博客文章:
http://got-ravings.blogspot.com/2008/09/vim-pr0n-prototype-based-objects.html
------------------------------------------------------------------------------
4.1. 按键映射 API *NERDTreeKeymapAPI*
NERDTreeAddKeyMap({options}) *NERDTreeAddKeyMap()*
为所有 NERD tree 缓冲区添加一个新的按键映射。
{options} 必须是一个字典类型,且必须包含下面的键:
"key" - 新映射的触发键
"callback" - 新按键映射的处理函数
"quickhelpText" - 在快速帮助中显示的文本(详细请参阅 |NERDTree-?|)
"override" - 如果为 1,那么新的按键映射会覆盖该按键及作用域组合的任何先前
定义的映射。可以用来覆盖默认的按键映射。
此外,可以提供一个 "scope" 参数。限制按键映射只在光标在确定的对象上时才被
激活。那个对象会被传递到处理函数。可能的值为:
"FileNode" - 文件节点
"DirNode" - 目录节点
"Node" - 文件或目录节点
"Bookmark" - 书签
"all" - 这个按键映射默认不会限制任何作用域。当它们被使用的时候,处理函
数不会被传递任何参数。
例子: >
call NERDTreeAddKeyMap({
\ 'key': 'foo',
\ 'callback': 'NERDTreeCDHandler',