Ответ 1
Недавно я влюбился в fuzzyfinder.vim...: -)
: FuzzyFinderFile позволит вам открывать файлы, набирая частичные имена или шаблоны.
Я хочу открыть файл в Vim, как в Eclipse, с помощью Ctrl + Shift + R или с помощью опции Ctrl + N автозаполнения. Вызовите комбинацию клавиш, введите имя файла/шаблон и выберите все имена совпадающих файлов.
Я знаю, как обычно открывать его:
:tabe <filepath>
:new <filepath>
:edit <filepath>
Проблема в том, что я должен указать весь путь к файлу в этих случаях.
Недавно я влюбился в fuzzyfinder.vim...: -)
: FuzzyFinderFile позволит вам открывать файлы, набирая частичные имена или шаблоны.
То, что я обычно делаю, это e .
(e-space-dot), который дает мне просматриваемый текущий каталог - тогда я могу /
- искать фрагменты имен, точно так же, как найти слово в текстовом файле. Я нахожу это в целом достаточно хорошим, простым и быстрым.
:find
- это еще один вариант.
Я открываю vim из корня моего проекта и устанавливаю там path
.
Затем я могу открывать файлы, расположенные в любом месте дерева, используя:
:find **/filena< tab >
Tab будет автозаполнен через различные совпадения. (**
указывает, что он рекурсивно ищет путь).
Вы можете искать файл в текущем пути с помощью **
:
:tabe **/header.h
Вкладка "Хит", чтобы увидеть различные завершения, если существует более одного соответствия.
если мне не хватает чего-то:: e filename - самый быстрый способ, который я нашел.
Вы можете использовать вкладку, чтобы автозаполнять имя файла.
Рассмотрите возможность использования CtrlP плагина.
Он включен в Janus Distributive.
Позволяет находить файлы в текущем каталоге, открывать буферы или последние использованные файлы, используя "нечеткое соответствие" или регулярное выражение.
Мне нравится: FuzzyFinderTextMate (или Ctrl + F) в моей настройке. См. http://weblog.jamisbuck.org/2008/10/10/coming-home-to-vim
Я использую пару ярлыков в моем файле .vimrc(точный синтаксис ниже).
Они основаны на факте, что в 90% случаев я хочу открыть другой файл в том же каталоге, что и файл, который я сейчас редактирую, или в каталоге, который очень близок в иерархии к редактируемому файл.
Вот что делают команды:
,cd
: измените текущий рабочий каталог на каталог, в котором находится текущий файл.
,e
: открывает файл с уже заполненным текущим рабочим каталогом, поэтому вам нужно указать только имя файла.
Поместите их в свой .vimrc:
map ,e :e <C-R>=expand("%:p:h") . "/" <CR>
map ,cd :cd %:p:h <CR>
Здесь последовательность событий:
,cd
→ Текущий рабочий каталог сейчас
становится "/home/prog" ,e
→ Расширяется до ": e/home/prog", поэтому
что вы можете просто заполнить файл
имя, скажем test.h.,e
→ Расширяется до ": e/home" tab
→ Цикл через подкаталоги /home enter
→ cd
в каталог, в котором вы
хочу сказать /home/prog ,e
→ Расширяется до ": e/home/prog" Там также command-t, который я считаю лучшим из группы (и я пробовал их все). Это небольшая хлопот, чтобы установить его, но, как только он будет установлен, это сон для использования.
Используйте вкладки, они работают при вводе путей к файлам в режиме vim escape!
Если у вас есть теги (и вы должны), вы можете открыть файл из командной строки только по имени класса или метода или c функции с помощью "vim -t DBPlaylist" и внутри vim с помощью ": tag ShowList".
Если вы редактируете файлы в общем каталоге, вы можете :cd
в этот каталог, а затем используйте :e
только для имени файла.
Например, вместо:
:e /big/long/path/that/takes/a/while/to/type/or/tab/complete/thingy.rb
:sp /big/long/path/that/takes/a/while/to/type/or/tab/complete/other_thingy.c
:vs /big/long/path/that/takes/a/while/to/type/or/tab/complete/one_more_thingy.java
Вы можете сделать:
:cd /big/long/path/that/takes/a/while/to/type/or/tab/complete/
:e thingy.rb
:sp other_thingy.c
:vs one_more_thingy.java
Или, если у вас уже есть файл в нужном каталоге, вы можете использовать сокращенную строку %
для текущего имени файла и обрезать его в текущем каталоге с помощью модификатора :h
(:help :_%:
):
:e /big/long/path/that/takes/a/while/to/type/or/tab/complete/thingy.rb
:cd %:h
:sp other_thingy.c
:vs one_more_thingy.java
И, как говорили другие, вы можете вставлять полные имена файлов в ex-line (подробнее см. :help cmdline-completion
).
Я знаю три плагина, которые позволяют открывать файлы, поддерживать автоматическое завершение и не требуют ввода полного имени файла для открытия (пока файлы находятся под одним из каталогов из &path
вариант vim):
:e
/:find
, а на действия split)В последнее время я видел еще один плагин с аналогичной функцией, но я не помню имя.
Вскоре: find, вероятно, поддерживает автоматическое завершение - патчи по этой теме в эти дни распространяются в списке рассылки vim_dev.
Это не совсем то, что вы ищете, но это хорошо во многих случаях (хотя и не для всех).
Если вы открываете VIM и там есть имя файла в буфере, вы можете поместить курсор на это имя файла и набрать g f. Это открывает файл, имя которого находится под курсором в том же буфере. Это то же самое, что
:e CTRL+r CTRL+w
p*.dat
или что-то вроде этого (например, в старых "dos" )вы также можете: просмотреть подтверждение e (для графического окна)
но вы также должны указать, какую версию vim вы используете, и как это работает в emacs. Возможно, мы могли бы найти вам точный вариант vim.
FuzzyFinder упоминается, однако мне нравится текстовое сообщение как поведение плагина FuzzyFinderTextmate, который расширяет поведение, чтобы включить все поддиры.
Убедитесь, что вы используете версию 2.16 fuzzyfinder.vim. Более высокие версии ломают плагин.
Я установил FuzzyFinder. Однако ограничение состоит в том, что он находит файлы только в текущем каталоге. Одним из способов решения этой проблемы является добавление FuzzyFinderTextmate. Однако, основываясь на документах и комментариях, это не работает надежно. Вам нужна правильная версия FuzzyFinder, и вам нужна ваша копия Vim для компиляции с поддержкой Ruby.
Другой способ обхода, который я сейчас тестирую, - открыть все файлы, которые, вероятно, понадобятся в начале сеанса редактирования. Например, откройте все файлы в каталогах ключей...
:args app/**
:args config/**
:args test/**
etc...
(Это означает, что у меня было бы возможно множество открытых файлов, однако до сих пор оно все еще работает нормально.)
После этого я могу использовать FuzzyFinder в режиме буфера, и он будет действовать как TextMate command-o
ярлык...
:FuzzyFinderBuffer
С Exuberant ctags вы можете создавать файлы тегов с информацией о файле:
ctags --extra=+f -R *
Затем откройте файл VIM с помощью
:tag filename
Вы также можете использовать <tab>
для автозаполнения имени файла.