Jak przenieść istniejące okno do nowej karty?

151

Czy istnieje sposób na przeniesienie istniejącego okna (podzielenie) i umieszczenie go w nowej karcie?

Drew Stephens
źródło
Jeśli kiedykolwiek wrócisz do tego pytania, zmień zaakceptowaną odpowiedź, odpowiedź DrAI jest dużo bardziej poprawna niż ta od Mykoły.
gbr

Odpowiedzi:

261

Oprócz wcześniej sugerowanego :tabeditpodejścia, szybszym sposobem na to jest (w trybie normalnym) trafienie Ctrl- W Shift- T. Ctrl-W to ogólny przedrostek dla wielu różnych poleceń służących do manipulacji oknami.

Widzieć:

:help Ctrl-W_T
:help Ctrl-W
DrAl
źródło
3
Zauważ, że help Ctrl-W_Tprzenosi cię do wpisu pomocy Ctrl-W_t(małe litery), jednak dalej w dół strony jest Ctrl-W_Twpis (z dużym T), mówiący "Przenieś bieżące okno na stronę nowej karty ...."
Rabarberski
1
@DrAl i jak przenieść okno nowej karty do podzielonego okna?
Ramiz Uddin
@RamizUddin Nie ma prostego sposobu na zrobienie tego (ponieważ nie jest oczywiste, na które okno chcesz się podzielić). Możesz jednak znaleźć numer bufora dla bieżącej strony karty za :echo bufnr("")pomocą i używając tego numeru, możesz podzielić okno za pomocą :sp #3lub :sb 3(zakładając, że liczba wynosiła 3). Możesz wymyślić pewne mapowania lub funkcje, aby to uprościć.
DrAl
1
Jak przenieść bufor do nowej karty, zachowując stan cofania / ponawiania. Innymi słowy, nie chcę otwierać tego samego pliku w nowej karcie, chcę dosłownie przenieść bufor na nową kartę, aby historię edycji można było wykorzystać w nowej karcie. Jeśli nie ma domyślnego sposobu na zrobienie tego, założę się, że można stworzyć wtyczkę, która doda nowy skrót do tego, który zapisze historię cofania w pliku wymiany dla nowego bufora.
trusktr
2
@trusktr Wyobrażam sobie, że otwarcie bufora w nowej karcie :sbdziałałoby, ale w ostatnich wersjach Vima (> = 7.3) możesz również użyć trwałego cofania, ustawiając, set undodir=/path/to/dirgdzie / path / to / dir to katalog, który stworzone w tym celu i wtedy set undofile. Pozwoli ci to wyjść z vima, a następnie zrestartować i nadal zachować stan cofania / ponawiania.
DrAl
103

Próbować

:tabedit %<CR>
Mykoła Golubyev
źródło
3
Ciekawe, dlaczego dołączyłeś do tego <CR>.
Szwajcaria
17
Z tego samego powodu dodałem „:”. To jest kompletna kombinacja klawiszy Vima w trybie normalnym i możesz jej używać w 'nnoremap' i 'nmap'
Mykola Golubyev
6
Działa to również, z wyjątkiem tego, że klonuje / duplikuje okno do nowej karty, w przeciwieństwie do zamykania go najpierw, a następnie otwierania w nowej karcie. Nic takiego. Po prostu coś, o czym należy pamiętać.
A-Dubb,
6
To nie przenosi bufora do nowej karty, po prostu otwiera ten sam plik w nowej karcie, ale nie będziesz mieć historii cofania / ponawiania itp.
trusktr
5
C-w Tto szybszy sposób na zrobienie tego samego
Dylanthepiguy,
3

Spowoduje to przeniesienie najnowszego bufora do nowej karty i przywrócenie poprzedniego bufora na bieżącej karcie. Używam tego po przeciągnięciu nowego pliku do mojego Gvima

:sbp |wincmd p| wincmd T

Możesz to zmapować w ten sposób do Ctrl-Backspace

:nnoremap <C-BS> :sbp<bar>wincmd p<bar>wincmd T<CR>

działa szczególnie dobrze z

:set switchbuf=usetab

źródło
0

Używam tego, co daje dwie funkcje, które można przypisać do pary skrótów klawiszowych lub poleceń, i które działa całkiem intuicyjnie. Jestem prawie pewien, że oferuje zachowanie nawet bardziej przyjazne niż np Ctrl-W_T.

Na przykład, gdy wiele okien jest otwartych na wielu kartach, użycie tej funkcji pozwala konkretnie przenieść bieżące okno do następnej lub poprzedniej karty, a jeśli przesuniesz coś przed pierwszą lub za ostatnią kartą, to się zmieni do zupełnie nowej karty.

Oznacza to, że jeśli masz 2 karty, z których każda ma jedno okno, to przesunięcie okna pierwszej karty w prawo spowoduje połączenie go z drugą kartą, tworząc jedną kartę z dwoma oknami. Nie wiem, jak skomplikowana jest ta operacja przy użyciu tradycyjnych poleceń.

Oznacza to, że pojedyncza para poleceń przenoszenia pozwala na przesuwanie okien wokół zakładek, dzielenie okien na zakładki (poprzez wypychanie okna do końca) i łączenie oddzielnych zakładek w okna wewnątrz jednej zakładki, prawie wszystko możesz chcieć, poza układem pozycyjnym (który jest osobnym tematem i do którego wbudowane Ctrl-W+ Shift-HJKLpolecenia działają dobrze).

Steven Lu
źródło