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.
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:
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.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.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.