Я знаю, что могу завершить имена файлов / пути из текущего каталога, используя Ctrl + X, Ctrl + F ( compl-filename
). Это прекрасно работает в сочетании с set autochdir, который изменяет обновляет текущий каталог на каталог активного буфера.
Однако я начал использовать, airblade/vim-rooter
чтобы сделать текущий каталог папкой «проекта». Теперь завершение имени файла всегда начинается с папки проекта.
Вопрос: есть ли способ заставить завершение имени файла использовать каталог активного буфера вместо текущего каталога? Или какой-то другой обходной путь?
autocompletion
Рафаэль Барбоса
источник
источник
path
). Это зависит от того, что вы планируете использовать для vim-rooter. В зависимости от того, что вы хотите от него, мы можем использовать другие плагины. Кроме того: я использую youcompleteme, которая завершает пути из каталога текущего буфера, если вы начинаете печатать./
. См. Reddit.com/r/vim/comments/216jdd/…Ответы:
Как уже упоминалось, @muru, нет никаких опций для настройки каталога, из которого следует указывать путь и имена файлов. Он всегда использует рабочий каталог окна.
Я написал несколько функций и сопоставлений, чтобы помочь с этим. За кулисами они
:lcd
временно меняют локальный рабочий каталог (используя ), а затем восстанавливают предыдущий рабочий каталог по завершении.слон
По неизвестным даже мне причинам я назвал этот микро-плагин Elephant .
Вот код (скопированный из моей конфигурации Vim на GitHub ):
Как это использовать
Использование этих сопоставлений происходит в 3 этапа.
1. Запустите отображение
В режиме вставки или режиме командной строки вызовите отображение с помощью
<C-R><C-E>
.2. Выберите каталог
Введите один символ, чтобы выбрать, из какого корневого каталога вы хотите завершить. Код выше предоставляет два типа корней:
f
- Каталог, в котором находится текущий файл (буфер)p
- Базовый каталог проекта Git, к которому принадлежит текущий файл3. Введите путь или имя файла
Вам будет предложено ввести путь или имя файла относительно указанного каталога, с завершением доступно. Нажмите,
Enter
когда закончите.Некоторые заметки
<C-X><C-F>
делается; вместо этого вы будете вводить путь или имя файла в командной строке (куда:
идут команды). После нажатияEnter
путь будет вставлен в буфер.Enter
и забываете, что вам все равно нужно нажать,Enter
чтобы выполнить любую команду, которую вы только что набирали.g:elephant_map
.источник