在 Vim 中浏览扁平化的软件包

在 Vim 中浏览扁平化的软件包

我目前正在使用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

要缩小文件列表,请键入路径名中任意位置的字符。例如,dcbbul足以指定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,请忽略此建议。

相关内容