Как переназначить номер буфера в VIM?
Я думал, что vim был очень мощным, пока я не захотел избавиться от буферов в списке и повторно использовать их для чего-то другого. Например, если у меня есть
1 "f1.h"
2 "f2.h"
3 "f3.h"
4 "f1.cpp"
5 "f2.cpp"
6 "f3.cpp"
и я хочу заменить f1.h - f3.h чем-то другим, но в той же последовательности буфера:
1 "n1.h"
2 "n2.h"
3 "n3.h"
4 "f1.cpp"
5 "f2.cpp"
6 "f3.cpp"
Я не могу понять, как это сделать. Я могу сделать "1,3bd" и удалить буферы 1-3 или даже "1,3bw" и уничтожить их, но не вижу способа повторно использовать эти числа без перезапуска vim. Очевидно, что vim buffer faq в http://vim.wikia.com/wiki/Vim_buffer_FAQ подтверждает это.
Но я не хочу верить, что у vim действительно есть это ограничение, нет ли способа сделать это изнутри vim?
Ответы
Ответ 1
Вы не можете переназначить номера буфера в том же сеансе. Лучше всего посмотреть на альтернативы vimscript.
Один проводник буфера, который обрабатывает самые последние использованные файлы (и может удалять буферы), Buffer Explorer/Browser.
На vim.org имеется множество других сценариев переключения буфера, которые удовлетворяют потребности различных авторов. Или, альтернативно, вы можете перевернуть свои собственные с некоторыми сопоставлениями.
Я придумал это для Django.
http://code.djangoproject.com/wiki/UsingVimWithDjango#Mappings
Он дает мне быстрый двух/трех нажатий клавиш на 20 стандартных именованных файлов относительно каталога приложения. Вы могли бы придумать что-то для своего проекта на этих строках.
Мои сопоставления \1
, \2
, \3
и т.д., поэтому парадигма числа все еще существует.
Я также сопоставил \vr
для ~/.vimrc и \br
для ~/.bashrc.
Важная вещь, которая может и должна быть очень эффективным процессом.
Ответ 2
Здесь ленивый способ сделать это (не требует изучения чего-то нового):
- Сохраните сеанс в файле в текущем рабочем каталоге или
где бы вы ни хотели работать:
:mksession Session.vim
-
Редактировать Session.vim. Найдите список открытых буферов (строки, начинающиеся с badd
).
-
Переупорядочивайте строки по своему вкусу.
-
Закрыть vim.
-
Запустите vim, используя флаг -S
и файл сеанса:
$> gvim -S Session.vim
Буферы будут перенумерованы последовательно в том порядке, в котором вы их разместили.
Ответ 3
Я бы рекомендовал вместо этого использовать вкладки (из vim 7). Вы можете свободно перемещать их с помощью tabm
и открывать новые с помощью tabe
или tabnew
. Плюс, это более очевидно, что происходит. Вы также можете запустить vim с открытыми вкладками с помощью -p
(IIRC).