Ярлык для открытия файла в Vim

Я хочу открыть файл в Vim, как в Eclipse, с помощью Ctrl + Shift + R или с помощью опции Ctrl + N автозаполнения. Вызовите комбинацию клавиш, введите имя файла/шаблон и выберите все имена совпадающих файлов.

Я знаю, как обычно открывать его:

:tabe <filepath>
:new <filepath>
:edit <filepath>

Проблема в том, что я должен указать весь путь к файлу в этих случаях.

Ответ 1

Недавно я влюбился в fuzzyfinder.vim...: -)

: FuzzyFinderFile позволит вам открывать файлы, набирая частичные имена или шаблоны.

Ответ 2

То, что я обычно делаю, это e . (e-space-dot), который дает мне просматриваемый текущий каталог - тогда я могу / - искать фрагменты имен, точно так же, как найти слово в текстовом файле. Я нахожу это в целом достаточно хорошим, простым и быстрым.

Ответ 3

:find - это еще один вариант.

Я открываю vim из корня моего проекта и устанавливаю там path.

Затем я могу открывать файлы, расположенные в любом месте дерева, используя:

:find **/filena< tab >

Tab будет автозаполнен через различные совпадения. (** указывает, что он рекурсивно ищет путь).

Ответ 4

Вы можете искать файл в текущем пути с помощью **:

:tabe **/header.h

Вкладка "Хит", чтобы увидеть различные завершения, если существует более одного соответствия.

Ответ 5

если мне не хватает чего-то:: e filename - самый быстрый способ, который я нашел.

Вы можете использовать вкладку, чтобы автозаполнять имя файла.

Ответ 6

Рассмотрите возможность использования CtrlP плагина.

Он включен в Janus Distributive.

Позволяет находить файлы в текущем каталоге, открывать буферы или последние использованные файлы, используя "нечеткое соответствие" или регулярное выражение.

Ответ 8

Я использую пару ярлыков в моем файле .vimrc(точный синтаксис ниже).

Они основаны на факте, что в 90% случаев я хочу открыть другой файл в том же каталоге, что и файл, который я сейчас редактирую, или в каталоге, который очень близок в иерархии к редактируемому файл.

Вот что делают команды:

,cd: измените текущий рабочий каталог на каталог, в котором находится текущий файл.

,e: открывает файл с уже заполненным текущим рабочим каталогом, поэтому вам нужно указать только имя файла.

Поместите их в свой .vimrc:

map ,e :e <C-R>=expand("%:p:h") . "/" <CR>

map ,cd :cd %:p:h <CR>

Здесь последовательность событий:


  • Вы редактируете файл test.java в файле /home/prog.
  • ,cd → Текущий рабочий каталог сейчас становится "/home/prog"
  • ,e → Расширяется до ": e/home/prog", поэтому что вы можете просто заполнить файл имя, скажем test.h.

  • ,e → Расширяется до ": e/home"
  • tab → Цикл через подкаталоги /home
  • entercd в каталог, в котором вы хочу сказать /home/prog
  • ,e → Расширяется до ": e/home/prog"

Ответ 9

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

https://wincent.com/products/command-t/

Ответ 10

Используйте вкладки, они работают при вводе путей к файлам в режиме vim escape!

Ответ 11

Если у вас есть теги (и вы должны), вы можете открыть файл из командной строки только по имени класса или метода или c функции с помощью "vim -t DBPlaylist" и внутри vim с помощью ": tag ShowList".

Ответ 12

Если вы редактируете файлы в общем каталоге, вы можете :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).

Ответ 13

Я знаю три плагина, которые позволяют открывать файлы, поддерживать автоматическое завершение и не требуют ввода полного имени файла для открытия (пока файлы находятся под одним из каталогов из &path вариант vim):

В последнее время я видел еще один плагин с аналогичной функцией, но я не помню имя.

Вскоре: find, вероятно, поддерживает автоматическое завершение - патчи по этой теме в эти дни распространяются в списке рассылки vim_dev.

Ответ 14

Это не совсем то, что вы ищете, но это хорошо во многих случаях (хотя и не для всех).

Если вы открываете VIM и там есть имя файла в буфере, вы можете поместить курсор на это имя файла и набрать g f. Это открывает файл, имя которого находится под курсором в том же буфере. Это то же самое, что

:e CTRL+r CTRL+w

Ответ 15

  • вы можете использовать (установить wildmenu)
  • вы можете использовать вкладку для автозаполнения имен файлов
  • вы также можете использовать сопоставление, например: e p*.dat или что-то вроде этого (например, в старых "dos" )
  • вы также можете: просмотреть подтверждение e (для графического окна)

  • но вы также должны указать, какую версию vim вы используете, и как это работает в emacs. Возможно, мы могли бы найти вам точный вариант vim.

Ответ 16

FuzzyFinder упоминается, однако мне нравится текстовое сообщение как поведение плагина FuzzyFinderTextmate, который расширяет поведение, чтобы включить все поддиры.

Убедитесь, что вы используете версию 2.16 fuzzyfinder.vim. Более высокие версии ломают плагин.

Ответ 17

Я установил FuzzyFinder. Однако ограничение состоит в том, что он находит файлы только в текущем каталоге. Одним из способов решения этой проблемы является добавление FuzzyFinderTextmate. Однако, основываясь на документах и ​​комментариях, это не работает надежно. Вам нужна правильная версия FuzzyFinder, и вам нужна ваша копия Vim для компиляции с поддержкой Ruby.

Другой способ обхода, который я сейчас тестирую, - открыть все файлы, которые, вероятно, понадобятся в начале сеанса редактирования. Например, откройте все файлы в каталогах ключей...

:args app/**
:args config/**
:args test/**
etc...

(Это означает, что у меня было бы возможно множество открытых файлов, однако до сих пор оно все еще работает нормально.)

После этого я могу использовать FuzzyFinder в режиме буфера, и он будет действовать как TextMate command-o ярлык...

:FuzzyFinderBuffer

Ответ 18

С Exuberant ctags вы можете создавать файлы тегов с информацией о файле:

ctags --extra=+f -R *

Затем откройте файл VIM с помощью

:tag filename

Вы также можете использовать <tab> для автозаполнения имени файла.