Что самый простой путь состоит в том, чтобы "перейти в файл где-нибудь в моем исходном дереве по имени"? Например, если я работаю с "libfoo", который содержит libfoo/foo/foo.py
, Я хотел бы смочь перейти к foo.py
отовсюду в libfoo/**
[0].
Возможно некоторый способ сделать это с файлом тегов?
[0]: то есть, libfoo/
и его подкаталоги.
проверьте command-t, FuzzyFinder, или FuzzyFinder_Textmate
Лично я считаю, что у command-t лучший пользовательский интерфейс, но FuF_Textmate лучше всего подходит для быстрого поиска нужного места в очень больших проектах (именно поэтому я использую его после того, как попробовал все три)
Обратите внимание, что fuzzyfinder_textmate не поддерживается его первоначальным автором, поэтому вам, возможно, придется порыться во вкладке gh network, чтобы найти, у кого есть наиболее актуальная ветка. Также обратите внимание, что его немного сложно установить.
Добавьте **
- это разделенная запятыми переменная vim путь
(не системный путь), и если вы находитесь в родительском каталоге использование проекта:
:find foo.py
Вы можете использовать завершение имен файлов табуляцией Vim вместе с рекурсивным расширением каталога **
.
например. введите: : e libfoo / ** / foo.py
и нажмите TAB. Это будет искать в каталоге libfoo соответствующий файл. Если совпадений несколько, их можно просмотреть с помощью клавиши TAB. Когда вы найдете тот, который вам нужен, нажмите клавишу ВВОД, чтобы завершить команду и отредактировать файл.
Подробнее о ** сопоставлении см. : h starstar
. Для этого требуется версия Vim, скомпилированная с параметром + path_extra.
Если вы уже редактировали файл один раз, вы также можете искать в буферах совпадения частичных имен с помощью команды : b name
. например : b foo.py
будет расширяться до имени буфера, в котором есть «foo.py». N.B. он соответствует всему пути, поэтому : b foo
сопоставит все буферы с файлами из каталога libfoo.