Использование VIM для поиска файлов в проекте - PullRequest
1 голос
/ 02 марта 2020

Я использую VIM в качестве основного редактора кода для Laravel проектов. Пока я в VIM, я хочу найти файл, который я могу открыть как tabnew или как новую vsplit панель. Мне сказали, что есть команда поиска . Поэтому я попробовал что-то вроде этого:

:find ~/development.project1.com/ -name *Controller.php

Но это только дало мне ошибку E345: Can't find file "/var/www/development.project1.com/ -name *Controller.php" in path

Что я сделал не так? Как быстро найти другие файлы в VIM и открыть их как tabnew или как новую vsplit панель?

Ответы [ 2 ]

5 голосов
/ 02 марта 2020

Команда vim find отличается от команды unix find. Чтобы узнать, что делает find, используйте онлайн-справку!

:h find

Это даст вам ответ:

:fin[d][!] [++opt] [+cmd] {file}                                                                                                                
Find {file} in 'path' and then :edit it.                                                                                

Другими словами, :find похоже на :edit но смотрит в ваш path вместо только текущего каталога. Обратите внимание, что vim path отличается от переменной оболочки операционной системы PATH. Вы можете узнать, что находится в вашем path с помощью

set path?

Скорее всего, у вас нет всех подкаталогов вашего проекта на вашем пути (или в вашем PATH). Как и вы.

Если вы хотите отредактировать файл с именем, оканчивающимся на Controller. php, простое решение для поиска в каждом подкаталоге состоит в том, чтобы указать ** перед именем файла для подстановочного совпадения с каждым подкаталогом:

:e **/*Controller.php

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

Если вы хотите выбрать файл из нескольких совпадений и не хотите использовать плагины, вы можете прочитать список, используя команду unix file

:r! find . -name \*Controller.php

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

Хотя на самом деле это не ответ на ваш вопрос, с vanilla vim завершается wildmode из командной строки. Если wildmode включено, vim завершит имена файлов, когда вы откроете новый файл с :e.

Наконец, существует множество различных плагинов для нечеткого поиска для vim. Если вам не нужно windows, я рекомендую fzf.

1 голос
/ 02 марта 2020

vim команда find и find отличаются, как отмечено. Возможно, вам может понравиться ctrlp .

Но проще заменить vanilla vim на go в папку, содержащую ваши файлы, и в vim

  :set path+=**
  :find file_name

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

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