Vim: Простая команда «перейти к файлу»? - PullRequest
7 голосов
/ 12 августа 2010

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

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

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

Ответы [ 7 ]

14 голосов
/ 12 августа 2010

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

:find foo.py
6 голосов
/ 12 августа 2010

check command-t , FuzzyFinder или FuzzyFinder_Textmate

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

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

2 голосов
/ 12 августа 2010

Вы можете использовать завершение имен файлов на вкладке Vim в сочетании с рекурсивным расширением каталога **.

например, наберите: :e libfoo/**/foo.py и нажмите TAB.Это будет искать вниз из каталога libfoo, чтобы найти файл, который соответствует.Если найдено более одного совпадения, вы можете просмотреть их с помощью клавиши TAB.Когда вы найдете тот, который вам нужен, нажмите enter, чтобы завершить команду и отредактировать файл.

Для получения дополнительной информации о ** подходящем do :h starstar.Для этого требуется версия Vim, скомпилированная с параметром + path_extra.

Если вы уже редактировали файл один раз, вы также можете искать в буферах частичные совпадения имен с помощью команды :b name.Например, :b foo.py<TAB> расширится до имени буфера, в котором есть «foo.py».Обратите внимание, что он соответствует всему пути, поэтому :b foo<TAB> будет сопоставлять все буферы с файлами из каталога libfoo.

1 голос

ctags --extra=f . создает теги с тем же именем, что и файлы, указывающие на первую строку:

ctags -R --extra=f .

Тогда вы можете просто сделать:

:tag file_na

и табуляция завершена.

Упоминается по адресу: Vim и ctags: имена тегов

1 голос
/ 05 апреля 2015

ctrlp.vim

Полный путь нечеткий файл , буфер , mru , тег , ... искатель для Vim .

  • Написано на чистом Vimscript для MacVim, gVim и Vim 7.0 +.
  • Полная поддержка регулярных выражений Vim в качестве шаблонов поиска.
  • Мониторинг встроенных наиболее часто используемых файлов (MRU).
  • Встроенный искатель корневого проекта.
  • Открыть несколько файлов одновременно.
  • Создание новых файлов и каталогов.
  • Extensible.

Вы можете найти его на https://github.com/ctrlpvim/ctrlp.vim.

0 голосов
/ 14 января 2015

проверить это:

https://github.com/zhchang/quick_file

уникальные особенности: 1. вам не нужно знать, где именно он находится, если он находится в одной из вложенных папок 2. вам не нужно помнить полное имя, фрагменты будут делать 3. он будет соответствовать наиболее мелкому совпадению, но с большим количеством фрагментов пути он будет соответствовать глубже.

0 голосов
/ 07 июля 2012
map <S-F12> :execute "!start explorer \"" . expand( "%:p:h" ) . "\""<CR>

запускает окно проводника в каталоге используемого вами файла

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...