Jak zamknąć bufor bez zamykania okna?


23

Zazwyczaj otwieram kilka okien i utrzymuję niektóre bufory otwarte. Ponieważ moja MO w eksploracji buforów ma używać szybkich skrótów do :bni :bp, chcę zamknąć niepotrzebne bufory przed rozpraszaniem mojego surfowania po buforze.

Ale ból polega na tym, że powoduje :bdi :bwpowoduje zamknięcie okna, na wypadek, gdy mam wiele otwartych. Jak zamknąć (usunąć) bufor i pozostawić nienaruszone okna?

Rozwiązanie zainspirowane odpowiedzią @ peth

:command! BW :bn|:bd#

To jest proste. Nie działa dobrze przy otwartym tylko jednym buforze (mam różne zachowanie w zależności od sposobu otwierania plików), ale nie jest to duży problem. :)

Odpowiedzi:


12

To może być ból, to pytanie pojawia się w kółko #vim(Freenode).

Niektóre osoby zalecają, aby nie usuwać buforów i przełączać się z nimi :b partial<Tab>zamiast :bn, co działa, ale nie jest tym, o co prosisz.

Najlepszym sposobem, jaki znam, aby to zrobić, jest przejście do innego bufora, a następnie :bd#oczywiście, który można zmapować.

Zobacz także Usuwanie bufora bez zamykania okna na wiki Vima.


Skrypt wygląda na rozwiązanie, które jestem gotów zaakceptować, jeśli nie ma oficjalnego sposobu. :)
unperson325680

21

Pomyślałem to trochę i w końcu wymyśliłem:

:bp | sp | bn | bd

Oto wersja kopiuj / wklej dla mapowania klawiszy:

:bp<bar>sp<bar>bn<bar>bd<CR>

Lub polecenie dla twojego .vimrc (połączenie z: Bd):

polecenie Bd bp | sp | bn | bd

Przetestowałem go dość dobrze i działa konsekwentnie w różnych warunkach. Jeśli zostanie użyty w ostatnim buforze, pozostawi Ci nowy pusty bufor.


3
Utracę podział, jeśli zamknę bufor otwarty w obu oknach, na przykład ostatni bufor. +1 za bycie prostszym niż skrypty wiki do bd bez zamykania okna .
Leif Carlsen

Korzystałem z vim-bbye, ale twoja odpowiedź jest znacznie prostsza i nie zależy od żadnego skryptu. Dziękuję Ci.
Andrew-Dufresne

4

Okno to rzutnia do bufora. (Zobacz :help window.) Nie możesz mieć okna bez powiązanego bufora. Możesz jednak użyć polecenia, takiego jak :enewzastąpienie bieżącej zawartości okna pustym buforem.


Spodziewałem się, że po usunięciu bufora vim może przełączyć się na inny bufor lub otworzyć nowy, jeśli to konieczne.
unperson325680

@progo, które wymagałoby trochę skryptów, np. wtyczki lub prostego mapowania.
Clint Pachl,

2

bufkill.vim Wtyczka działa tak samo. Lubię używać go z vim-command-w dla dodatkowej funkcjonalności i subtelności (na przykład, że zamknie podział, jeśli jest to ostatni bufor lub zamknie vim, jeśli jest to ostatni bufor / podział).


2

Oto inne rozwiązanie:

map <C-W>o <C-W>n<C-W><C-W><C-W>c

Wciśnięcie Ctrl + W, a następnie o, po cichu utworzy nowe okno i zamknie stare okno. Kursor pozostanie w nowym oknie. Istnieje wiele pozytywnych efektów:

  1. Twoje oryginalne podzielone wymiary zostaną zachowane.
  2. Pusty bufor jest ładowany do nowego podziału.
  3. Oryginalny bufor jest nadal ładowany, użyj: buforów, aby go wyświetlić.
  4. Ctrl + o przesuwa kursor do pierwotnej pozycji w starym buforze, jeśli trzeba wrócić.
  5. Działa dobrze, nawet jeśli załadowane jest tylko jedno okno.

1

Myślę, że problem polega na tym, że większość ludzi oczekuje, że bufor i okno vima będą czymś, czym nie są.

Ludzie zwykle myślą o oknie vima jako samodzielnym procesie, który ma własną listę buforów, ale niestety tak nie jest. Okno vim jest tylko oknem widoku jego buforów.
Dlatego powstaje wiele problemów, takich jak problem lub problem polegający na tym, że różne okna współużytkują tę samą listę buforów, więc nie można edytować bufora 1 w oknie A i pozwolić, aby okno B zignorowało bufor 1 na liście buforów.

Moim rozwiązaniem jest otwarcie dwóch instancji vima, abyś mógł mieć takie okno vim, jakie chcesz. Działa najlepiej na kafelkach WM.


1

Zwykle po prostu otwieram menu na dowolnym buforze. Otworzy to menu w lewym okienku i kursor będzie tam aktywny. Więc po prostu przełączam się z powrotem na aktywny bufor i usuwam bufor.

Następnie mogę otworzyć inny plik z menu.

Moje kroki to:

:Vex

ctrl + w + w

:bd
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.