Szaleństwem jest robić wciąż to samo i oczekiwać różnych rezultatów.

Albert Einstein

Uruchamiając vim'a naszym oczom ukazuje się edytor z widokiem wypełnionym przez jedno okno i nieaktywny bufor. Brzmi mało zrozumiale, jednak pojęcia te są kluczowe do skutecznej pracy z vim'em. Bufor to nic innego jak załadowany do pamięci plik. Cała praca jaką wykonujemy zostaje zapisana w buforze, a plik pozostaje nienaruszany, aż do czasu wydania komendy zapisu. Innymi słowy cała praca jaką wykonujemy w trakcie edycji odbywa się w pamięci naszego komputera zawierającej odzwierciedlenie zawartości dysku. Okno to wyświetlona na ekranie zawartość bufora. Możesz mieć w jednym widoku wiele okien z tym samym buforem, wiele okien z różnymi widokami, lub tylko jedno okno z jednym buforem. To co musisz rozumieć, to fakt, że okno jest zawsze powiązane z jakimś buforem, choćby nowego pliku, a bufor to samodzielny byt.

vim umożliwia nam pracę z wieloma buforami w tym samym czasie. W przypadku dużych projektów ich liczba potrafi szybko rosnąć i wymykając się spod kontroli. Dlatego też zrozumienie okien, buforów i nawigacji pomiędzy nimi stanowi istotny element nauki.

Bufory

Każdy bufor posiada unikalny numer, który pozostaje niezmienny w czasie całej sesji vim'a. Otwierając dowolny plik vim alokuje pamięć i ładuje do niej zawartość pliku. Wspomniany fragment pamięci to bufor i każdy plik będzie miał własny. Uruchom vim'a i otwórz w nim kilka plików. By podejrzeć utworzone dzięki temu bufory wykonaj komendę :ls by zobaczyć bufory. Wynik komendy ls ukaże Ci listę buforów zawierającą plik do którego się odwołują, oraz unikalny w ramach sesji numer. Przełączyć bufory w oknie możesz na przykład komendą b[NUM]. By podmiana bufora mogła mieć miejsce pamiętaj, że jego zawartość musi być zapisana na dysku, lub musi być on dostępny w jakimkolwiek oknie. W przeciwnym razie vim odezwie się do Ciebie z wyjątkiem.

Drążąc głębiej temat buforów wiedz, że mogą znajdować się w jednym z trzech stanów:

  • aktywnym: bufor jest wyświetlany w oknie i jest związany z plikiem
  • ukrytym: bufor nie jest wyświetlony w żadnym oknie i jest związany z plikiem
  • nieaktywnym: bufor nie jest wyświetlany, ani nie posiada zawartości

Okna vim'a identyfikowane są przez unikalne ID, oraz numer, przy czym ID jest unikalne w ramach sesji, natomiast numer jest unikalny jedynie w obrębie zakładki. O zakładkach napiszę w osobnym artykule.

W praktyce częstą praktyką jest posiadanie w jednym "widoku" na przykład dwóch okien i kilku buforów pomiędzy którymi się przełączamy w miarę potrzeby.

  • <Ctrl-W> s lub :sp podziel aktualne okno na dwa horyzontalnie. W obu będziemy posiadali załadowany bufor na którym wykonaliśmy podział.
  • <Ctrl-W> v lub :vsp podziel aktualne okno na dwa wertykalnie. W obu będziemy posiadali załadowany bufor na którym wykonaliśmy podział.
  • <Ctrl-W> n lub :new utwórz nowe okno, a jeśli jest to kolejne okno w aktualnym widoku wykonaj podział horyzontalny.
  • <Ctrl-W> q lub :q zamknij aktualne okno.
  • <Ctrl-W> o spraw by aktualne okno było jedynym w aktualnym widoku. Wszystkie bufory znajdujące się w pozostałych oknach staną się ukryte.

Poruszanie się pomiędzy oknami

Mając wiele okien otwartych w ramach jednego widoku musimy mieć możliwość poruszania się pomiędzy nimi. Użycie myszki to profanacja, lecz posiadamy w arsenale kilka użytecznych komend:

  • <Ctrl-W> j przenieś kursor do okna poniżej,
  • <Ctrl-W> k przenieś kursor do okna powyżej,
  • <Ctrl-W> h przenieś kursor do okna po prawej,
  • <Ctrl-W> l przenieś kursor do okna po w,
  • <Ctrl-W> w przenieś kursor do okna poniżej lub po prawej,
  • <Ctrl-W> W przenieś kursor do okna powyżej lub po lewej,
  • <Ctrl-W> t przenieś kursor do okna w lewym górnym rogu,
  • <Ctrl-W> b przenieś kursor do okna w prawym dolnym rogu,
  • <Ctrl-W> p przenieś kursor do poprzedniego okna,
  • <Ctrl-W> r rotuj ona góra/dół, lewo/prawo. Działa jedynie w przypadku okiem ustawionych w rzędach, lub kolumnach,
  • <Ctrl-W> R rotuj ona dół/góra, prawo/lewo. Działa jedynie w przypadku okiem ustawionych w rzędach, lub kolumnach.

Zmiana rozmiarów okien

Ostatnim, istotnym, elementem przy pracy z oknami, na tym poziomie, jest możliwość zmiany ich rozmiaru. Przydatna list poleceń wykonujących to zadanie:

  • <Ctrl-W> [NUM]> zmień rozmiar o [NUM] kolumn w prawo,
  • <Ctrl-W> [NUM]= zmień rozmiar okna o +[NUM] w pionie
  • <Ctrl-W> _ maksymalizuj okno w pionie
  • <Ctrl-W> | maksymalizuj okno w poziomie
  • <Ctrl-W> = wyrównaj rozmiar okien w poziomie/pionie,

Jak zwykle artykuł to tylko zarys możliwości. Przeczytaj :help windows i zgłęb temat we własnym zakresie.

Artykuł dodano 2020-03-30