1

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

Target Soft/OS

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

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

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

  • a
  • б>
    • с
    • 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

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

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

:set shellslash

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .