Как вы предпочитаете переключаться между буферами в Vim?



Я пробовал MiniBufExplorer, но я обычно в конечном итоге с несколькими окнами, показывая его или вообще закрыть его. Что я хотел бы что-то вроде LustyJuggler С инкрементным поиском, как я переключаюсь между буферами в Emacs. Наверняка есть такой сценарий?

62   16  

16 ответов:

Я использую Винценты Колаюту это Command-T Vim plugin уже пару месяцев. Wincent написал его части, которые должны быть быстрыми в C, и я должен сказать, что это так! И, я думаю, что его логика сопоставления шаблонов файлов даже лучше, чем команда Textmate-T. Проверьте видеоуроки.

плагин Command-T для VIM предоставляет чрезвычайно быстрый, интуитивно понятный механизм для открытия файлов с минимальным количество нажатий клавиш. Это упомянутый "Command-T", потому что он вдохновлен окно "перейти к файлу" привязано к Команда-T в TextMate.

файлы выбираются путем ввода персонажи, которые появляются на их пути, и упорядочиваются по алгоритму, который известно, что символы, которые появляются в некоторые места (например, сразу после разделителя пути) следует дать больше веса.

более легкое переключение буфера содержит много полезных советов. Я адаптировал вслед за моим .vimrc, который выполняет автоматическое завершение имени буфера, сопоставляет наиболее полезные команды переключения буфера с моими и левыми клавишами домашней строки и показывает текущий номер буфера в строке состояния:

"" Tab triggers buffer-name auto-completion
set wildchar=<Tab> wildmenu wildmode=full

let mapleader = ","

map <Leader>t :CommandT<Return>
map <Leader>a :bprev<Return>
map <Leader>s :bnext<Return>
map <Leader>d :bd<Return>
map <Leader>f :b 

"" Show the buffer number in the status line.
set laststatus=2 statusline=%02n:%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P

Я также использую MiniBufExplorer, который обеспечивает компактное перечисление каждого перечисленного буфера в своей собственной горизонтальной разделенной верхней части.

я использовал комбинацию вкладок и несколько экземпляров gvim, сохраняя группы связанных файлов в качестве вкладок в каждом экземпляре. Пока у меня не было слишком много вкладок в одном экземпляре, панель вкладок показывает вам имя каждого файла, который вы редактируете с первого взгляда.

затем я прочитал сообщение Джеймиса бака о том, как он переключился из TextMate обратно в vim, и узнал некоторые большие трюки:

  • Ctrl-w s и Ctrl-w v, чтобы разделить текущий окно
  • Ctrl-6 для переключения между двумя буферами в одном окне.
  • огромная fuzzyfinder.ВИМ что дает вам автозаполнение поиска файлов в текущем каталоге или буферов, которые вы в настоящее время открыты
  • собственный Джемис fuzzy_file_finder и fuzzyfinder_textmate, который немного изменяет работу fuzzyfinder, чтобы вести себя более похоже на аналогичную функцию в TextMate (насколько я могу судить, разница в том, что он соответствует в любом месте имени файла, а не только с самого начала). Смотрите видео чтобы увидеть его в действии.

теперь у меня есть только один экземпляр gvim, развернутый и разделенный на несколько окон, чтобы я мог видеть сразу несколько файлов. Я привязал Ctrl-F к fuzzyfinder_textmate, так что теперь, если я наберу (скажем) Ctrl-F mod/usob Он открывает приложение / модели / user_observer.рубидий. Я почти никогда не беспокоюсь о вкладках больше.

обновление 2010/08/07

в то время как fuzzyfinder_textmate остается удивительным, как указывает Кейси в комментариях, он больше не поддерживается. Кроме того, он (и/или fuzzyfinder.vim) становится немного медленным и нестабильным при работе с большими проектами (много каталогов или файлов), поэтому я искал альтернативу.

к счастью, кажется, есть очень хорошая альтернатива в виде Wincent Colaiuta ' s Command-T plugin. Это очень похоже (если не немного лучше) поведение fuzzyfinder_textmate, но заметно быстрее; он также имеет хорошие функции, такие как возможность открыть найденный файл в разделенном или вертикальном разделении. Спасибо (и голоса!) Дэвиду Риверсу за то, что он указал на него.

Я использую основ - ':ls'+':bn'/':bp'+':b <part-of-name>'

мне нравится "ctrl-w s" и "ctlr-w v", чтобы разделить окно. Затем я сопоставляю клавиши перемещения (h, j, k, l) с помощью ctrl, удерживаемого для перемещения между разделенными окнами:

" Map ctrl-movement keys to window switching
map <C-k> <C-w><Up>
map <C-j> <C-w><Down>
map <C-l> <C-w><Right>
map <C-h> <C-w><Left>

необходимость перемещать руку на клавиши со стрелками раздражает.

затем я настроил ctlr-tab для переключения между буферами в текущем окне (как и во многих других средах):

" Switch to alternate file
map <C-Tab> :bnext<cr>
map <C-S-Tab> :bprevious<cr>

Они работали довольно хорошо для меня в течение последних нескольких лет, хотя vim всегда имеет больше секреты, которые вы можете знать.

