Vim wiele okien / ukryj

9

Gdybym miał X lub więcej okien otwartych w sesji VIM i chciałem na chwilę szybko ukryć wszystko oprócz aktywnego, a następnie przywrócić okna do układu, w którym miałem je, jak to zrobić?

James
źródło
Wtyczka Zoomwin to robi.
Stabledog

Odpowiedzi:

8

W Vimie 7 i nowszych możesz do tego użyć „zakładki strony” (tj. Zakładki „w stylu GUI”). Możesz użyć :tabpolecenia z jednym :splitlub :sbuffer:

:tab split
:tab sp      " shorter version

:tab sbuffer
:tab sb      " shorter version

Oba spliti sbufferrobią prawie to samo, gdy są używane bez dodatkowych argumentów (podziel bieżący bufor). Prawdopodobnie będziesz chciał użyć, splitjeśli spodziewasz się załadować jakąś (prawdopodobnie jeszcze nie załadowaną) nazwę ścieżki ( split path/to/some/file; chociaż możesz po prostu użyć :tabezamiast tego, ponieważ jest to w kontekście otwierania nowej karty); sbufferułatwia przejście do istniejącego bufora ( sb {bufnum}lub sb {bufname}).

Po otwarciu nowej karty możesz używać gTi gtprzełączać się między wynikowymi kartami (lub kontrolkami GUI, jeśli używasz wersji Vima dla GUI). Po zakończeniu korzystania z karty z jednym oknem wystarczy :qzamknąć okno (a tym samym kartę) i powrócić do oryginalnej karty (z oryginalnym układem okna), lub użyć :tabclose( :tabc) lub wrócić do oryginalnej karty i użyć :tabonly( :tabo).

Chris Johnsen
źródło
10

Używam CTRL-W _, aby poziomo „wypchnąć” inne okna na bok, dzięki czemu bieżące okno rozszerzy się na największy dostępny obszar. Użyj CTRL-W | zrobić to samo w pionie. Jestem pewien, że jest prawdopodobnie sposób na zrobienie obu naraz, ale nie zauważyłem tego ani nie szukałem. Szukaj: pomoc CTRL-W

Aby je przywrócić, wykonaj CTRL-W =. Jedynym zastrzeżeniem jest to, że nie przywrócono ich pierwotnej konfiguracji. CTRL-W = faktycznie ponownie oblicza najlepsze dopasowanie dla wszystkich okien na ekranie.

frogstarr78
źródło
Sprawdź, czy jest to fajny hack do wdrożenia.
James
7

O ile mi wiadomo, nie ma sposobu, aby po prostu przełączać się między dwoma różnymi układami okien, ale możesz ukryć wszystkie inne okna, wydając polecenie :only(lub :on). Zobacz pomoc Vima dla tego polecenia .

Kusalananda
źródło
2
Dzięki temu nie można wrócić do poprzedniego układu. Odpowiedź Chrisa Johnsena pozwala nam to zrobić.
Phani