Patrzyłem na możliwość używania zakładek w Vimie (z :tabe
, :tabnew
itp.) Jako zamiennik mojej obecnej praktyki posiadania wielu plików otwartych w tym samym oknie w ukrytych buforach.
Chciałbym, aby każdy odrębny plik, który otworzyłem, zawsze znajdował się na swojej karcie. Są jednak pewne rzeczy, które temu przeszkadzają. Jak to naprawić:
Gdy polecenia takie jak
gf
i^]
przejdź do lokalizacji w innym pliku, plik otwiera się w nowym buforze na bieżącej karcie. Czy istnieje sposób, aby wszystkie tego rodzaju polecenia otworzyły plik na nowej karcie lub przełączyły się na istniejącą kartę z plikiem, jeśli jest już otwarty?Podczas przełączania buforów mogę użyć,
:b <part of filename><tab>
a to uzupełni nazwy plików w istniejących buforach.<part of filename>
może nawet znajdować się w środku nazwy pliku zamiast na początku. Czy istnieje odpowiednik przełączania kart?
Trochę się spóźniłem na imprezę tutaj, ale zdziwiłem się, że na tej liście nie zobaczyłem:
:tab sball
- otwiera to nową kartę dla każdego otwartego bufora.:help switchbuf
- to kontroluje zachowanie przełączania buforów, spróbuj:set switchbuf=usetab,newtab
. Powinno to oznaczać przejście do istniejącej karty, jeśli bufor jest otwarty, lub utworzenie nowej, jeśli nie.źródło
switchbuf
-set switchbuf=useopen
jest wielki, aby uniknąć irytujących zachowań:make
,:vimgrep
i podobnych poleceń, który zmienia układ buforów w oknie, nawet jeśli bufor był już wyświetlany.:se switchbuf=usetab,newtab
, kiedy używanybn
do przełączania bufora, nadal otwiera plik bufora na bieżącej karcie zamiast przełączania na istniejącą kartę? Czy jest coś nie tak?Vim
:help window
dość dobrze wyjaśnia zamieszanie „tabulacje i bufory”.Otwieranie wielu plików odbywa się w vimie z buforami . W innych edytorach (np. Notepad ++) odbywa się to za pomocą kart, więc nazwa karty w vimie może być myląca.
Okna służą do dzielenia obszaru roboczego i wyświetlania wielu plików (buforów) na jednym ekranie. W innych edytorach można to osiągnąć przez otwarcie wielu okien GUI i zmianę ich rozmieszczenia na pulpicie.
Wreszcie w tej analogii strony kart vima odpowiadałyby wielu pulpitom, czyli różnym przegrupowaniom okien.
Jak
help: tab-page
wyjaśnia vim , można użyć strony z zakładkami, gdy chce się tymczasowo edytować plik, ale nie chce niczego zmieniać w bieżącym układzie okien i buforów. W takim przypadku można użyć innej strony zakładki tylko w celu edycji tego konkretnego pliku.Oczywiście musisz pamiętać, że wyświetlenie tego samego pliku na wielu stronach lub oknach kart spowodowałoby wyświetlenie tej samej kopii roboczej (bufora).
źródło
buffer
= obiekt ,window
= okienko itab
= okno . Mogę poruszać się po pokoju i zaglądać do niego z różnych okien (tabs
). Różne okna mogą mieć różną liczbę, rozmieszczenie i wielkość szyb . Ten sam obiekt można jednocześnie oglądać z różnych paneli w różnych oknach .vim
użytkowania. Na początku było tylko okno . Menedżery okien pozwoliły następnie podzielić okna na panele (kafelki WM) lub na nakładające się panele (, pływające WM), ale nadal odnosiły się do każdego panelu jako okna. Teraz dodaj koncepcję obszaru roboczego, w którym panel może być wyświetlany w wielu obszarach roboczych. Zatem w tym paradygmaciebuffer
= aplikacja ,window
= okno itab
= przestrzeń robocza .W przeciwieństwie do niektórych innych odpowiedzi tutaj, mówię, że możesz używać zakładek w dowolny sposób. vim został zaprojektowany tak, aby był wszechstronny i dostosowywalny, zamiast zmuszać cię do pracy zgodnie z predefiniowanymi parametrami. Wszyscy wiemy, jak nasi programiści uwielbiają narzucać naszą „etykę” wszystkim innym, więc to osiągnięcie jest z pewnością główną cechą.
<C-w>gf
jest tabulatorem równoważnymgf
poleceniu buforów .<C-PageUp>
i<C-PageDown>
będzie przełączać się między kartami. (W Byobu te dwa polecenia nigdy nie działają dla mnie, ale działają poza Byobu / tmux. Alternatywami sągt
igT
.)<C-w>T
Przeniesie bieżące okno na stronę nowej karty.Jeśli wolisz, aby vim używał istniejącej karty, jeśli to możliwe, zamiast tworzyć duplikaty, dodaj
:set switchbuf=usetab
do pliku .vimrc. Możesz dodaćnewtab
do listy (:set switchbuf=usetab,newtab
), aby wymusić otwieranie poleceń QuickFix wyświetlających błędy kompilacji w osobnych kartach. Wolęsplit
zamiast tego, co otwiera błędy kompilacji w podzielonym oknie.Jeśli masz włączoną obsługę myszy
:set mouse=a
, możesz wchodzić w interakcje z kartami, klikając je.+
Domyślnie jest też przycisk, który utworzy nową kartę.Aby uzyskać dokumentację dotyczącą kart, wpisz
:help tab-page
w trybie normalnym. (Po wykonaniu tej czynności możesz poćwiczyć przenoszenie okna do karty za pomocą<C-w>T
.) Istnieje długa lista poleceń. Niektóre polecenia okna dotyczą kart, więc możesz również zajrzeć do tej dokumentacji za pośrednictwem:help windows
.Dodanie: 19.12.2013
Aby otworzyć wiele plików w vimie z każdym plikiem na osobnej karcie, użyj
vim -p file1 file2 ...
. Jeśli jesteś podobny do mnie i zawsze zapominasz dodać-p
, możesz dodać go na końcu, ponieważ vim postępuje zgodnie z regułami analizy składni opcji wiersza poleceń. Alternatywnie możesz dodać mapowanie aliasu bashvim
dovim -p
.źródło
vim -p
jednak pamiętaj, że domyślnie będzie wyświetlanych tylko do 10 kart. Dodatkowe pliki są ładowane do buforów, ale nie są wyświetlane na własnej karcie.tabpagemax
ustawienieNatrafiłem na ten sam problem. Chciałem, żeby karty działały jak bufory i nigdy nie udało mi się do nich dotrzeć. Rozwiązaniem, na które ostatecznie zdecydowałem, było sprawienie, by bufory zachowywały się jak tabulatory!
Sprawdź wtyczkę o nazwie Mini Buffer Explorer , po jej zainstalowaniu i skonfigurowaniu będziesz w stanie pracować z buforami wirtualnie w ten sam sposób co karty bez utraty funkcjonalności.
źródło
To odpowiedź dla tych, którzy nie znają Vima i pochodzą z innych edytorów tekstu (w moim przypadku Sublime Text).
Przeczytałem wszystkie te odpowiedzi i wciąż nie było jasne. Jeśli je przeczytasz, wszystko zaczyna mieć sens, ale zajęło mi to wiele godzin przechodzenia między pytaniami.
Pierwszą rzeczą jest, jak wyjaśnili inni:
Strony z kartami przypominają tabulatory , zachowują się jak tabulatory i wyglądają podobnie jak tabulatory w większości innych edytorów GUI, ale nimi nie są. Myślę, że to zły model mentalny, który został zbudowany w Vimie, który niestety zachmurza dodatkową moc, którą masz na stronie zakładki.
Pierwszy opis, który zrozumiałem, pochodzi z odpowiedzi @ crenate, że są one równoważne wielu komputerom stacjonarnym. Patrząc na to, miałbyś tylko kilka otwartych pulpitów, ale wiele okien GUI było otwartych na każdym z nich.
Powiedziałbym, że są one podobne do innych edytorów / przeglądarek:
Widząc je w ten sposób, zdajesz sobie sprawę z ich siły, że możesz łatwo grupować zestawy plików (buforów) razem, np. Pliki CSS, HTML i JS na różnych stronach kart. Co jest naprawdę niesamowite.
Inne opisy, które uważam za mylące
Rzutnia
To jest bez sensu jak dla mnie. Rzutnia, która choć ma zdefiniowany słownik , słyszałem tylko w odniesieniu do okien Vima w
:help window
dokumencie. Rzutnia nie jest terminem, który słyszałem w odniesieniu do edytorów takich jak Sublime Text, Visual Studio, Atom, Notepad ++. W rzeczywistości nigdy o nim nie słyszałem, dopóki nie zacząłem używać stron z kartami.Jeśli przeglądasz strony z zakładkami, takie jak wiele pulpitów, to określanie pulpitu jako pojedynczego okna wydaje się dziwne.
Miejsca pracy
Być może ma to większy sens, definicja słownika jest następująca:
To jest jak miejsce, w którym przechowujesz grupę buforów.
Początkowo nie brzmiałem jak koncepcja obszaru roboczego Sublime Text, która jest listą wszystkich plików, które otworzyłeś w swoim projekcie:
Jednak myśląc o tym więcej, tak naprawdę zgadza się. Jeśli uważasz stronę karty Vima za projekt Sublime Text, to dziwne wydaje się mieć tylko jeden plik w każdym projekcie i ciągle przełączać się między projektami. Dlatego użycie strony z kartami do otwarcia tylko jednego pliku jest dziwne.
Kolekcja okien
:help window
Odnosi się do stron zakładki w ten sposób. Ponadto wiele innych odpowiedzi korzysta z tej samej koncepcji. Jednak dopóki nie zobaczysz, czym jest okno vim, nie ma to większego sensu, jak budowanie zamku na piasku.Jak wspomniałem powyżej, okno vim jest takie samo jak okno robocze i jest doskonale wyjaśnione w tym artykule linux.com :
Wydaje mi się dziwne, że strona karty jest nazywana kolekcją okien zamiast kolekcji buforów. Ale myślę, że możesz mieć dwie oddzielne strony z zakładkami, każda z wieloma oknami wskazującymi ten sam bufor, przynajmniej tak rozumiem do tej pory.
źródło
Patrząc: zakładki pomocy nie wygląda na to, że vim chce działać tak jak ty ...
Bufory są wspólne dla różnych kart, więc nie wydaje się możliwe zablokowanie danego bufora, aby pojawiał się tylko na określonej karcie.
To jednak dobry pomysł.
Prawdopodobnie można uzyskać pożądany efekt, używając terminala obsługującego karty, takiego jak multi-gnome-terminal, a następnie uruchamiając instancje vim na każdej karcie terminala. Jednak nie idealne ...
źródło
Możesz mapować polecenia, które normalnie manipulują buforami, aby manipulować tabulatorami, tak jak zrobiłem z gf w moim .vimrc:
Jestem pewien, że możesz zrobić to samo z [^
Nie sądzę, że vim obsługuje to dla kart (jeszcze). Używam gt i gT, aby przejść odpowiednio do następnej i poprzedniej karty. Możesz także użyć Ngt, gdzie N jest numerem zakładki. Wkurza mnie to, że domyślnie numer karty nie jest wyświetlany w wierszu karty. Aby to naprawić, umieściłem kilka funkcji na końcu mojego pliku .vimrc (nie wkleiłem tutaj, ponieważ jest długi i nie został poprawnie sformatowany).
źródło
<c-w>gf
otworzy nazwę pliku pod kursorem w nowej zakładceUżywam buforów takich jak tabulatory, używając wtyczki BufExplorer i kilku makr:
Z BufExplorer nie masz paska kart u góry, ale z drugiej strony oszczędza miejsce na ekranie, a ponadto możesz mieć nieskończoną liczbę plików / buforów otwartych, a listę buforów można przeszukiwać ...
źródło
Jeśli chcesz, aby bufory działały jak tabulatory, sprawdź wtyczkę tabline .
To wykorzystuje pojedyncze okno i dodaje wiersz u góry, aby symulować zakładki (po prostu pokazując listę buforów). Wyszło to dawno temu, gdy tabulatory były obsługiwane tylko w GVimie, ale nie w vimie wiersza poleceń. Ponieważ działa tylko z buforami, wszystko dobrze integruje się z resztą vima.
źródło