Быстрое переключение буферов в обычный режим Vim
Недавно я узнал, что я "неправильно использует вкладки" в Vim. Я пытаюсь просто использовать буферы в Vim, поскольку с помощью MiniBufExplorer, но я нахожу это болезненным из-за того, сколько нажатий клавиш требуется изменить буферов из обычного режима. С вкладками я могу просто сделать g t или g t для перехода назад и вперед между вкладками в нормальном режиме, и я также могу сделать NUMBER g t, чтобы перейти к конкретному вкладка.
С буферами я либо должен войти в командный режим с помощью :bn
, :bp
, либо с помощью MiniBufExplorer, используйте Ctrl + k или Ctrl + Up для перехода к окну буфера, прокрутите влево или вправо с помощью h и l, а затем нажмите Enter, чтобы выбрать нужный буфер. Или я могу сделать что-то, связанное с лидера, но это всегда требует удаления нескольких пальцев из домашней строки. Это настоящая боль.
Как я могу получить что-то эквивалентное переключение вкладок в нормальном режиме для переключения буферов в нормальном режиме, поэтому я могу сделать что-то вроде g n/g p для :bn
/:bp
и NUMBER g n для :buf NUMBER
?
Ответы
Ответ 1
Добавьте это в свой .vimrc
map gn :bn<cr>
map gp :bp<cr>
map gd :bd<cr>
Обратите внимание, что вы переназначаете gp
и gd
, но, возможно, вас это не волнует (:help gp
, :help gd
).
Для получения дополнительной информации о том, как сопоставить штрихи клавиш, см. :help map-overview
и :help map.txt
.
Кстати, я лично использую <leader>
вместо g
в отображении. Мой <leader>
установлен на ;
. Это помещает мой ключ <leader>
в домашнюю строку, что заставляет меня отображать все виды вещей, используя <leader>
. :help mapleader
, если вы хотите изменить свой <leader>
ключ.
Ответ 2
Обычно я переключаюсь между буферами - это использовать команду :buffer
со встроенным автозаполнением, например. :b prof<Tab>
для перехода на folder/path/LoginProfileFactory.php
.
Вы можете просто начать вводить любую часть имени файла нужного вам буфера, что приятно.
Реже, я действительно помню числа буферов, которые я хочу, и использую что-то вроде :b 3
или :3b
.
Я вижу, вы упоминаете, что вам не нравится :buf 3
, хотя Rumple Stiltskin имеет альтернативу стилю :3b
, который вы можете предпочесть.
Ответ 3
` Ctrl- ^ ' переключается на нумерованный буфер.
Ответ 4
У меня есть следующие строки в .vimrc:
nnoremap <silent> <tab> :if &modifiable && !&readonly && &modified <CR> :write<CR> :endif<CR>:bnext<CR>
nnoremap <silent> <s-tab> :if &modifiable && !&readonly && &modified <CR> :write<CR> :endif<CR>:bprevious<CR>
Теперь вкладка позволяет перейти к следующему буферу и Shift-Tab к предыдущему.
Ответ 5
Это основано на ответе Ника Ноулсона, но я хотел бы расширить свой комментарий там...
Введите :b <Tab>
(обратите внимание на пробел), затем прокрутите открытые буферы с помощью Tab или ←/→.
... что приближает нас к Ctrl + Tab во всех других редакторах и браузерах, которые я использую.
На самом деле это даже лучше, в некоторых случаях вы можете двигаться вперед и назад с помощью стрелок ←/→. Он избегает большого пальца + пальца, чтобы набрать Ctrl + Shift + Tab, чтобы вернуться назад через вкладки в редакторах и браузерах.
NB Shift + Tab делает то же самое, что и Tab
Тогда это на самом деле что-то вроде Win + Tab в Windows 10, где, как только вы впервые открываете окно, вы можете перемещаться с помощью клавиш со стрелками.
Редактировать: у меня есть еще два трюка, которые я выбрал для использования буферов:
-
Из этого ответа у меня есть это в моем .vimrc
:
nnoremap <leader>bb :buffers<cr>:b<space>
он открывает команду :ls
/:buffers
и предварительно вводит :b
так что вам просто нужно ввести номер буфера, так как вы увидите список со всеми буферами и их номерами.
-
у меня тоже есть
nnoremap <leader><tab> :b#<cr>
который переключается между текущим и последним используемыми буферами, это немного похоже на выполнение cd -
при переключении между каталогами и обратно
Ответ 6
Я использую плагин unimpaired.vim
он определяет сопоставления [b
и ]b
, которые переходят в предыдущий и следующий буфер в списке.
Для прыжка для конкретного буфера наилучшим вариантом, который я знаю, является тот, который вы упомянули: :b<number>
Если вы перейдете в другой буфер, вы можете быстро вернуться, набрав <c-^>
Ответ 7
Я использую LustyExplorer: я нажал <leader>b
, чтобы открыть список буферов, а затем пару букв из имени буфера, который я хочу для открытия тогда enter
. Легко.
Но вы не используете неправильно вкладки, вы используете вкладки так, как хотите. Если бы это сработало для вас, почему нужно пройти через боль, чтобы разобраться в своем пути, чтобы научиться "правильному пути"?
Ответ 8
Расширяя ответ Rumple Stiltskin, если вы знаете, что файл, к которому вы хотите получить, находится, например, в буфере 4
, вы можете быстро туда добраться с помощью
4Ctrl-^
На моей британской клавиатуре я действительно могу сделать 4Ctrl-6
, как объяснено в
:help CTRL-^
Кстати, вы можете увидеть номера буфера с
:buffers
Ответ 9
Я использую F9 и F10 для перемещения между предыдущим/следующим буфером с помощью этого сопоставления:
map <F9> :bprevious<CR>
map <F10> :bnext<CR>
Для меня это самый быстрый способ переключения буферов.
Ответ 10
fzf.vim - еще один быстрый способ изменения буферов с использованием нечеткого соответствия. Этот плагин поставляется с командой по умолчанию:
:Buffers
который открывает список всех открытых буферов, похожих на: ls, но буфер можно (нечетко) искать и выбирать.
Открытие буфера в текущем окне осуществляется через enter, но его можно также открыть в новом расколе (h или v) или вкладке, используя ^ X ^ V или ^ T соответственно.
Примечательно также:
:Lines
Позволяет искать содержимое всех открытых буферов. Это может быть удобно, если вы забудете имя буфера, но знаете, что он должен содержать.
Ответ 11
Я думаю, bufexplorer - хороший плагин для использования. <leader>
b e выводит интерактивный буферный проводник, в котором перечислены все открытые буферы. Вы можете быстро перемещаться по списку, а Enter помещает вас в выбранный буфер. В отличие от LustyExplorer
Он не имеет никакого отношения к ruby.