Я открываю несколько файлов в Vim, например, запуская
vim a/*.php
который открывает 23 файла.
Затем я сделаю свое редактирование и запустим следующие дважды
:q
который закрывает все мои буферы.
Как вы можете закрыть только один буфер в Vim?
Я открываю несколько файлов в Vim, например, запуская
vim a/*.php
который открывает 23 файла.
Затем я сделаю свое редактирование и запустим следующие дважды
:q
который закрывает все мои буферы.
Как вы можете закрыть только один буфер в Vim?
Предупреждение: "w не стоит писать, но для стирания!"
Больше из руководств:
: шд
Выгрузить буфер [N] (по умолчанию: текущий буфер) и удалить его из список буферов. Если буфер был изменен, это не сработает, если указано [!], и в этом случае изменения потерял. Файл остается незатронутым.
Если вы знаете, что делаете, вы также можете использовать: bw
: м.т.
Как и:: bdelete |, но на самом деле удалить буфер.
Если это не стало очевидным из предыдущих ответов:
: bd закроет текущий буфер. Если вы не хотите захватывать список буферов.
Проверьте свой идентификатор буфера, используя : буферы
вы увидите список буферов там вроде
1 a.php
2 b.php
3 c.php
если вы хотите удалить b.php из буфера
:2bw
если вы хотите удалить/закрыть все из буферов
:1,3bw
Вместо того, чтобы просматривать вывод команды: 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.
Использование:
:ls - для отображения буферов:bd#n - закрыть буфер, где #n - номер буфера (используйте ls для его получения)Примеры:
для удаления буфера 2:
:bd2
Вы также можете отображать следующую и предыдущую функциональные клавиши, делая циклическое перемещение по буферам
map <F2> :bprevious<CR>
map <F3> :bnext<CR>
из моего vimrc
Как насчет
vim -O a a
Таким образом, вы можете редактировать один файл слева и перемещаться по всему директорию справа от вас. Просто мысль, а не решение...
[EDIT: это было глупое предложение с того времени, когда я не очень хорошо знал Вима. Не используйте вкладки вместо буферов; вкладки Vim "макеты окон" ]
Может быть, переключиться на использование вкладок?
vim -p a/*.php открывает те же файлы на вкладках
gt и gt переключайте вкладки назад и вперед
:q закрывает только текущую вкладку
:qa закрывает все и выходит
:tabo закрывает все, кроме текущей вкладки
Те, кто использует буферный или древовидный плагин, такие как 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. Вы можете изменить эту функцию для интеграции с вашей собственной конфигурацией.