Истории командной строки Vim являются глобальными. Техническая причина этого заключается в том, что истории хранятся в плоском списке в :help viminfo-file
.Логично также, что не имеет смысла присваивать определенные команды (например, :bufdo
) одному буферу.
Таким образом, не существует простого параметра, который можно установить, чтобы сделать историю поиска локальной длябуфер.С достаточной решимостью вы могли бы реализовать плагин для этого.Я вижу два возможных подхода:
- Вы мультиплексируете один файл viminfo (в котором хранятся истории) для буфера в глобальную историю через
:help :rviminfo
и:wviminfo
.Это относительно просто с :autocmd
s, и вы можете продолжать использовать стандартную (глобальную) :history
и связанные с ней команды.Но многие другие настройки (метки, переходы, предыдущие файлы и т. Д.) Хранятся внутри viminfo, и они также будут эффективно локализованы (если вы просто не поменяете часть истории поиска). - Вы перехватываетев команды поиска и регулярно синхронизируйте глобальную историю поиска (через
:help histget()
) в локальное буферное хранилище, а затем предлагайте свои собственные команды для вызова поиска, например, путем создания рабочего буфера, который показывает локальные поискикак встроенный q/
.Это, вероятно, приведет к гораздо лучшему удобству использования, но потребуется немного больше усилий для воссоздания ваших собственных команд истории.