Как закрыть все буферы в Vim, кроме тех, которые я сейчас редактирую?
Vim: Закройте все буферы, но этот
Ответ 1
Вы можете использовать этот script из vim.org:
http://www.vim.org/scripts/script.php?script_id=1071
Просто поместите его в свой каталог .vim/plugin
, а затем используйте команду :BufOnly
, чтобы закрыть все буферы, кроме активного. Вы также можете отобразить его в другом месте, которое вам нравится, в .vimrc
.
Источник на Github (через зеркало vim-scripts): https://github.com/vim-scripts/BufOnly.vim/blob/master/plugin/BufOnly.vim
Ответ 2
Попробуйте это
bufdo bd
bufdo запускает команду для всех буферов
Ответ 3
Мне удалось сделать это довольно легко:
:%bd|e#
Ответ 4
Если вам не нравится текущий, проще сделать что-то вроде (без script):
1,100bd
Ответ 5
Я делаю это
:w | %bd | e#
Мой любимый, если я просто хочу, чтобы мой текущий буфер открывал и закрывал все остальные.
Как это работает: сначала напишите текущие изменения буфера, затем закройте все открытые буферы, затем снова запустите буфер, в который я был включен. В Vim цепочка |
объединяет выполнение команд. Если ваш буфер обновлен, это можно сократить до :%bd | e#
Ответ 6
Основываясь на ответе juananruiz.
Сделайте небольшое изменение в буфере, который вы хотите сохранить, затем
:1,1000bd
Команда bd
(удаление буфера) не удалит буферы с несохраненными изменениями. Таким образом, вы можете сохранить текущий (измененный) файл в списке буферов.
Изменить: Обратите внимание, что это также приведет к удалению вашего NERDTreeBuffer. Вы можете вернуть его с помощью: NERDTree
Ответ 7
Используя
:on[ly][!]
и
:h only
Ответ 8
Закрытие всех открытых буферов:
silent! execute "1,".bufnr("$")."bd"
Закрытие всех открытых буферов , за исключением текущего:
function! CloseAllBuffersButCurrent()
let curr = bufnr("%")
let last = bufnr("$")
if curr > 1 | silent! execute "1,".(curr-1)."bd" | endif
if curr < last | silent! execute (curr+1).",".last."bd" | endif
endfunction
Добавьте эту функцию в .vimrc
и вызовите ее с помощью :call CloseAllBuffersButCurrent()
.
Карта удобства:
nmap <Leader>\c :call CloseAllBuffersButCurrent()<CR>
Ответ 9
Там плагин, который выполняет именно это и немного больше!
Отъезд close-buffers.vim
Ответ 10
Как насчет просто:
ctrl-w o
(спасибо https://thoughtbot.com/blog/vim-splits-move-faster-and-more-naturally)
Ответ 11
Мне нравится 1,100bd
(предложенный juananruiz), который, похоже, работает для меня.
Я добавил quit!
к моему отображению, чтобы дать мне
nnoremap <leader>bd :1,100bd<CR>
nnoremap <leader>bdq :1,100bd<CR>:q!<CR>
Это убивает все буферы и отключает Vim, чего я искал в основном.