У режимі вставки Vim, чи є спосіб додати автозавершення шляху до файлу?


81

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

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


цікаве питання, я б також хотів знати відповідь :)
Джей Зенг

@stephenmm Що робить Ctrl-D у вашій оболонці? У моїй оболонці bash він нічого не робить, коли я ввожу якийсь текст, інакше закриваю термінал.
alhelal

@alhelal - Здається, CTRL-D буде показувати файли та каталоги в якійсь старшій моїй оболонці. Я більше не бачу жодної функціональності CTRL-D.
stephenmm

Відповіді:


166

Для заповнення імені файлу omni ви можете використовувати:

Ctrl- XCtrl-F


11
Черговий момент ага ага .... Дякую. Я все одно не використовую вкладку у режимі вставки, тому додав це до мого .vimrc: imap <Tab> <CX> <CF>
stephenmm

4
Ще одним хорошим використанням для <tab> в режимі вставки є <cn>. Це автоматично заповнить слово, яке ви вводите, на основі інших слів у файлі, над яким ви працюєте. Я використовую його весь час, набираючи імена змінних або класів.
Дерек,

Чи є спосіб вплинути на шлях пошуку? Під час додавання записів #include у файл C шляхи можуть не співвідноситися з тим, звідки ви відкрили файл.
Роб Бредфорд,

@RobBradford спробуйте YouCompleteMe, якщо надано правильну інформацію (наприклад, я використовую .ycm_extra_conf.py, згенерований YCM-Generator, який використовує мою систему побудови на основі cmake), він буде чудово автоматично заповнити будь-яку назву шляху у ваших теках включення.
Emile Vrijdags

Vim не вдається автозавершити, коли в назві файлу є пробіли. Чи є спосіб це виправити?
Жан


18

На основі @CMS та @michael чудові відповіді

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

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

  1. За бажанням введіть якусь частину каталогу. Можна навіть використовувати../../ наприклад!
  2. Натисніть ctrl+ X ctrl+f і виберіть перший елемент у дереві зі списку.
  3. Далі натисніть ctrl+ fще раз, поки підсвічується правильний елемент, щоб відобразити список наступного рівня в структурі дерева каталогів.

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


6
На кроці 3 ви мали на увазі ctrl + x та ctrl + f? Оскільки просто ctrl + f не працює для мене, це робить те саме, що ctrl + n. До речі, тут це не працює, якщо в каталозі є пробіли: /. Ви знаєте обхідний шлях?
Rojo

0

Я відчував подібну проблему. Я знайшов таке рішення, як:

    sudo apt-get install realpath

А у VIM naviagte для файлів у звичайному режимі введіть:

    :r !realpath /path/to/file

Коли ви перебуваєте в режимі, не вставленому після! Realpatch, ви можете використовувати нашу клавішну кнопку.

VOILA! TAB знову працює!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.