Как закрыть один буфер (из многих) в Vim?
Я открываю несколько файлов в Vim, например, запуская
vim a/*.php
который открывает 23 файла.
Затем я сделаю свое редактирование и запустим следующие дважды
:q
который закрывает все мои буферы.
Как вы можете закрыть только один буфер в Vim?
Ответы
Ответ 1
Предупреждение: "w не стоит писать, но для стирания!"
Больше из руководств:
: шд
Выгрузить буфер [N] (по умолчанию: текущий буфер) и удалить его из список буферов. Если буфер был изменен, это не сработает, если указано [!], и в этом случае изменения потерял. Файл остается незатронутым.
Если вы знаете, что делаете, вы также можете использовать: bw
: м.т.
Как и:: bdelete |, но на самом деле удалить буфер.
Ответ 2
Если это не стало очевидным из предыдущих ответов:
: bd закроет текущий буфер. Если вы не хотите захватывать список буферов.
Ответ 3
Проверьте свой идентификатор буфера, используя
: буферы
вы увидите список буферов там вроде
1 a.php
2 b.php
3 c.php
если вы хотите удалить b.php из буфера
:2bw
если вы хотите удалить/закрыть все из буферов
:1,3bw
Ответ 4
Вместо того, чтобы просматривать вывод команды: ls и удалять (выгрузить, стереть..) буфер, указав его номер, я считаю, что использование имен файлов часто более эффективно.
Например, после того, как я открыл несколько файлов .txt, чтобы обновить мои воспоминания о какой-то тонкой точке. скопируйте и вставьте несколько строк текста, которые будут использоваться в качестве шаблона, и т.д. Я бы набрал следующее:
:bd txt <Tab>
Обратите внимание, что строка соответствия не должна находиться в начале имени файла.
Приведенный выше список имен файлов, которые соответствуют "txt" в нижней части экрана, и сохраняет команду: bd, которую я первоначально напечатал нетронутой, готов к завершению.
Вот пример:
doc1.txt doc2.txt
:bd txt
Я мог бы перекрыть бит 'txt' и ввести имя файла, которое я хочу удалить, но там, где это становится очень удобно, мне не нужно: если я снова нажму клавишу Tab, Vim автоматически завершает мою команду с первым совпадением:
:bd doc1.txt
Если я хочу избавиться от этого конкретного буфера, мне просто нужно нажать Enter.
И если буфер, который я хочу удалить, является вторым (третьим и т.д.) совпадением, мне нужно только нажать клавишу Tab, чтобы сделать мой: bd командный цикл через список совпадений.
Естественно, этот метод также можно использовать для переключения на заданный буфер с помощью таких команд, как: b..: sb.. и т.д.
Этот подход особенно полезен, когда установлен параметр "скрытый" Vim, поскольку список буферов может быстро стать довольно большим, охватывая несколько экранов и затрудняя определение конкретного буфера, который я ищу.
Чтобы максимально использовать эту функцию, лучше всего прочитать следующий файл справки Vim и соответствующим образом настроить поведение командной строки Tab, чтобы он наилучшим образом соответствовал вашему рабочему процессу:
:help wildmode
Поведение, описанное выше, приводит к следующему параметру, который я выбрал для согласования ради эмулирования завершения bash:
:set wildmode=list:longest,full
В отличие от использования номеров буферов, достоинство этого подхода состоит в том, что я обычно помню, по крайней мере, часть заданного имени файла, позволяя мне непосредственно перенаправлять буфер, а не сначала просматривать его число с помощью команды: ls.
Ответ 5
Использование:
-
:ls
- для отображения буферов
-
:bd#n
- закрыть буфер, где #n - номер буфера (используйте ls
для его получения)
Примеры:
-
для удаления буфера 2:
:bd2
Ответ 6
Вы также можете отображать следующую и предыдущую функциональные клавиши, делая циклическое перемещение по буферам
map <F2> :bprevious<CR>
map <F3> :bnext<CR>
из моего vimrc
Ответ 7
Как насчет
vim -O a a
Таким образом, вы можете редактировать один файл слева и перемещаться по всему директорию справа от вас.
Просто мысль, а не решение...
Ответ 8
[EDIT: это было глупое предложение с того времени, когда я не очень хорошо знал Вима. Не используйте вкладки вместо буферов; вкладки Vim "макеты окон" ]
Может быть, переключиться на использование вкладок?
vim -p a/*.php
открывает те же файлы на вкладках
gt
и gt
переключайте вкладки назад и вперед
:q
закрывает только текущую вкладку
:qa
закрывает все и выходит
:tabo
закрывает все, кроме текущей вкладки
Ответ 9
Те, кто использует буферный или древовидный плагин, такие как Buffergator или NERDTree, должны будут переключать эти расщепления до уничтожения текущего буфера, иначе вы отправите свои расколы в wonkyville
Я использую:
"" Buffer Navigation
" Toggle left sidebar: NERDTree and BufferGator
fu! UiToggle()
let b = bufnr("%")
execute "NERDTreeToggle | BuffergatorToggle"
execute ( bufwinnr(b) . "wincmd w" )
execute ":set number!"
endf
map <silent> <Leader>w <esc>:call UiToggle()<cr>
Где "NERDTreeToggle
" в этом списке совпадает с типом :NERDTreeToggle
. Вы можете изменить эту функцию для интеграции с вашей собственной конфигурацией.