我目前正在使用NERD树用于在 Vim 中浏览目录。我怀念更强大的 IDE(例如 Eclipse)的一点是能够在目录结构的扁平视图或“包”视图中浏览,特别是在浏览 Java 或 Python 包时(例如)。
这:
com.foo.bar
com.foo.baz
而不是这样:
com/
foo/
bar/
baz/
您可以快速到达任何包含源的节点,而无需导航到该源的整个路径。
有人知道有什么插件或者其他方法可以实现这一点吗?
答案1
看一下 Command-T 插件:
https://wincent.com/products/command-t
以下是开发人员的描述:
The Command-T plug-in for VIM provides an extremely fast,
intuitive mechanism for opening files with a minimal number
of keystrokes. It's named "Command-T" because it is inspired
by the "Go to File" window bound to Command-T in TextMate.
Files are selected by typing characters that appear in their
paths, and are ordered by an algorithm which knows that
characters that appear in certain locations (for example,
immediately after a path separator) should be given more weight.
当您浏览时,文件会以扁平列表的形式显示,并包含相对于当前目录的完整路径名:
Surface.java
TextureChooser.java
Tools.java
demos/Arcs_Curves/Arcs.java
demos/Arcs_Curves/BezierAnim.java
demos/Arcs_Curves/Curves.java
demos/Arcs_Curves/Ellipses.java
demos/Clipping/Areas.java
demos/Clipping/ClipAnim.java
demos/Clipping/Intersection.java
demos/Clipping/Text.java
demos/Colors/BullsEye.java
demos/Colors/ColorConvert.java
demos/Colors/Rotator3D.java
demos/Composite/ACimages.java
demos/Composite/ACrules.java
要缩小文件列表,请键入路径名中任意位置的字符。例如,dcb
或bul
足以指定demos/Colors/BullsEye.java
。
输入足够多的路径名来找到所需文件后,只需按 Enter 即可加载。(您不必一直找到单个文件;一旦找到,就可以使用箭头键选择所需的文件。)
无论如何,它并不完全像您所描述的,但它可能正是您想要的。:-)
答案2
编辑
抱歉,原来的答案完全不正确。这个修订版的逻辑性更强。
你可以做
:new
:r !find -type d
然后将光标放在您感兴趣的目录上并按 ^WF 以在该目录上获取 netrw 窗口。
这会为您提供所有目录的列表,包括具有子目录的目录。听起来您只想查看没有子目录的目录。
因此,要过滤它以便只显示“叶节点”,您可以将其导入另一个命令。我怀疑有更好的方法,但这应该可以做到:
:r !find -type d | while read d; do if (( $(find "$d" -mindepth 1 -maxdepth 1 -type d | wc -l) == 0 )); then echo "$d"; fi; done
基本上它只是遍历所有子目录,并打印那些本身没有子目录的子目录。这是一种非常低效的方法,但它应该能让你得到(我认为)你想要的东西。
我从未使用过 NERDTree,所以我无法告诉你如何与它集成……但这就是我的做法。如果你使用的是 Windows,请忽略此建议。