После того, как я некоторое время работал над проектом, я начинаю видеть большие промежутки между последовательными номерами буферов. Это потому, что буферы между ними были уничтожены по разным причинам. К сожалению, это может затруднить переход к определенному буферу или выбор диапазона буферов после ввода :ls. Есть ли способ изменить нумерацию всех открытых буферов, начиная с одного, без повторного открытия всех файлов?
Vim не поддерживает ручное назначение номеров буферов или переупорядочение буферов после их открытия. Философия заключается в том, что каждый буфер получает идентификатор, который фиксируется на время существования этого буфера (в справке :lsон отмечает, что «каждый буфер имеет уникальный номер. Этот номер не изменится ...»).
Вы можете использовать список аргументов, хотя. Поместите все открытые буферы в список аргументов, удалите все оставшиеся буферы, затем откройте все в списке аргументов. Следующие команды выполнят это:
:argdel * (удалить существующий список аргументов)
:bufdo argadd % (для каждого буфера добавьте путь буфера в список)
:1,1000bd (удалите буферы от 1 до 1000; возможно, есть лучший способ сделать это)
:argdo e (для каждого аргумента отредактируйте этот аргумент)
Это оставит вас с дополнительным пустым буфером, который открывается vim при удалении всех предыдущих буферов, но это разумное приближение к функциональности, которую вы хотите. Вы можете просто :bdэтот дополнительный буфер.
Ваш ответ говорит нет, но похоже, что это прекрасно работает!
ахаррис88
(Я имел в виду «нет» в том смысле, что вы не можете сделать это без повторного открытия файлов). Это действительно изменить нумерацию с 1 для вас? Я думал, что это было, когда я впервые попробовал это, но теперь я вижу, что это не изменить нумерацию для меня?
Да, это для меня.
ахаррис88
Да, я просто тупой, я нашел свою ошибку.
«каждый буфер получает идентификатор, который фиксируется на время существования этого буфера» на самом деле сеанс!
14
"буферные числа сойти с ума" Расскажите мне об этом! К концу дня у меня просто более 100 буферов. Но, к счастью, как вы можете видеть в этой анимации, у вас есть tabзавершение для имен буферов.
Таким образом, даже если вы не можете изменить нумерацию буферов, вы все равно можете легко прыгать.
Я не знаю, ясно ли это из анимации, но «завершение табуляции» не похоже на завершение табуляции командной строки. Это больше похоже на «заменитель табуляции для устранения неоднозначности». Это означает, что в командной строке мне нужно было бы набрать sctabтогда, setabно здесь vim выполняет поиск 'se' и заменяет его первым (и единственным) совпадением. Если бы я набрал, testtabон совпадал бы с «generate_test_data.py», а затем tabснова совпадал бы с «scripts / setup_test_data.sh», а затем tabснова возвращался бы назад и т. Д.
Дело в том, что вы можете привыкнуть печатать просто :b <minimum amount of unambiguous characters>tabдля перехода к нужному документу. Я думаю, что это даже лучше, чем вспоминать «Мои буферы 1: foo 2: bar 3: etc», как я делал это, когда был новичком.
Не ответ на вопрос, но он исправляет проблему с сумасшедшими номерами буфера. Просто рекомендация показывать только buffer_numbers: switch_buffers_and_tabs=1иbuffer_idx_mode=0
caligari
6
Согласно документации, номера буфера никогда не меняются
Each buffer has a unique number. That number will not change,
so you can always go to a specific buffer with ":buffer N" or
"N CTRL-^", where N is the buffer number.
Единственный способ изменить нумерацию буферов - перезапустить vim.
Старый вопрос, но так как он поднимается вверху в поиске Google, я оставлю это здесь для будущих поисков. Как предложил Бруно, нечеткий искатель, который поддерживает списки буферов, - это путь. Я лично пользуюсь и рекомендую fzf-vim . Он предоставляет команду :FZFBuffers, которая выглядит примерно так:
Номера буферов отображаются слева, если они вам нужны, но с нечетким искателем вам, возможно, больше не понадобится их использовать. Просто запомните часть имени файла, и обычно это 2-5 нажатий клавиш. Лично я сопоставил эту команду с нажатием клавиши, и переключение между буферами для меня практически мгновенно!
"буферные числа сойти с ума" Расскажите мне об этом! К концу дня у меня просто более 100 буферов. Но, к счастью, как вы можете видеть в этой анимации, у вас есть tabзавершение для имен буферов.
Таким образом, даже если вы не можете изменить нумерацию буферов, вы все равно можете легко прыгать.
Я не знаю, ясно ли это из анимации, но «завершение табуляции» не похоже на завершение табуляции командной строки. Это больше похоже на «заменитель табуляции для устранения неоднозначности». Это означает, что в командной строке мне нужно было бы набрать
sc
tabтогда,se
tabно здесь vim выполняет поиск 'se' и заменяет его первым (и единственным) совпадением. Если бы я набрал,test
tabон совпадал бы с «generate_test_data.py», а затем tabснова совпадал бы с «scripts / setup_test_data.sh», а затем tabснова возвращался бы назад и т. Д.Дело в том, что вы можете привыкнуть печатать просто
:b <minimum amount of unambiguous characters>
tabдля перехода к нужному документу. Я думаю, что это даже лучше, чем вспоминать «Мои буферы 1: foo 2: bar 3: etc», как я делал это, когда был новичком.источник
Вы можете использовать Vim-Airlines. Этот плагин имеет поведение, которое может решить вашу проблему:
См. Строку 470-479 в авиакомпании.txt
Это не изменит номера буферов, но вы можете выбрать буфер слева направо по номеру строки в таблице. Это мои настройки для авиакомпании в
.vimrc
:Моя строка вкладки:
источник
switch_buffers_and_tabs=1
иbuffer_idx_mode=0
Согласно документации, номера буфера никогда не меняются
Единственный способ изменить нумерацию буферов - перезапустить vim.
источник
Старый вопрос, но так как он поднимается вверху в поиске Google, я оставлю это здесь для будущих поисков. Как предложил Бруно, нечеткий искатель, который поддерживает списки буферов, - это путь. Я лично пользуюсь и рекомендую fzf-vim . Он предоставляет команду
:FZFBuffers
, которая выглядит примерно так:Номера буферов отображаются слева, если они вам нужны, но с нечетким искателем вам, возможно, больше не понадобится их использовать. Просто запомните часть имени файла, и обычно это 2-5 нажатий клавиш. Лично я сопоставил эту команду с нажатием клавиши, и переключение между буферами для меня практически мгновенно!
источник