Автозаполнение имени буфера Vim не работает после первого каталога

368
Toffanim

У меня проблема с поведением автозаполнения Vim для имен буферов.

Target Soft / OS

Я использую gVim без плагинов на Windows 10

Что я хотел бы сделать

Предполагая, что у нас есть дерево файлов вроде:

  • б>
    • с
    • d
    • e0
    • е>
      • е
      • г

Когда я ищу имя буфера, вот поведение, которое я хотел бы:

  • :b <Tab> => Перечислите «a», «b /» или все файлы в cwd, не все имена буферов, если это возможно
  • :b b<Tab> => :b b/
  • :b b/<Tab> => Список "c" "d" "e0" "e /"
  • :b a/e<Tab> => Перечислите «e0» «e /», чтобы я мог выбрать правильный путь
  • :b a/e/<Tab> => Список "F /" "G /" и так далее

Что я пробовал

set wildmode=longest:list, full 

Если я хочу найти файл «Core / types.h», и у меня есть файл «Care / file.h»:

  • :b C<Tab> => он печатает все файлы, когда я предпочитаю иметь только один уровень информации, такой как «Core /» и «Care /», а не «Core / types.h» и «Care / files.h», но это меньше важный вопрос
  • :b Co<Tab>=> :b Core/(Это хорошо!)
  • :b Core/t<Tab>=> ничего не делает! (Почему он не принимает «Core / T» в качестве подстановочного знака?)
  • :b ty=> :b Core/types.h (Это хорошо!)

Может ли это быть из-за того, как я открываю все свои буферы? Я делаю, gvim **/*чтобы загрузить все мои исходные файлы.

В основном проблема заключается в том, что автозаполнение не работает после каталога, а :b ty<Tab>работает, но не:b Core/ty<Tab>

Надеюсь, я был ясен и решение этой проблемы существует :)

1

1 ответ на вопрос

1
Ingo Karkat

Я могу воспроизвести это с Vim 8.0.2 на Windows 8.1.

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

:set shellslash 

Пожалуйста, сообщите об этой ошибке, см :help bugs. По сути, откройте проблему в системе отслеживания ошибок или напрямую обсудите ее в списке рассылки vim_dev .

Это именно проблема! Спасибо, я сообщаю об ошибке Toffanim 7 лет назад 0