Dzielę okna w poziomie. Teraz, jak mogę wrócić do trybu normalnego, tj. Bez podziału okna tylko jedno okno bez anulowania wszystkich moich otwartych okien. Mam 5 i nie chcę „wyjść”, po prostu chcę wyjść z podzielonego okna.
Czy jest jakaś szansa na zaakceptowanie odpowiedzi eckes? Jest o wiele bardziej pomocny niż obecnie akceptowany ...
Kyle Strand
Odpowiedzi:
288
Naciśnij Control+ w, a następnie naciśnij, qaby zamknąć każde okno na raz.
Aktualizacja : Zastanów się również nad odpowiedzią eckes, która może być dla Ciebie bardziej przydatna, obejmując :on (czytaj poniżej), jeśli nie chcesz robić tego jedno okno na raz.
Zgadzam się, ale OP nie wybrał odpowiedzi eckes i sam nie mogę tego zmienić.
Warren P,
4
Jestem całkiem pewien, że to poprawna odpowiedź. Zrobiło to dla mnie i jeśli spojrzysz na pytanie op, nie chciał zamykać swoich innych otwartych okien, tylko niedawno podzielone.
Zak
1
Nie pomaga, jeśli pokazany bufor zawiera niezapisane zmiany. Mówi, że powinienem nadpisać! ale nie wiem jak. Jako początkujący jestem teraz zagubiony.
musiKk,
2
więc zapisz to. Nie potrzebujesz tej odpowiedzi, jeśli nie wiesz, jak zapisać. Możliwe, że nawet nie masz ZEZWOLENIA na oszczędzanie.
Warren P,
1
Pochodząca z tradycyjnych edytorów GUI jest to dość dziwna koncepcja. Ustawienie hiddenwydaje się jednak pomóc. Chodziło mi o to, jak dodać! na skrót? Czy to „Cw! Q”, „Cw q!”, „! Cw q”, „C-! W q”? Myślę, że żaden z nich, ale już zapomniałem, jak tworzyć nowe bufory, więc jest to ćwiczenie dla czytelnika.
musiKk
265
Aby zamknąć wszystkie podziały, zazwyczaj umieścić kursor w oknie, które będzie na -ly widocznym jednym, a następnie wykonaj :onco sprawia, że bieżące okno się na -ly widocznym oknem. Niezły mnemonik do zapamiętania.
Edycja::help :on pokazał mi, że te polecenia są takie same:
+1 Jeśli drugie okno zawiera jakieś niezamierzone zmiany, :onodpowie E445: Other window contains changesi nie zamknie drugiego okna. Na przykład zwykle tworzę nowe okno i wczytuję do niego plik, z którego chciałbym wyrwać. W takim przypadku Vim uważa, że drugie okno ma niepisane zmiany. W takim przypadku użyj, :on!aby wymusić zamknięcie.
To jest świetne. Chrome (z wtyczką ssh) przechwytuje <CW> jako „zamknij kartę” skutecznie wyłączając wszystkie polecenia okna <cw> vima. Przydaje się alternatywa.
wodza
6
Z :help opening-window(wyszukaj „Zamykanie okna” - /Closing a window)
:q[uit]zamknij bieżące okno i bufor. Jeśli jest to ostatnie okno, również opuści vim
:bd[elete] zwolnij bieżący bufor i zamknij bieżące okno
:qa[all]lub :quita[ll]zamknie wszystkie bufory i okna i opuści vim ( :qa!aby wymusić bez zapisywania zmian)
:clo[se]zamknij bieżące okno, ale pozostaw bufor otwarty. Jeśli jest tylko jedno okno, polecenie to kończy się niepowodzeniem
:hid[e]ukryj bufor w bieżącym oknie (Czytaj więcej na :help hidden)
:on[ly] zamknij wszystkie pozostałe okna, ale pozostaw wszystkie bufory otwarte
To jest naprawdę duplikat odpowiedzi, duplikat czegoś, co siedziało tam od ponad 3 lat.
Warren P
@WarrenP nie wygląda jak duplikat. Nie znalazłem żadnej innej odpowiedzi, która wymienia ^W^W:qjako możliwe rozwiązanie, więc pozbyć się podziału. Zauważ, że ^W to the window you want to closenajwyraźniej oznacza to wiele zastosowań ^W^Wprzełączania do okna, które chcesz zamknąć.
Tino
Mój błąd. Drugi to ^ W, a następnie o
Warren P
2
Rozumiem dobrze twoją intencję, również używam buforów i czasami dzielę w razie potrzeby.
poniżej jest fragment mojego .vimrc
" disable macro, since not used in 90+% use cases
map q <Nop>
" q, close/hide current window, or quit vim if no other window
nnoremap q :if winnr('$') > 1 \|hide\|else\|silent! exec 'q'\|endif<CR>
" qo, close all other window -- 'o' stands for 'only'
nnoremap qo :only<CR>
set hidden
set timeout
set timeoutlen=200 " let vim wait less for your typing!
Co całkiem dobrze pasuje do mojego przepływu pracy
Jeśli qzostał naciśnięty
ukryj bieżące okno, jeśli otwartych jest wiele okien, w przeciwnym razie spróbuj wyjść z Vima.
jeśli qozostał naciśnięty
zamknij wszystkie pozostałe okna, bez efektu, jeśli tylko jedno okno.
Oczywiście możesz zawinąć tę niechlujną część w funkcję , np
Sidenote : I remap q, bo nie używać makro edycji, zamiast używać :s, :g, :voraz polecenia zewnętrznego przetwarzania tekstu w razie potrzeby, na przykład :'{,'}!awk 'some_programm', lub wykorzystywania :norm! normal-command-here.
Tak jak inni mówili wcześniej, sposobem na to jest naciśnięcie ctrl+, wa następnie o. To „zmaksymalizuje” bieżące okno, jednocześnie zamykając pozostałe. Jeśli chcesz to „zmaksymalizować”, możesz skorzystać z wtyczki ZoomWin . W przeciwnym razie konieczne będzie ponowne utworzenie konfiguracji okna od zera.
To nie opuszcza vimtrybu podzielonego okna, to po prostu opuszcza screentryb podzielonego panelu - który można łatwo pomylić, więc być może inni też. BTW: Uważam tę funkcję ekranu za irytującą, dlatego teraz domyślnie tmuxpozwalam na ponowne połączenie z nienaruszonymi wszystkimi podziałami.
Odpowiedzi:
Naciśnij Control+ w, a następnie naciśnij, qaby zamknąć każde okno na raz.
Aktualizacja : Zastanów się również nad odpowiedzią eckes, która może być dla Ciebie bardziej przydatna, obejmując
:on
(czytaj poniżej), jeśli nie chcesz robić tego jedno okno na raz.źródło
hidden
wydaje się jednak pomóc. Chodziło mi o to, jak dodać! na skrót? Czy to „Cw! Q”, „Cw q!”, „! Cw q”, „C-! W q”? Myślę, że żaden z nich, ale już zapomniałem, jak tworzyć nowe bufory, więc jest to ćwiczenie dla czytelnika.Aby zamknąć wszystkie podziały, zazwyczaj umieścić kursor w oknie, które będzie na -ly widocznym jednym, a następnie wykonaj
:on
co sprawia, że bieżące okno się na -ly widocznym oknem. Niezły mnemonik do zapamiętania.Edycja:
:help :on
pokazał mi, że te polecenia są takie same::on
:only
Każda z tych czterech zamyka wszystkie okna oprócz aktywnego.
źródło
:on
odpowieE445: Other window contains changes
i nie zamknie drugiego okna. Na przykład zwykle tworzę nowe okno i wczytuję do niego plik, z którego chciałbym wyrwać. W takim przypadku Vim uważa, że drugie okno ma niepisane zmiany. W takim przypadku użyj,:on!
aby wymusić zamknięcie.aby zamknąć wszystkie okna, ale bieżące użyj:
CTRL+ w,o
To znaczy, najpierw CTRL+ wa potem o.
źródło
CTRL+W o
wpisanego tekstu.Dwie możliwości zamknięcia bieżącego okna to
ZZ
iZQ
, które odpowiednio zapiszą i nie zapiszą zmian w wyświetlanym buforze.źródło
Z
bo jestem Niemką. (Spoiler: układ klawiatury, jeśli często przełączasz się między ustawieniami DE / EN)Polecenie: ukryj ukryje aktualnie zaznaczone okno. Myślę, że jest to funkcjonalność, której szukasz.
Aby nawigować między oknami, wpisz Ctrl + w, a następnie klawisz nawigacyjny (h, j, k, l lub klawisze strzałek)
Aby uzyskać więcej informacji, uruchom
:help window
i:help hide
vim.źródło
Z
:help opening-window
(wyszukaj „Zamykanie okna” -/Closing a window
):q[uit]
zamknij bieżące okno i bufor. Jeśli jest to ostatnie okno, również opuści vim:bd[elete]
zwolnij bieżący bufor i zamknij bieżące okno:qa[all]
lub:quita[ll]
zamknie wszystkie bufory i okna i opuści vim (:qa!
aby wymusić bez zapisywania zmian):clo[se]
zamknij bieżące okno, ale pozostaw bufor otwarty. Jeśli jest tylko jedno okno, polecenie to kończy się niepowodzeniem:hid[e]
ukryj bufor w bieżącym oknie (Czytaj więcej na:help hidden
):on[ly]
zamknij wszystkie pozostałe okna, ale pozostaw wszystkie bufory otwarteźródło
Znalazłem, że ctrl+ wdo okna, które chcesz zamknąć, a następnie po prostu zrób :q. To działa dla mnie.
źródło
^W^W:q
jako możliwe rozwiązanie, więc pozbyć się podziału. Zauważ, że^W to the window you want to close
najwyraźniej oznacza to wiele zastosowań^W^W
przełączania do okna, które chcesz zamknąć.Rozumiem dobrze twoją intencję, również używam buforów i czasami dzielę w razie potrzeby.
poniżej jest fragment mojego
.vimrc
Co całkiem dobrze pasuje do mojego przepływu pracy
Oczywiście możesz zawinąć tę niechlujną część w funkcję , np
Sidenote : I remap
q
, bo nie używać makro edycji, zamiast używać:s
,:g
,:v
oraz polecenia zewnętrznego przetwarzania tekstu w razie potrzeby, na przykład:'{,'}!awk 'some_programm'
, lub wykorzystywania:norm! normal-command-here
.źródło
Tak jak inni mówili wcześniej, sposobem na to jest naciśnięcie ctrl+, wa następnie o. To „zmaksymalizuje” bieżące okno, jednocześnie zamykając pozostałe. Jeśli chcesz to „zmaksymalizować”, możesz skorzystać z wtyczki ZoomWin . W przeciwnym razie konieczne będzie ponowne utworzenie konfiguracji okna od zera.
źródło
Okej, właśnie odłączyłem się i ponownie przyłączyłem do sesji ekranowej i wróciłem do normalnego ekranu, którego chciałem
źródło
vim
trybu podzielonego okna, to po prostu opuszczascreen
tryb podzielonego panelu - który można łatwo pomylić, więc być może inni też. BTW: Uważam tę funkcję ekranu za irytującą, dlatego teraz domyślnietmux
pozwalam na ponowne połączenie z nienaruszonymi wszystkimi podziałami.