Czasami muszę przenieść okna do już istniejącej karty i zastanawiałem się, czy może to zrobić skrót poleceń / klawiatury. Wiem, że mogę zamknąć okno, przejść do zakładki, a następnie otworzyć ją w nowym podziale, ale zastanawiałem się, czy istnieje krótszy sposób na osiągnięcie tego. Pamiętaj, że chcę przenieść go na istniejącą kartę, a nie nową, jak to <C-w>T
robi.
vim-windows
tabbed-user-interface
Wiecznie zielone drzewo
źródło
źródło
Odpowiedzi:
Chociaż istnieją polecenia do przenoszenia istniejących okien na bieżącej stronie karty (tj. Wpływają na układ okna poprzez obracanie, zmianę rozmiaru i przesuwanie), nie ma poleceń, aby przenieść okno na inną kartę.
Ponieważ okno to tylko rzutnia do załadowanego bufora, musisz:
:close!
okno.:sbuffer
numer bufora, aby go ponownie otworzyć.Przez to stracisz wszelkie opcje specyficzne dla okna. Możesz również zapisać i przywrócić je w skrypcie.
źródło
:b ab
(wypełnij resztę tabulatorem)ab
to tylko losowe litery, zamień na początek żądanej nazwy pliku.:b
uzupełnianie tabulatorów działało dla mnie bardzo dobrze, zwykle może znaleźć odpowiedni bufor źródłowy na podstawie tylko jednej litery i 1-2Tab
naciśnięć klawiszy.Zaletą tego podejścia w porównaniu do Ingo jest brak zauważania lub zapamiętywania czegokolwiek, co oznacza mniejsze obciążenie poznawcze. Nazwa pliku i tak już znasz.
źródło
Dwa zdefiniowane poniżej polecenia przenoszą wszystkie bufory z zakładki po prawej do bieżącej, a następnie zamykają zakładkę po prawej.
Mtabsp
przesuwa je, dzieląc poziomo i dzielącMtabvsp
pionowo. Przed użyciem poleceń należy przenieść scaloną kartę. Użyj+tabm
,-tabm
lub<n>tabm
.Ustawiać
Dodaj poniższy skrypt vim do
vimrc
:Szczegóły techniczne
Funkcja Mtab otrzymuje jeden parametr
vert
. Określa, czy bieżąca karta jest podzielona poziomo czy pionowo.Pożądany rezultat osiąga się, wykonując następujące kroki:
Jeśli nasza bieżąca karta jest ostatnia, polecenia są ignorowane.
źródło
Jeśli jest to bufor plików (nie działa dla buforów scratch itp.), Możesz:
:let @f=@%
ENTER - w oknie źródłowym;:echo @f
:e␣
Ctrl-RfENTERWażna uwaga: ostatni krok nie będzie działał poprawnie, jeśli ścieżka zawiera spacje lub niektóre znaki specjalne! :-( Aby obejść ten problem, następujące, nieco dłuższe polecenie powinno działać w przypadku ścieżek ze spacjami (chociaż może się nie powieść w przypadku niektórych innych znaków specjalnych):
:e␣"
Ctrl-Rf"
ENTER(to znaczy cytuje wynik Ctrl-R, f )
Zainspirowany odpowiedziami Lkraav i Ingo-Karkat .
źródło