Предполагая, что у меня есть несколько файлов, открытых как буферы в Vim. Файлы есть *.cpp
, *.h
а некоторые есть *.xml
. Я хочу закрыть все файлы XML с помощью:bd *.xml
. Однако Vim не позволяет этого (E93: более одного совпадения ...).
Есть какой-либо способ сделать это?
PS Я знаю, что это :bd file1 file2 file3
работает. Так что я могу как - то оценивать *.xml
с file1.xml file2.xml file3.xml
?
<tab>
позволяет вам только циклически перебирать совпадения, помещая одну запись в командную строку,<C-a>
добавляя все совпадения сразу.vim-rsi
установили (я думаю, он должен быть у всех на * nix), вместо этого<C-a>
вы должны использовать , чтобы получить работу оригинальным способом в командной строке<C-x>
<C-a>
.Удалит диапазон буфера от 3 до 5.
источник
Вы также можете использовать альтернативно:
источник
Вы можете использовать это.
Его должно быть довольно легко добавить в команду.
источник
glob()
предоставит вам только существующие файлы (на вашем жестком диске), а не открытые буферы.fnameescape()
буферизовать имена.c:/Program files/foo.bar
, и дажеfoo.bar.foo
он отлично работал.fnameescape()
могло потребоваться, если бы я использовал имена буферов. Но я только проверяю, соответствуют ли имена буферов заданному выражению:\.{ext}$
- Я даю номера буфера: bd`. У меня нет причин избегать чего-либо для сопоставления регулярных выражений.Попробуйте сценарий ниже. Пример для «txt», при необходимости измените его, например, на «xml». Модифицированные буферы не удаляются. Нажмите \ bd, чтобы удалить буферы.
[Edit] То же самое без: bufdo (по просьбе Люка Эрмитта, см. Комментарий ниже)
источник
:bufdo
как это портит текущее окно.Мне тоже все время требовалась эта функция. Это решение, которое у меня есть в моем vimrc.
Теперь я могу просто сделать
:BW regex
(например,:BW \.cpp$
и стереть все совпадающие буферы, которые соответствуют этому шаблону в их имени пути.Если вы хотите удалить , а не вытирать, вы , конечно , можете заменить
exec 'bw ' . join(l:matchList, ' ')
сexec 'bd ' . join(l:matchList, ' ')
источник
:badd
,:bdelete
,:bufdo
,:bn
...)Очень просто: используйте
:bd[elete]
команду. Например,:bd[elete] buf#1 buf#5 buf#3
удалит буферы 1, 3 и 5.источник
Вы можете просто использовать:
тогда просто используйте
<c-a>
чтобы облегчить завершение всех открытых файлов указанного типа.например, у вас 1.xml, 2.xml, 3.xml и 4.xml, вы можете:
затем нажмите
<c-a>
vim выполнит автозаполнение для вас следующим образом:
вы можете просто нажать Enter, чтобы завершить команду.
если вы внесли изменения в один из файлов, упомянутых выше, не забудьте сделать:
источник