Rozważ przypadek z wieloma podziałami w oknie. vim pozwala szybko „zmaksymalizować” bieżący podział, aby zajął całe okno przez <C-W>
o
.
Czy istnieje sposób, aby vim „zapamiętał” istniejące wcześniej podziały i powrócił do tego stanu po wykonaniu <C-W>
o
?
EDYCJA: Aby wyjaśnić, szukam sposobu, aby to zrobić bez użycia wtyczek innych firm.
Odpowiedzi:
Najprościej jest to zrobić za pomocą plików sesji, które są skryptami vima (które vim może dla ciebie automatycznie wygenerować), które przywrócą poprzednie środowisko edycji.
Możesz utworzyć nowy plik sesji za pomocą
:mksession <filename>
. Można przywrócić tej sesji wykonując wygenerowanego skryptu sesji:source <filename>
.W ten sposób można zapisać bieżącą sesję przed zmaksymalizowaniem okna i przywrócić ją, aby „zmaksymalizować” okno.
Korzystając z tego, możesz ponownie przypisać odpowiednie polecenia okienkowania, aby wcześniej zapisać sesję, i dodać nowe mapowanie, aby „cofnąć” ostatnie polecenie okienkowania, przywracając sesję. Na przykład:
nnoremap <C-w>o :mksession! ~/session.vim<CR>:wincmd o<CR>
i tak dalej dla wszystkich poleceń okienkowania, które chcesz wesprzeć (zobacz:help CTRL-W
, jest wiele). W!
zapobiega błędom związane z zastąpieniem istniejącego pliku sesji.nnoremap <C-w>u :source ~/session.vim<CR>
„cofnąć” ostatnie polecenie okienkowania.Jeśli chcesz być wyjątkowo solidny, możesz rozszerzyć to za pomocą funkcji, aby zapisać pliki sesji w stosie i wyskoczyć je, aby uzyskać pełny łańcuch cofania, chociaż w tym momencie prawdopodobnie bardziej wydajne jest napisanie wielu funkcji do śledzenia historia poleceń okna w pamięci ... w którym momencie prawdopodobnie duplikujesz wtyczki, które już to robią.
źródło
Inną opcją może być otwarcie bieżącego okna w nowej karcie, a następnie zamknięcie karty po zakończeniu.
Polecenie
:split
(lub:sp
w skrócie) bez argumentu powoduje otwarcie nowego podziału z tym samym buforem co bieżący podział.:tab
Polecenia można uruchomić wiele poleceń związanych z oknami, zmieniając im zamiast korzystać z zakładki. Połączenie ich razem daje:tab sp
, co otworzy nową kartę z bieżącym buforem.Następnie możesz zamknąć nową kartę za pomocą
:q
lub:tabclose
(:tabc
w skrócie).źródło
Korzystam z wtyczki ZoomWin ( https://github.com/itspriddle/ZoomWin ) właśnie w tym scenariuszu. Naciśnięcie CtrlW- Odrugi raz przywraca układ okna.
źródło
To, co opisujesz, brzmi dokładnie tak, jak nazwa „powiększanie”. Jest już świetna odpowiedź na temat SO, która robi to bardzo dobrze.
EDYCJA: Jawna odpowiedź, skopiowana i wklejona z SO . Umieszczam poniższy fragment w moim .vimrc, a następnie wywołuję
w moim wierszu polecenia vim.
źródło
Ten post jest stary, zaakceptowana odpowiedź nie dotyczy
terminal buffer
.Zaakceptowana odpowiedź służy
session
do wykonania lewy, alesession
nie można jej całkowicie przywrócićterminal buffer
:Odpowiedź Tommcdo nadal działa,
<c-w>:tab split
działa dobrzeterminal buffer
. Zasługuje na mapę:źródło