Jak każdy pewnie wie w VIMie dostępne są taby (czy też karty), jednak działają trochę inaczej niż można by się spodziewać. Nie są powiązane z otwartymi plikami (czy raczej buforami), a z określonym layoutem otwartych okien. Szczerze powiedziawszy jakoś nigdy się do nich specjalnie nie przekonałem. Na szczęście jest dostępna wtyczka, która działa dokładnie tak jak można by oczekiwać.
MiniBufExplorer - minibufexpl.vim
Mini Buffer Explorer pokazuje listę otwartych buforów w formie listy tabów (kart) znanej z innych programów i pozwala na łatwe poruszanie się pomiędzy nimi.
Instalacja
Oryginalny plugin jest już od dawna nie rozwijany. Na szczęście dostępna jest nowa, aktywnie rozwijana wersja - MiniBufExplorer 6.4 wtyczki, która zawiera poprawki i kilka nowych funkcji. Ściągnięty plik należy umieścić w folderze ~/.vim/plugin/
Konfiguracja i użytkowanie
By otworzyć okno MiniBufExplorera używamy mbe (domyślnie \mbe ), lub przełączamy się do jego okna. Następnie za pomocą (Shift)Tab , lub h i l przełączamy się pomiędzy buforami. o , e i Enter otwierają bufor w ostatnio aktywnym oknie, s otwiera bufor dzieląc okno w poziomie, v dzieląc w pionie. d służy do zamknięcia wybranego buforu.
Domyślnie lista buforów wyświetlana jest w formie poziomej linii, jeśli ktoś chciałby wyświetlać je w pionie wystarczy ustawić szerokość okna.
let g:miniBufExplVSplit = 20
Możemy również ustawić kiedy MiniBufExplorer ma się pojawiać (domyślnie gdy otwartych jest więcej niż 1 plik). By okno z listą buforów było otwarte przez cały czas ustawiamy następującą zmienną:
let g:miniBufExplorerMoreThanOne=1
Kolejnymi ciekawymi ustawieniami niezmiernie ułatwiającymi pracę z wieloma oknami na raz są:
let g:miniBufExplMapWindowNavVim = 1
let g:miniBufExplMapWindowNavArrows = 1
let g:miniBufExplMapCTabSwitchBufs = 1
let g:miniBufExplMapCTabSwitchWindows = 1
let g:miniBufExplUseSingleClick = 1
Pozwalające odpowiednio na: przełączanie się pomiędzy oknami za pomocą Ctrl + hjkl , Ctrl + strzałki , przełączanie buforów za pomocą Ctrl-Tab , przełączanie okien za pomocą Ctrl-Tab, otwieranie buforu za pomocą pojedynczego kliknięcia.
Jeśli używamy wtyczek typu NERDTree, czy TagList dobrze jest ustawić poniższą zmienną by nie otwierać buforów w oknie dodatkowego eksploratora.
let g:miniBufExplModSelTarget = 1
Na koniec jeszcze małe ostrzeżenie o denerwującym błędzie. W używanej przeze mnie wersji 6.4.0 próba wyjścia z VIMa, gdy otwarte jest tylko jedno okno plus widoczna jest lista buforów (czy to z użyciem :q , czy ZQ ) powoduje jedynie przeładowanie zawartości okna. Należy wtedy użyć :qa lub ręcznie zamknąć MiniBufExploerara za pomocą mbc.
Werdykt
Jest to jeden z pluginów, bez których nie wyobrażam sobie normalnej pracy. Wystarczy jedno spojrzenie i już widać jakie pliki są aktualnie otwarte i które z nich zawierają niezapisane zmiany. Zwłaszcza jeśli ma się ustawione set hidden.
poniedziałek, 28 marca 2011, kosciak1