1

В настоящее время я использую NERDTree для просмотра каталогов в Vim. Одна вещь, которую мне не хватает в более здоровенных IDE (например, Eclipse), - это возможность просматривать в плоском или "пакетном" виде структуру каталогов, особенно при просмотре пакетов Java или Python (например).

Это:

com.foo.bar
com.foo.baz

Вместо этого:

com/
  foo/
    bar/
    baz/

Вы можете быстро добраться до любого узла, содержащего источник, без навигации по всему пути к этому источнику.

Кто-нибудь знает о плагине или другом способе сделать это?

2 ответа2

2

Взгляните на плагин 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, чтобы загрузить его. (Вам не нужно переходить к одному файлу; когда вы приблизитесь, вы можете использовать клавиши со стрелками, чтобы выбрать тот, который вам нужен.)

Во всяком случае, это не совсем то, что вы описали, но это может быть именно то, что вы хотите. :-)

0

редактировать

мои извинения за оригинальный ответ, который был совершенно неверным. Эта пересмотренная версия намного более одержима логикой.

Вы могли бы сделать

: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, не обращайте внимания на этот совет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .