Vim: Простой “переход в файл” команда?

Что самый простой путь состоит в том, чтобы "перейти в файл где-нибудь в моем исходном дереве по имени"? Например, если я работаю с "libfoo", который содержит libfoo/foo/foo.py, Я хотел бы смочь перейти к foo.py отовсюду в libfoo/**[0].

Возможно некоторый способ сделать это с файлом тегов?

[0]: то есть, libfoo/ и его подкаталоги.

7
задан David Wolever 12 August 2010 в 02:06
поделиться

3 ответа

проверьте command-t, FuzzyFinder, или FuzzyFinder_Textmate

Лично я считаю, что у command-t лучший пользовательский интерфейс, но FuF_Textmate лучше всего подходит для быстрого поиска нужного места в очень больших проектах (именно поэтому я использую его после того, как попробовал все три)

Обратите внимание, что fuzzyfinder_textmate не поддерживается его первоначальным автором, поэтому вам, возможно, придется порыться во вкладке gh network, чтобы найти, у кого есть наиболее актуальная ветка. Также обратите внимание, что его немного сложно установить.

6
ответ дан 6 December 2019 в 07:24
поделиться

Добавьте ** - это разделенная запятыми переменная vim путь (не системный путь), и если вы находитесь в родительском каталоге использование проекта:

:find foo.py
15
ответ дан 6 December 2019 в 07:24
поделиться

Вы можете использовать завершение имен файлов табуляцией 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.

2
ответ дан 6 December 2019 в 07:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: