Jak powiedział ZyX na #vim, pytanie brzmi: „Dlaczego eksperci Vima wolą smaczne niż ciepłe?” .
„Eksperci Vima” nie preferują buforów zamiast kart: używają buforów jako serwerów proxy, którymi są, a stron kart jako obszarów roboczych. Bufory i strony z kartami mają różne cele, więc preferowanie jednego od drugiego nie ma żadnego sensu.
Problem z buforami i kartami jest zamieszany , spowodowany kombinacją niezależnych faktów.
Większość „nowoczesnych” edytorów tekstu i IDE używa metafory tabulatora do reprezentowania załadowanych plików. Ta metafora działa jak system informacyjny - pokazuje użytkownikowi, jakie pliki są otwierane i ich stan - oraz jako urządzenie interaktywne - pozwala użytkownikowi manipulować (zmieniać kolejność, wybierać, zamykać ...) te otwarte pliki. Pomimo wielu ograniczeń, karty są wszędzie, a ludzie są do nich przyzwyczajeni i oczekują ich wszędzie.
Vim wprowadził strony z kartami w wersji 7.0 jako sposób na tworzenie przez użytkowników „obszarów roboczych” ad-hoc. Nic w ich funkcjach, ich specyficznych opcjach, ich specyficznych poleceniach lub :help
sekcjach nie sugeruje, że strony z kartami mogłyby lub powinny być używane jako proxy plików.
Oczywiście nic poza nazwą i wyglądem „kart stron”, co prowadzi do wielu nieporozumień.
Bez :set hidden
, który jest domyślnie wyłączony i nie jest bardzo łatwy do znalezienia, Vim uniemożliwia przejście do innego bufora bez zapisania bieżącego lub rezygnacji z jego zmian. Nowi użytkownicy, nieświadomi tej opcji, nie mają innego wyboru, jak przejść do korzystania z ciężkich okien lub do najbliższej funkcji „tab-tab”, jaką mogą znaleźć: strony z kartami.
„Strona z zakładkami” to niefortunny wybór nazwy dla tej funkcji, szczególnie w epoce zdominowanej przez pomysł, że czytanie dokumentacji jest stratą czasu.
W Vim strony z zakładkami są abstrakcją zbudowaną na oknach, same są abstrakcją zbudowaną na buforach. Każdy nowy poziom dodaje przydatne funkcje, ale ogranicza przepływ pracy.
„Sposób buforowania”
Dzięki przepływowi pracy opartemu na buforze pliki, z którymi pracujesz, są dystrybuowane w jednym wymiarze. Możesz przełączać bufory, możesz uzyskać dostęp do konkretnego bufora, wpisując część jego nazwy (z uzupełnieniem) lub jego numer, możesz przełączać się między buforami, możesz łatwo na nie celować. Zasadniczo nie ma tarcia.
Osiem buforów otwartych, tylko jeden widoczny:
Przełączanie według numeru:
Przełączanie według nazwy:
Bufory są serwerami proxy Vima. Jeśli myślisz o plikach, myślisz o buforach.
„Sposób na okno”
Z przepływem pracy opartym na oknie oba „pliki” są dystrybuowane w tym samym pojedynczym „wirtualnym” wymiarze, tak jak w przypadku użycia tylko buforów i wzdłuż dwóch innych „fizycznych” wymiarów. Ale przestrzenie kartezjańskie, w których znajdują się te wymiary, są prawie całkowicie oddzielone: przejście do innego bufora nadal oznacza „przejście do innego pliku”, ale przejście do innego okna nie. Bufor, który odpowiada żądanemu plikowi, może być wyświetlany w tym oknie, ale może być również wyświetlany na innym, być może na innej stronie zakładki lub wcale.
W systemie Windows nawigacja między otwartymi plikami staje się zbyt złożona lub zbyt uproszczona, nawet przy pomocy 'switchbuf'
i :sb
. Głównie dlatego, że jesteś zmuszony użyć dwóch zestawów poleceń do tego, co jest w zasadzie to samo: do uzyskania dostępu do bufora.
Windows ma swoje zastosowanie, jak opisano poniżej, ale nie mają tyle, ile potrzeba, aby zamienić bufory w czyimś przepływie pracy.
Tutaj pracuję nad schematem kolorów Vim. Dwa okna to różne widoki tego samego bufora: górne służy jako odniesienie, wraz z tabelą kodów kolorów używanych w schemacie kolorów, a dolne to miejsce, w którym pracuję:
Okna nie są zaprojektowane jako proxy plików i nie można ich przekształcić w proxy: są to „kontenery” lub „rzutnie” zaprojektowane tak, aby oferować widok do bufora. Nie więcej nie mniej.
„Sposób zakładki”
Dzięki przepływowi pracy opartemu na kartach zasadniczo próbujesz naśladować wrażenia użytkownika, do których jesteś przyzwyczajony z poprzedniego edytora, całkowicie ignorując samą naturę stron z kartami Vima. Jeśli na chwilę zapomnimy, że ta strategia jest generalnie bardzo nieproduktywna, niemożliwe jest, podobnie jak w przypadku systemu Windows, zmusić Vima do przestrzegania tego paradygmatu „jeden plik = jedna karta” bez utraty dużej elastyczności.
Wciąż pracując z tymi samymi plikami, co powyżej, tabulacja zajmuje znaczną przestrzeń, praktycznie bez korzyści. Wszystkie moje pliki i wszystkie moje karty są nazywane, javascript*.vim
więc nie mogę tego zrobić 3gt
i mam pewność, że skończę we właściwym miejscu i nie można dotrzeć do konkretnej karty po nazwie. Dodaj do tego fakt, że jego etykieta może być bardzo nieprzydatna, ale całkowicie logiczna [Quickfix List]
… Ponieważ nie ma praktycznego sposobu na powiązanie pliku / bufora ze stroną karty, w zasadzie pozostaje ci tylko jeden praktyczny sposób poruszania się między stronami kart / bufory / pliki: cykliczne.
I tak, moja tabulatura jest wypełniona tylko 8 zakładkami, wyobraź sobie, że miałbym 20!
Osiem buforów otwartych na ośmiu stronach kart (źle)
Dwie zakładki dla dwóch określonych zadań (po prawej)
Strony kart to „kontenery” lub „rzutnie” zaprojektowane tak, aby zawierały jedno lub więcej okien, same również „kontenery” zaprojektowane do przechowywania buforów.
Podsumowując
„Eksperci Vima” (załóżmy, że mogę mówić tak, jakbym był jednym z nich) nie preferują buforów nad kartami: po prostu używają Vima tak, jak został zaprojektowany i są całkowicie wygodne z tym projektem:
„Eksperci Vima” mają załadowane 2, 30 lub 97 buforów i cieszą się, że nie mają do czynienia z rozkładem przestrzennym;
kiedy muszą porównać dwa pliki lub pracować w jednej części bieżącego bufora, zachowując inny jako odniesienie, „eksperci Vima” używają okien, ponieważ w taki sposób mają być używane;
kiedy muszą chwilę popracować nad oddzielną częścią projektu, nie zakłócając obecnego widoku, „eksperci Vima” ładują nową stronę z zakładkami.