nmap <Leader>bb :ls<CR>:buffer<Space>

и никто не упомянул прекрасный плагин ctrlp.ВИМ. С помощью этого плагина вы можете искать буфер по имени.

Я использую

CTRL -J для следующего буфера

CTRL -K для предыдущего буфера

CTRL -L на следующей вкладке

CTRL -H на вкладке

здесь .vimrc конфигурация:

map <C-J> :bnext<CR>
map <C-K> :bprev<CR>
map <C-L> :tabn<CR>
map <C-H> :tabp<CR>

см.http://syskall.com/my-biggest-vim-productivity-boost/

в последнее время я стал более минималистичным.

для циклических буферов я использую ] b и [b от unimpaired:https://github.com/tpope/vim-unimpaired

чтобы перейти прямо к открытому буферу, просто используйте завершение вкладки Vim с : b. Нескольких букв достаточно, чтобы попасть в любой открытый буфер с вкладкой или двумя.

аналогично для открытия буферов я использую : e с относительными путями и вкладка полный.

Я также использую : ls иногда, чтобы увидеть, какие буферы у меня открыты (и проверить их измененный статус).

чтобы избавиться от буфера я использую :bw для очистки буфера. Я обычно делаю временное разделение и меняю буферы, чтобы сохранить мой макет, хотя с :bw также закрывает активное окно.

все вещи minibuf, которые я пробовал, просто раздражали меня, и я не хочу, чтобы какая-то умная вещь открывалась случайным образом файлы для меня. Если мне действительно нужно что-то просмотреть, я использую NERDtree (: e .).

IDK, в последнее время я также бросил Yankring (потому что он завинчивается xp) и начал использовать регистры, и я недавно решил f/t движения-самая лучшая в мире...

imap <A-1> <Esc>:tabn 1<CR>i
imap <A-2> <Esc>:tabn 2<CR>i
imap <A-3> <Esc>:tabn 3<CR>i
imap <A-4> <Esc>:tabn 4<CR>i
imap <A-5> <Esc>:tabn 5<CR>i
imap <A-6> <Esc>:tabn 6<CR>i
imap <A-7> <Esc>:tabn 7<CR>i
imap <A-8> <Esc>:tabn 8<CR>i
imap <A-9> <Esc>:tabn 9<CR>i

map <A-1> :tabn 1<CR>
map <A-2> :tabn 2<CR>
map <A-3> :tabn 3<CR>
map <A-4> :tabn 4<CR>
map <A-5> :tabn 5<CR>
map <A-6> :tabn 6<CR>
map <A-7> :tabn 7<CR>
map <A-8> :tabn 8<CR>
map <A-9> :tabn 9<CR>

отличный Buffer Explorer, be стал такой сильной мышечной памятью, что я обнаружил, что хочу использовать ее в других приложениях. Я считаю, что это очень быстро при активном редактировании более двух файлов.

Я потратил довольно много времени на строительство моего .vimrc для работы с этим проектом HTML::Mason я работаю уже четыре года, поэтому у меня есть странное сочетание вкладок и разделенных окон. Для вашего удовольствия от просмотра:

map ;o :Sex <CR>
map <C-J> <C-W>j
map <C-K> <C-W>k
map <C-l> <C-W>l
map <C-h> <C-W>h
map ;] :tabnext<CR>
map ;[ :tabprev<CR>
map <C-t> :tabe +"browse ."<CR>
map <C-O> :NERDTreeToggle ~/curr/trunk/<CR>

Я использую tselectbuffer. Это очень быстро и в отличие от bufexplorer не занимает места в вашем окне. Он также имеет инкрементный поиск.Я попробовал minibufexplorer и я нашел навигацию в буфере немного трудно.

для перечисления и переключения между буферами я использую:

nnoremap <Leader>l :ls<CR>:b<space>

для переключения между буферами:

map <Leader>n :bn<CR>
map <Leader>p :bp<CR>

я нанес <S-J> и <S-K> to :bp и :bn, хотя я признаю, что не использую его, поскольку количество файлов больше 10. Затем я сопоставил <C-J> и <C-K> на предыдущей и следующей вкладках Gnome Terminal, и я обычно запускаю 4 экземпляра vim для каждого из 4 различных проектов, над которыми я работаю. Я все еще очень хочу, чтобы следующий и предыдущий буфер перешли к истории буферов, над которыми я работал, а не к списку буферов order int he.

Я использую tselectbuffer. Это очень быстро и в отличие от bufexplorer не занимает места в вашем окне. Он также имеет инкрементный поиск.Я попробовал minibufexplorer и я нашел навигацию в буфере немного трудно.

Я использую простой: vsplit с ^W+w / ^W+r и: tabnew с комбинациями клавиш Ctrl+Alt+PgUp / PgDown.

когда в сеансе Vim открыто несколько буферов, может стать трудно отслеживать буферы и их соответствующие номера буферов. Если это так, то переход к другому файлу может быть облегчен с помощью простой карты:

:nnoremap(F5) :buffers(CR):buffer (Space)

vim.wikia.com

    Ничего не найдено.

Добавить ответ:
Отменить.