Vim: Закройте Все Буферы, Кроме Этого



Как я могу закрыть все буферы в Vim, кроме того, который я сейчас редактирую?

549   11  
vim

11 ответов:

вы можете использовать этот скрипт из vim.org:

http://www.vim.org/scripts/script.php?script_id=1071

просто положите его на ваш .vim/plugin справочник, а затем использовать :BufOnly команда для закрытия всех буферов, кроме активного. Вы также можете отобразить его в другом месте, которое вам нравится в вашем .vimrc.

источник на Github (через зеркало vim-скриптов):https://github.com/vim-scripts/BufOnly.vim/blob/master/plugin/BufOnly.vim

попробуй такое

bufdo bd

bufdo запускает команду для всех буферов

http://vim.wikia.com/wiki/Run_a_command_in_multiple_buffers

Если вы не заботитесь о текущем, проще сделать что-то вроде (без необходимости скрипта):

1,100bd

Я был в состоянии сделать это довольно легко, как это:

:%bd|e#

Я делаю это

:w | %bd | e#

мой любимый, если я просто хочу, чтобы мой текущий буфер открылся и закрыл все остальные.

как это работает: сначала запишите изменения текущего буфера, затем закройте все открытые буферы, а затем снова откройте буфер, в котором я был в настоящее время. В Vim, the | связывает выполнение команд вместе. Если ваш буфер обновлен выше может быть сокращен до :%bd | e#

основываясь на ответе хуананруиса.

внесите небольшое изменение в буфер, который вы хотите сохранить, затем

:1,1000bd

команда bd (buffer delete) не удаляет буферы с несохраненными изменениями. Таким образом, вы можете сохранить текущий (измененный) файл в списке буферов.

редактировать: Пожалуйста, обратите внимание, что это также приведет к удалению вашего NERDTreeBuffer. Вы можете получить его обратно с :NERDTree

С помощью

:on[ly][!]

и

:h only

закрытие всех открытых буферов:

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>

здесь плагин что делает именно это и немного больше!

проверить закрыть-буферов.ВИМ

Как насчет просто:

ctrl-w o

(СПАСИБО https://robots.thoughtbot.com/vim-splits-move-faster-and-more-naturally)

мне нравится 1,100bd (предложено juananruiz), который, кажется, работает для меня.

добавил quit! к моему отображению, чтобы дать мне

nnoremap <leader>bd :1,100bd<CR>
nnoremap <leader>bdq :1,100bd<CR>:q!<CR>

это убивает все буферы и выключает Vim, что я искал в основном.

Comments

    Ничего не найдено.