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

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

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

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

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

21.02.2009 13:50:50
Обратите внимание, что предлагаемые команды имеют различный эффект :tabe, откроет файл в новой вкладке, :newразделит окно по горизонтали и :editзакроет текущий файл перед открытием нового.
Skippy le Grand Gourou 22.10.2013 15:18:02
19 ОТВЕТОВ
РЕШЕНИЕ

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

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

61
19.08.2011 15:26:58

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

6
21.02.2009 13:52:36

если я что-то упустил, то: имя файла - самый быстрый способ, который я нашел.

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

12
25.09.2015 08:47:39
@ Dirkgently, это так. Это все еще сокращение, как следует из названия этого вопроса, но я не думаю, что это то, что ищет спрашивающий.
strager 21.02.2009 13:59:22
Для меня вкладка автозаполнения не работает для: e. Кроме того, вы не всегда хотите искать имя файла, которое начинается с чего-то, а скорее среднее слово в имени файла.
Andriy Drozdyuk 19.07.2010 18:51:44

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

:tabe **/header.h

Нажмите вкладку, чтобы увидеть различные завершения, если есть более одного совпадения.

25
21.02.2009 13:54:56
Я пытался использовать это, но это так медленно. Я имею в виду, что мое приложение большое, и редактор на какое-то время перестал работать. Знаете ли вы какие-либо настройки для увеличения производительности и скорости редактора.
Techmaddy 23.02.2009 11:20:15
Хороший ответ. Используйте что-то вроде, :tabe **/*der.hесли вы не помните полное имя файла.
ziiweb 29.01.2015 21:46:49

Мне нравится: FuzzyFinderTextMate (или Ctrl+ F) в моей настройке. Смотрите http://weblog.jamisbuck.org/2008/10/10/coming-home-to-vim

10
10.09.2011 11:15:49

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

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

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

1
21.02.2009 14:30:46

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

И, как уже говорили другие, вы можете завершить имена файлов в конце строки (см. :help cmdline-completionПодробнее).

4
21.02.2009 15:09:19

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

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

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

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

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

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

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

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

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


  1. Вы редактируете файл с именем test.java в "/ home / prog"
  2. ,cd -> Текущий рабочий каталог теперь становится "/ home / prog"
  3. ,e -> Расширяется до «: e / home / prog», так что вы можете просто ввести имя файла, скажем test.h.

  1. ,e -> Расширяется до ": e / home"
  2. tab -> Цикл по подкаталогам / home
  3. enter-> cdв каталог, который вы хотите сказать / home / prog
  4. ,e -> Расширяется до ": e / home / prog"
9
10.09.2011 11:48:56

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

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

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

3
22.02.2009 10:25:38

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

141
7.10.2014 11:04:57
Вам не нужно места, экономя дополнительно 25% печатать. ( :e.).
Konrad Rudolph 22.02.2009 10:29:04
Точка не нужна, если вы используете заглавную e, например: E <ENTER>
Andriy Drozdyuk 19.07.2010 18:50:05
@drozzy Это происходит с vim :-)
DerMike 4.07.2012 09:21:02
Существует различие в поведении между :e.и тем не :Eменее: если текущий файл был отредактирован и еще не сохранен, первый будет жаловаться (как :edit) из-за «отсутствия записи с момента последнего изменения», в то время как последний будет горизонтально разбивать окно (как :new), чтобы разрешить открытие нового файла (в то время как оба заменят текущий файл новым файлом, если он не был изменен (как :edit)).
Skippy le Grand Gourou 22.10.2013 15:14:49
Если вы откроете файл, а затем замените его вторым файлом, вы можете вернуться к первому, используя «e #»
dkretz 4.05.2015 22:58:24

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

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

1
23.02.2009 12:25:56

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

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

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

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

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

:FuzzyFinderBuffer
0
7.01.2010 20:42:37
Уверен? У меня есть некоторые настройки в моем .vimrc, ищите "g: fuf_abbrevMap". Я должен был найти пример в документации. Когда я набираю ярлык, я набираю аббревиатуру, например «web:», и она будет искать все файлы в папке по моему выбору. Моя проблема на самом деле в том, что по какой-то причине он больше не открывает файлы, вместо этого я вижу [NEW DIRECTORY] в строке состояния. Но у меня та же проблема с: o, похоже, не имеет отношения к fuf.
user58777 11.03.2010 20:33:05

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

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

:e CTRL+r CTRL+w

4
7.01.2010 20:56:06
Я нажал GF и теперь я открыл новый файл, который находится под курсором. Теперь, как вернуться к исходному файлу. !!
vrbilgi 20.01.2011 11:08:15
@ user430294: он открыт в другом буфере. Использование:b oldname
Nathan Fellman 20.01.2011 12:11:44
@vrbilgi, используйте Ctrl + o, чтобы вернуться к ранее отредактированному файлу. Используйте Ctrl + i, чтобы снова перейти к файлу, из которого вы вернулись.
Беров 18.04.2019 11:30:41

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

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

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

:find **/filena< tab >

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

33
5.11.2010 18:52:37
Я не считаю полезным, :findпоскольку получить путь относительно рабочего каталога. Смотрите вопрос и ответ @romainl здесь: stackoverflow.com/questions/28224168/… . Я нашел более интересный ответ @strager, чтобы легче найти путь относительно рабочего каталога.
ziiweb 29.01.2015 21:42:45

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

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

8
9.08.2010 01:31:43
Вы также можете попробовать ctrlp.vim ( github.com/kien/ctrlp.vim ). Он в основном такой же, как Command-T, но написан на чистом Vimscript. (ИМХО его проще использовать)
datentyp 11.01.2012 15:39:17

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

Это входит в Янус Дистрибутив .

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

16
8.10.2014 22:20:42
на самом деле я использую его как часть дистрибутива Janus.
Alexey 6.01.2013 11:10:27
Исходный репозиторий CtrlP неактивен, но есть активный форк
jpyams 21.03.2018 18:40:11

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

ctags --extra=+f -R *

Затем откройте файл из VIM с

:tag filename

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

0
6.05.2013 04:42:22

В GVIM файл можно просматривать с помощью диалога открытия / чтения / записи;

:browse {command}

{команда} - открыть / прочитать / написать

open - открывает файл для чтения - добавляет файл для записи - диалог SaveAs

1
29.03.2019 04:43:17