Многоуровневые представления Vim (окна, буферы и вкладки) немного сбили меня с толку. Скажем, я разделил отображение (: sp), а затем выбрал другой буфер для отображения в каждом окне. Теперь я хочу закрыть один из буферов, но не хочу, чтобы окно закрывалось (после закрытия оно может отображать следующий буфер в списке или пустой буфер, это не имеет значения). Как я могу это сделать?
Спасибо.
DeleteCurBufferNotCloseWindow()
хорошо работает и вполне читается . (Отказ от ответственности: мой ответ)Ответы:
В вики Vim есть сценарий . Я не думаю, что есть встроенная функция, которая делает то, что вы хотите.
Последняя версия ВИМ-bufkill на GitHub .
источник
Я немного напортачил и наконец придумал:
Вот версия копирования / вставки для сопоставления клавиш:
Я его изрядно протестировал, и он стабильно работает в различных условиях. При использовании в последнем буфере он оставит вам новый пустой буфер.
Добавьте это в свой .vimrc:
Перезапустите Vim или просто
:source ~/.vimrc
чтобы изменения вступили в силу. В следующий раз, когда вы захотите закрыть буфер, просто введите:\q
(если\
это ваш главный ключ)источник
map <leader>q :bp<bar>sp<bar>bn<bar>bd<CR>
. Перезапустите VIM, в следующий раз, когда вы захотите закрыть буфер, просто введите:\q
sp
).sp
с помощьюvsp
. моя запись .vimrc выглядит так:cnoremap bd bp<bar>vsp<bar>bn<bar>bd
Я искал это сегодня и придумал
:b#|bd#
который изменяет текущее окно на ранее открытый буфер и удаляет / скрывает буфер, из которого вы только что переключились.
Для этого требуется как минимум два известных буфера.
Если другое окно, но текущее, показывает тот же буфер, это все равно уничтожит разбиение. Вы можете изменить все окна на ранее открытый буфер с помощью
:windo b#
Я добавил более подробную информацию о предыдущей команде, обсуждая отображение для нее (и некоторые подводные камни) в ответ на аналогичный вопрос .
источник
:#b|#bd
Просто поменяв местами команду буфера и номер буфера в приведенном выше.:bn|bd#
или:bp|bd#
вместо этого переключиться на предыдущий или следующий открытый буфер, соответственно, а не на буфер, к которому вы последний раз обращались (b #).Работает как надо, пока не откроется один буфер в нескольких окнах. Достаточно хорошо, если вы не хотите использовать более крупные скрипты.
Изменить: это то, что я использую прямо сейчас:
источник
nmap <leader>d :ene<CR>:bd #<CR>
Я думаю это то, что ты ищешь
http://www.vim.org/htmldoc/windows.html#window-moving
Попробуй это:
Посмотрите свой идентификатор буфера, используя
вы увидите там список буферов, например
если вы хотите удалить b.py из буфера
если вы хотите удалить / закрыть все из буферов
источник
Для тех, кто использует NERDTree.
Я исправляю это с помощью этого плагина https://github.com/jistr/vim-nerdtree-tabs, и теперь я могу закрыть единственный бафф / файл / вкладку, не закрывая окно.
После установки указанного выше плагина поместите следующий код в мой .vimrc:
Описание переменной выше: Закройте текущую вкладку, если в ней только одно окно и это NERDTree (по умолчанию 1)
Подробнее здесь: https://github.com/jistr/vim-nerdtree-tabs#configuration
источник
Я не думаю, что есть один способ сделать это, но вы можете сделать
:enew
или:ls
перечислить свои буферы и переключиться на другой, используя:b [number]
.Если у вас есть другой буфер в окне
:bd #
, предыдущий буфер в окне будет удален, а поскольку текущий буфер все еще существует, окно не будет закрыто.источник
Раньше я использовал:
Но я встречал определенные случаи, когда он закрывал мое окно.
Недавно я заметил, что всегда использую это, когда работаю над проектом, и мне нужно быстро открыть его,
.tmux.conf
.zshrc
прежде чем вернуться к работе.Для этого мне лучше:
C-6
:bd#
чтобы удалить предыдущий буфер (я отобразил это так:nnoremap <leader>d :bd#<CR>
)Это позволяет мне контролировать буфер, к которому я возвращаюсь, и я чувствую себя более естественным.
источник
Бы
делай что хочешь? он отредактирует новый безымянный буфер в текущем окне, оставив существующий файл открытым в любых других окнах.
источник
Моим любимым решением для этого является плагин bufkill.vim ( GitHub ). Он предоставляет альтернативные версии различных
:b
команд -prefix, которые работают так же, как их аналоги, но оставляют окно открытым. Они отображают содержимое последнего видимого буфера или пустой / новый буфер, если предыдущего буфера не было.Из документации:
источник
Чтобы «закрыть» представление, используйте
:hid[e]
. Работает, если вам удалось разделить область просмотра или открыть несколько файлов. Вы не можете скрыть последний отображаемый буфер.1 Еще один совет, который мне помог: используйте,
:e ./path/to/file.work
чтобы открыть файл в окне просмотра без разделения окна.PS Через два дня после запуска vim у меня все еще возникают проблемы с поиском точных команд помощи. Надеюсь, это поможет кому-то другому продолжать работать, пока у них действительно не будет времени, чтобы понять vim.
источник
Вот очень читаемая функция vimscript, которая хорошо обрабатывает все случаи ,
:bd
(если только одно окно, просто вызовите его!),:enew
.buffer-list
, переключитесь на него, иначе перейдите к следующему, через:bn
.источник
Если вы похожи на меня, и вы пришли сюда, пытаясь сделать обратное , закрыть окно, не закрывая буфер, вы можете сделать это с помощью:
:close
источник
Лично я использую простую версию
Он переходит в предыдущий буфер и удаляет другой буфер (который на самом деле является оригиналом, из которого мы перешли). Это делает то, что вы ожидаете в 99% случаев, без каких-либо сложных скриптов.
В качестве сочетания клавиш я использую следующие
источник
используйте ": bd" как команду.
источник