Vim - динамический список открытых буферов в окне
Я исследовал несколько способов ведения списка открытых буферов в Vim, и некоторые из них очень хороши, но, похоже, ни один из них не ведет себя так, как мне бы хотелось. Вполне возможно, что ничего подобного тому, чего я хочу, не существует, и это не помешает спросить.
Я использую NERDTree в GVim, и мне нравится идея поместить информацию в тонкое левое окно. Я собрал удобную диаграмму для того, как бы я хотел, чтобы моя среда выглядела так:
|--------|---------------------------------------|
| | |
| | |
|NERDTree| Windows |
| | |
| | |
| | |
|--------| |
| | |
| | |
| List | |
| of | |
| Open | |
| Buffers| |
| | |
| | |
|--------|---------------------------------------|
Итак, мой вопрос: есть ли vim-native или плагин-включенный способ поддерживать список открытых в данный момент буферов и выбирать / редактировать / закрывать из этого списка внутри окна, похожего на NERDTree?
Я понимаю, что этот подход может быть несовместим с образом работы Vim, и если вы чувствуете, что я что-то упускаю из-за того, как управлять несколькими файлами в сеансе Vim, оставьте комментарий с предложениями!
3 ответа
Вы искали хранилище плагинов vim.org? Есть десятки плагинов для переключения буфера на выбор, например, BufferGator или SelectBuf. Кроме того, большинство из них собраны в хороший список вики Vim.
Как вы упоминали в последней части вашего вопроса, такая система не всем по вкусу.
Я ненавижу постоянно открывать все эти меню, кнопки и списки того или иного: список открытых буферов полезен только тогда, когда вам действительно нужно перейти к другому буферу, оставляя такой открытый список мне кажется пустой тратой пространства, То же самое можно применить и к перегруженным статусным линиям.
Я использую тот же плагин для быстрого переключения между буферами и быстрого изучения файловой системы вокруг файла, который я сейчас редактирую. Вызывается с ,f
(файлы) или ,b
(буферы), окно исчезает, когда я закончу. Отлично. Есть другие подобные плагины, попробуйте их все, если вам нравится эта идея.
РЕДАКТИРОВАТЬ
Я чувствую себя обязанным добавить анимированный GIF CtrlP в действии, переключая буферы:
EndEdit
Родной :sb <Tab>
также довольно опрятный, но менее сексуальный. Он не поддерживает нечеткое сопоставление, но имеет некоторые большие преимущества: он встроен и работает как :e <Tab>
, :vs <Tab>
и так далее.
Я очень рекомендую MiniBufExplorer. Смотрите также альтернативу минибуфэксплорер?
Есть способ сделать это, используя плагин winmanager. На этом скриншоте я объединяю плагины NERDTree и MiniBufExpl (github: techlivezheng/vim-plugin-minibufexpl, latest commit atm 349a9fbb) в одном вертикальном разделении и переключаю его с помощью F4. Теоретически это решение должно работать для любой другой комбинации плагинов.
Пример моего.vimrc
"{{{MiniBufExpl config пусть g:miniBufExplVSplit = 20 "открывается по вертикали let g:miniBufExplSplitToEdge = 0 "открыть относительно предыдущего окна (NERDTree) " }}} Конфигурация MiniBufExpl " {{{ winmanager config зарегистрировать плагины let g:NERDTree_title='Дерево NERD' let g: MiniBufExpl_title = 'MiniBufExpl' "установить макет let g: winManagerWindowLayout = 'NERDTree | MiniBufExpl' "обработчик для NERDTree функция! NERDTree_Start() exec 'NERDTree' EndFunction обработчик для MiniBufExpl функция! MiniBufExpl_Start() exec 'MBEOpen' EndFunction "отображение, чтобы переключить разделение на F4 nmap: WMToggle "}}} winmanager config
Проблемы:
- NERDTree не использует буфер, который создает winmanager, а открывает сам по себе...
- ... поэтому буфер winmanager остается неиспользованным
- MiniBufExpl не обновляется должным образом при переходе между буферами
Поведение, которого я достиг, далеко от совершенства, но это хорошее начало.