Як зробити так, щоб Vim робив звичайне (Bash-подібне) вкладку для імен файлів?


289

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


10
Технічно кажучи, я впевнений, що "баш" не завершує вкладку. Це читання робить це.
Maxy-B

2
Ми говоримо про налаштування поведінки функції ^ X ^ F?
BrunoJCM

Відповіді:


413

Я особисто використовую

set wildmode=longest,list,full
set wildmenu

Коли ви введете перше звернення до вкладки, воно буде виконано якнайбільше. Друге звернення до вкладки містить список. Третя та наступні вкладки перейдуть через параметри завершення, щоб ви могли доповнити файл без додаткових клавіш.

Баш як би був справедливим

set wildmode=longest,list 

але повна дуже зручна.


1
Я б хотів, щоб це було типовою поведінкою в vim. Я хоч не доходив до повного заповнення вкладок, поки не побачив цю публікацію.
Neha Karanjkar

6
@NehaKaranjkar Я рекомендую зберігати архів точкових файлів, щоб полегшити його розгортання в нових умовах
michael

2
Чи є спосіб почати повноцінно лише тоді, коли результатів мало? щось на кшталт set wildmode=longest,5full,list. З повною кількістю результатів марна, але дуже зручна з кількома. Це буде ідеально підходити до чогось на кшталт "показати повне, тільки якщо завершення вміститься на одному
рядковому

1
Раніше це працювало в минулому (gVim / ubuntu), але зараз немає (macvim8.x / macOS). Див. Приклад . Будь-які ідеї?
Пашаліс

1
Після допущення заповнення вкладки початкового коду протягом 2 місяців, я думаю, що повинен бути спосіб спростити його. Дякую.
ramwin

23

Найближча поведінка до завершення Баша повинна бути

set wildmode=longest:full,full

Якщо набрано декілька символів, натискання вкладки один раз дасть усі відповідні місця wildmenu. Це відрізняється від відповіді Майкла, яка відкриває вікно, схоже на виправлення під командним рядком.

Потім ви можете продовжувати вводити решту символів або знову натискати вкладку, щоб автоматично завершити перший матч і обвести навколо нього.


Я думаю, що я віддаю перевагу саме цьому.
Едді Екофо

8

Якщо ви не хочете встановити меню дикого меню, ви завжди можете натиснути Ctrl+, Lколи хочете відкрити файл. Ctrl+ Lзавершить ім'я файлу, як Bash завершення.


Ctrl-L не діє як автозаповнення bash. Він не проходить цикл через усі можливі варіанти.
дощ

2
Мій баш справді діє так. <Tab>завершує поточний рядок, наскільки це однозначно можливо (наприклад, CTRL-Lу Vim) та <Tab><Tab>показує список можливих збігів (наприклад, CTRL-Dу Vim).
glts

8

Крім запропонованого wildmode / wildmenu, Vim також пропонує можливість показати всі можливі завершення за допомогою Ctrl+ D. Це може бути корисно для деяких користувачів, які натрапляють на це питання під час пошуку різних варіантів автодоповнення у Vim, як я.


4

Я припускаю, що ви використовуєте автозаповнення у Vim через Ctrl+ Nдля пошуку через поточний буфер. Використовуючи цю команду, ви отримуєте список рішень; просто повторіть команду для переходу до наступного пункту у списку. Те саме стосується всіх команд автозаповнення. Поки вони заповнюють усе слово, ви можете продовжувати переміщатися по списку, поки не з’явиться той, який ви хочете використовувати.

Це може бути більш корисною командою: Ctrl+ P. Єдина відмінність полягає в тому, що Ctrl+ здійснює Pпошук назад у буфері, а Ctrl+ Nшукає вперед ... Реально, вони обидва надають список з однаковими елементами, і вони можуть просто з’являтися в іншому порядку.


0

Спробуйте використовувати :set wildmenu. Крім того, я не впевнений, що саме ви намагаєтесь.

О, так, і, можливо, спробуйте це посилання: посилання

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