Есть ли способ добавить автозаполнение пути к файлу в режиме вставки Vim?

81

Я пишу много сценариев оболочки, и мне постоянно приходится вводить пути к файлам. Мне интересно, знает ли кто-нибудь способ заставить Vim автоматически заполнять пути к файлам в режиме вставки, точно так же, как когда вы находитесь в своей любимой оболочке, вы вкладываете вкладку, чтобы завершить путь к каталогу или файлу.

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

Stephenmm
источник
интересный вопрос, я тоже хотел бы знать ответ :)
Джей Цзэн
@stephenmm Что делает Ctrl-D в вашей оболочке? В моей оболочке bash он ничего не делает, когда я ввожу какой-то текст, иначе закрываю терминал.
alhelal
@alhelal - похоже, что CTRL-D покажет файлы и каталоги в какой-то моей старой оболочке. Я больше не вижу функции CTRL-D.
stephenmm

Ответы:

166

Для всенаправленного завершения имени файла вы можете использовать:

Ctrl- XCtrl-F

Кристиан К. Сальвадо
источник
11
Еще один приятный момент .... Спасибо. Я все равно не использую вкладку в режиме вставки, поэтому добавил это в свой .vimrc: imap <Tab> <CX> <CF>
stephenmm
4
Еще один хороший вариант использования <tab> в режиме вставки - <cn>. Это автоматически дополнит слово, которое вы вводите, на основе других слов в файле, над которым вы работаете. Я постоянно использую его при вводе имен переменных или классов.
Дерек
Есть ли способ повлиять на путь поиска? При добавлении записей #include в файл C пути могут не относиться к тому, откуда вы открыли файл.
Роб Брэдфорд
@RobBradford попробуйте YouCompleteMe, если предоставлена ​​правильная информация (например, я использую .ycm_extra_conf.py, сгенерированный YCM-Generator, который использует мою систему сборки на основе cmake), он автоматически заполнит любое имя пути в ваших включаемых папках.
Эмиль Вридждагс
Vim не выполняет автозаполнение, если в имени файла есть пробелы. Есть способ исправить это?
Жан
18

Чтобы использовать @CMS и @michael отличные ответы

При использовании последовательности команд ctrl+ X ctrl+ fотобразится список файлов в текущем каталоге. Я трачу минуту на поиски нужной клавиши для перемещения вверх и вниз между разными именами файлов. Правильные клавиши - Ctrl-n и Ctrl-p. Вы можете использовать практически любую другую клавишу (например,Space ), чтобы выбрать и продолжить ввод.

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

  1. По желанию можно войти в какую-то часть каталога. Вы даже можете использовать, ../../например!
  2. Нажмите ctrl+ X ctrl+ fи выберите первый элемент в дереве из списка.
  3. Затем нажмите ctrl+ еще fраз, когда нужный элемент выделен, чтобы отобразить список следующего уровня вниз по древовидной структуре каталогов.

Вы можете продолжать делать это, пока не найдете каталог / файл, который хотите вставить в документ.

SnapShot
источник
6
На шаге 3 вы имели в виду ctrl + x и ctrl + f? Поскольку просто ctrl + f у меня не работает, он работает так же, как ctrl + n. Кстати, здесь не работает, если в каталоге есть пробелы: /. вы знаете обходной путь?
Rojo
0

У меня возникла аналогичная проблема. Я нашел решение вроде:

    sudo apt-get install realpath

И в VIM навиагте к файлу в обычном режиме типа:

    :r !realpath /path/to/file

Когда вы переходите в режим без вставки после! Realpatch, вы можете использовать нашу ключевую кнопку.

ВОЙЛА! TAB снова работает!

Amonowy
источник