Одним из способов выбора буфера в vim может быть просмотр списка буферов с использованием стандартных команд as :ls
или с помощью некоторого внешнего кода плагина / vimscript для просмотра списка в окне .
Допустим, я хочу перейти к буферу напрямую, как можно быстрее.
Чтобы просмотреть список буферов в последовательном режиме, я теперь использую <C-J>
<C-K>
ярлыки, установив в моем .vimrc:
" move among buffers with CTRL
map <C-J> :bnext<CR>
map <C-K> :bprev<CR>
Другим способом (прямой доступ) может быть переключение по номеру : зная номер буфера, можно переключиться напрямую, введя номер буфера и затем <C-^>
. Поэтому, если я хочу переключиться на буфер № 5, я бы нажал 5<C-^>
.
Но это, кажется, не работает для меня (я использую vim 7.4 на Ubuntu Box, от гостя Windows, с итальянской клавиатурой ). Я подозреваю, что это потому, что ^
символ находится в верхнем регистре клавиши ^ì
на итальянской клавиатуре, так что на самом деле, чтобы получить ^
мне нужно нажатьSHIFT-^
Любые идеи?
<c-6>
вместо<c-^>
?1<C-6>
переключается на буфер №1. Спасибо!Ответы:
Команда
:b
также может взять подстроку имени файла буфера, к которому вы хотите перейти, что очень удобно.Например, если у вас есть три буфера
foo
,bar
иbaz
, затем:b bar
переключится наbar
файл.:b o
переключится наfoo
файл.:b a
даст вам ошибку, потому что это может означать либоbar
илиbaz
, но вы можете исправить имя, чтобы быть более конкретным, например, с : ↑ r Enter.Это может быть очень полезно, потому что вместо
вы можете сделать что-то вроде
что намного короче и проще.
Эта команда также может принимать число, если вы хотите использовать это:
источник
:b
команда не сможет использовать буфер с частичным именем в середине слова . Например, если у вас есть два буфераpath/to/foo
иpath/to/tofu
, команда:b f<Tab>
никогда не будет соответствоватьpath/to/tofu
, так как она совпадает в начале слова вpath/to/foo
.:5b
немного короче:b 5
;-)Это то, что я использую:
Теперь нажатие
\b
будет список доступных буферов и подготовить:b
для вас.Затем вы можете просто ввести номер буфера и нажать Enter.
Или вы можете ввести часть имени файла и нажать Enter. (Однако я обычно нажимаю клавишу Tab, прежде чем нажимать Enter, чтобы проверить, что я получил правильный буфер. Если нет, я продолжаю ездить на велосипеде с Tab, пока не получу тот, который хотел.)
На самом деле, я использую слегка подправленную версию выше:
Это предотвратит появление
-- More --
запроса, когда у вас будет больше буферов, чем доступных строк для их отображения.Но если у вас
'more'
все равно отключена опция, это отображение действительно вас раздражает, потому что'more'
после этого она снова включаетсяls
!источник
[count]<C-^>
когда вы знаете номер буфера, он довольно полезен, когда вы не знаете.[count]<C-6>
мне представляется самый быстрый способ переключения на известный буфер[count]<C-^>
эти дни. Но это означает, что мне нужно запустить MiniBufExplorer или что-то подобное, чтобы знать, что такое номера буфера!:CtrlPBuffer
из плагина CtrlP (4k ★)Главной особенностью этого плагина является обеспечение нечеткого соответствия для удобного открытия другого буфера с визуальной обратной связью.
Откройте список нечетких буферов
:CtrlPBuffer
кнопками или,<C-p>
а затем нажмите ,<C-b>
чтобы изменить режим наbuffer
.Введите достаточное количество символов, чтобы указать буфер, который вы хотите открыть.
Вы также можете использовать
<C-j>
и<C-k>
для циклического перемещения по списку и выбора буфера вручную.настройка
Если вы хотите немедленно открыть список буферов
<C-p>
, добавьте следующую строку в ваш vimrc:Вы можете использовать
<C-f/b>
для переключения режима окна Ctrl.Я лично пользуюсь
let g:ctrlp_cmd = 'CtrlPMRU'
. Список последних использованных (mru) также содержит открытые буферы. Если вы используете разные режимы ctrlp и хотите придерживаться вашего последнего режима, вы можете установитьlet g:ctrlp_cmd = 'CtrlPLastMode [--dir]'
.Подобные плагины
Есть больше плагинов, которые предоставляют список буферов с интерактивной подсказкой с нечетким соответствием, например
Темная сторона против светлой стороны
(то есть установка vim с большим количеством плагинов или vim)
Прежде чем вы решите использовать эти более сложные плагины, изучите ответы @Doorknob и @joeytwiddle . В частности, проверьте однострочник, если один из них уже удовлетворяет вашим потребностям.
nnoremap <Leader>b :b <C-d>
nnoremap <Leader>b :ls<Cr>:b<Space>
Установка плагинов только для переключения буфера может быть излишним. См. Также замечания на https://www.vi-improved.org/recommendations и статью Дрю Нейла «О заточке пилы» .
источник
map <leader>a <ESC>:CtrlPBuffer<CR><CR>
чтобы перейти к ранее открытому буферу с<leader>a
(пока<leader>b
просто открывает список буферов для меня)<C-^>
(=<C-6>
)? см:h CTRL-^
. Афаик, это просто делает то, что,<leader>a
кажется, делает твое отображение . Поэтому я думаю, что вы только что привели пример, почему люди говорят, что использование плагинов может привести к пользователю vim, который не знает, что vim уже может делать сам по себе.В дополнение к действительно полезным ответам от joeytwiddle и Doorknob не забывайте о том
:b#
, что переключается на последний использованный буфер. Это также можно сделать просто<C-^>
. Когда у вас много буферов и вы постоянно переключаетесь между ними, самый последний буфер обычно является наиболее распространенным местом назначения.Лично я использую сочетание многих методов. Когда я работаю в основном с двумя буферами, а остальные открываются просто для случайного обращения, я склонен переключаться между ними с помощью
:b#
или<C-^>
. Когда мне приходится работать с большим количеством из них и переключаться чаще, я использую либо цифры (как в подсказке joeytwiddle), либо часть имен (как в подсказке ручки двери) с TAB для их завершения. Когда имена сбивают с толку, и открыто много буферов (обычно более 10), я чаще использую плагин Ctrl-P ( https://github.com/kien/ctrlp.vim ) С двумя быстрыми нажатиями клавиш я получил список их всех, и я могу использовать мощный нечеткий поиск по ним, чтобы быстро найти то, что я хочу.источник
[b
и]b
из плагинаvim-unimpaired
(> 2k ★)Если вы установили
vim-unimpaired
, вы можете использовать[b
(:bp[revious]
) и]b
(:bn[ext]
)для езды на велосипеде через открытые буферы. Нет необходимости определять более ценные отображения для тех же команд. Кроме того, переход к первому и последнему буферу может быть выполнен
[B
(:bf[irst]
) и]B
(:bl[ast]
).Есть еще много консольно-отображение , содержащееся в
vim-unimpaired
которых вы могли бы оказаться полезными. Все они следуют той же схеме, которая позволяет легко запомнить их.Темная сторона против светлой стороны
Этот плагин можно считать легковесным и «vimish». Он обозначен сообществом #vim как плагин "не навреди".
источник
3[b
отскочить на три буфера назад.В настоящее время я использую
<Leader>
+number
ключ для переключения. Ключ лидера - мой<space>
ключ. Я также использую Vim-Airlines, чтобы показать буфер Nr в верхней части окна.Хотя значение bufnr часто превышает 10, поэтому я настраиваю свое собственное отображение, если
number
это единственное совпадение, немедленно переключите буфер, в противном случае дождитесь ввода большего числа или<space>
нажмите клавишу подтверждения:Код вставлен отсюда
Кстати, я также использую
<S-h>
и<S-l>
для:bp
и:bn
, или,:tabp
и:tabn
если в настоящее время открыто более одной вкладки. Это довольно интуитивно для меня.источник
В эти дни я использую
[buffer_number]<Ctrl-^>
для переключения буферов, потому что это очень быстро.Но как узнать номер буфера? Я использую MiniBufExplorer, чтобы всегда видеть номера буферов в верхней части Vim.
Я также использую следующее сопоставление, потому что
<C-^>
это довольно сложно достать одной рукой.На свежей машине без конфига я возвращаюсь к
:b [part_of_filename]<Tab><Enter>
источник