Załóżmy, że zacząłem vim tak:
vim foo bar
Teraz postanawiam, że chcę każdy z tych plików na osobnej karcie. Czy istnieje sposób, aby to zrobić bez wychodzenia z vima i dodawania -p
opcji do mojego wiersza poleceń?
Kiedy uruchamiasz vim w ten sposób, nie dostajesz klienta vima, edytor tekstowy używa terminala lub polecenia cmd - dwa pliki znajdują się w dwóch różnych buforach. Użyj, :ls
aby wyświetlić listę buforów:
:ls
1 %a "foo" line 6
2 "bar" line 0
% A jest aktywnym buforem. Możesz użyć, :b2
aby przełączyć na bufor 2 lub użyć, :bn
aby przejść do następnego lub :bp
poprzedniego. Wolę (CTRL-W v) niż podział okien w pionie, niż (CTRL-W), który dzieli się w poziomie.
Jeśli masz załadowane 2 pliki i nie masz żadnych kart (jeszcze), możesz, :tabnew
i w nowym typie kart:b2
Jeśli chcesz, aby bufory zawsze były ładowane do własnych kart, sprawdź ten artykuł .
vim
uruchomię edytor w powłoce. Aby uzyskać graficzny interfejs użytkownika vim, muszę go użyć gvim
. I masz rację - bufory są globalne dla aplikacji vim.
Chcesz otworzyć bufor w nowej karcie?
Podziel ekran (Ctrl-W s), weź okno i Ctrl-W T
Ctrl-w T
jeszcze o tym . Oczywiście, pierwsza zakładka nadal będzie miała dwa bufory.
:ls
.
Możesz to zrobić, łącząc tab
polecenie z sb[uffer]
poleceniem.
Najpierw musisz znać identyfikator bufora bufora, który chcesz otworzyć w nowej karcie. Możesz to sprawdzić za pomocą ls
polecenia:
:ls
1 %a "foo" line 1
2 "bar" line 0
Po uzyskaniu identyfikatora możesz go łatwo otworzyć w nowej karcie, używając:
:tab sb 2
sb
Komenda normalnie otwiera dany bufor w nowym oknie podzielonym, ale tab
komenda powoduje, że otworzy się w nowej karcie, zamiast.
tab
Komenda pozwala także określić, gdzie na liście zakładki powinna zostać utworzona nowa zakładka. Na przykład :0tab sb 2
spowoduje , że nowa karta „pasek” pojawi się na początku listy zamiast po bieżącej karcie.
:tab buffer part-of-name
nie otworzyłem nowej karty! Ale :tab sb part-of-name
działało jak urok. Dziękuję Ci!!!!
Lepszym sposobem na osiągnięcie tego, o co poprosił PO, jest:
:bufdo tab split
Spowoduje to otwarcie każdego bufora na własną kartę, niezależnie od tego, ile ich jest. Jeśli używasz tak dużo, łatwo jest zrobić mapowanie w .vimrc. W połączeniu z czymś takim jak ta mała wtyczka vima, poniższe elementy otworzą każdy element z :grep
(lub : Potwierdź ) we własnej zakładce:
:grep foo
:QuickFixOpenAll
:bufdo tab split
Oczywiście, uciekając się do wtyczki łatwo byłoby ją zmodyfikować, aby otworzyć zawartość listy szybkich poprawek bezpośrednio w kartach.
AKTUALIZACJA : Naprawdę muszę wykrzyczeć poniższy komentarz ggustafssona. Jest to zdecydowanie najlepsza odpowiedź z całego świata i pięknie ilustruje tendencję Vima do zachowań kompozytorskich. Sugerowana jest:
:tab sball
Warto poszukać pomocy w Vimie dla : tab i : sball, aby zobaczyć, co się tutaj dzieje.
:bufdo execute "tabnew %"
. Myślę, że nowe podejście jest nieco jaśniejsze.
:tab sball
wydaje się działać lepiej.
1. Otwórz dwa pliki w Vimie.
$ vim foo bar
2. Sprawdź liczbę buforów.
: ls 1% „foo” 2 „bar”
3. Połącz dwa polecenia: tabnew
aby otworzyć nową kartę i b <buffer_number>
załadować do niej żądany bufor.
: tabnew | b 2
:tab sb 2
Po prostu dodaj punkt, o którym inni nie wspominali.
Jeśli masz wiele okien, <C-W>T
przeniesie to okno do nowej karty. Jednak ten skrót dotyczy tylko „okna”, a nie „bufora”. Jeśli wolisz ten styl :sp
lub <C-W>s
powielasz bieżący bufor do jeszcze jednego okna, to <C-W>T
przenieś go do nowej karty.
4 naciśnięcia klawiszy lub 7 klawiszy.
:tabe %
aby otworzyć nową kartę dla bieżącego bufora.
7 naciśnięć klawiszy.
Jeśli używasz wtyczki CtrlP, możesz również użyć „CtrlPBuffer”, a następnie <C-t>
skrótem, aby otworzyć ją za pomocą strony nowej karty. Ten styl umożliwia łatwe przełączanie na różne bufory.
Skrót „CtrlPBuffer”, 4 naciśnięcia klawiszy lub więcej.
:tabe %
to jest to, czego szukałem od dłuższego czasu, dzięki!
:tabe %
tak naprawdę nie otwiera nowej karty dla bieżącego bufora. To, co się dzieje, %
zostaje rozszerzone do :tabe
ścieżki pliku bieżącego bufora i otwiera tę ścieżkę. Vim zobaczy, że próbujesz otworzyć plik, który już masz, i użyje ponownie bufora, który masz. Oznacza to, że nie działa to z buforami, które nie mają ścieżki pliku. Jeśli otworzysz nowy plik :new
i nie zapisałeś go, nie możesz umieścić go na nowej karcie. Prawdziwa komenda potrzebne jest co rkjnsn umieścić w swojej odpowiedzi: :tab sb %
albo krócej::tab sb
tabe %
co jest wspomniane w odpowiedzi liuyang1 poniżej.:tabe %
nie działa z buforami, które nie mają prawidłowej ścieżki do pliku.:tab sb
działa za każdym razem.