MacVim - przełącz na zakładkę, w której otwierany jest plik, gdy próbujesz otworzyć już otwarty plik

3

W ciągu dnia często otwieram wiele kart / okien otwartych w MacVim, zapominam dokładnie, które pliki otworzyłem itd.

Następnie, gdy próbuję otworzyć plik, który już gdzieś otworzyłem, otrzymuję coś takiego:

enter image description here

Muszę więc poszukać miejsca, w którym wcześniej otworzyłem plik, co jest denerwujące (muszę przejść przez wszystkie okna jeden po drugim, aby znaleźć jego kartę).

Czy istnieje sposób, aby MacVim po prostu zamknął kartę, na której ostatnio automatycznie otworzyłem plik, gdy próbuję ponownie otworzyć plik?

houbysoft
źródło

Odpowiedzi:

2

Możesz zmienić mapowanie tabnew do tab drop więc zostaniesz przełączony na już otwarte pliki lub skierowany do nowo utworzonego pliku.

cnoreabbrev <expr> tabnew getcmdtype() == ":" && getcmdline() == "tabnew" ? "tab drop" : "tabnew" 
insider
źródło
0

Możesz użyć SwapExists autocmd, aby podjąć działanie, gdy sytuacja się pojawi. Jeśli chcesz po prostu zignorować wiadomość i mimo to edytować plik, możesz dodać następujące elementy ~/.vimrc

autocmd SwapExists * :let v:swapchoice='e' 

Lub jeśli chcesz automatycznie odzyskać to, co było w pliku wymiany

autocmd SwapExists * :let v:swapchoice='r'

Zobacz pomoc ( :help SwapExists ), aby uzyskać więcej informacji na temat opcji. Są one odpowiednikiem kliknięcia opcji w oknie dialogowym, które prezentuje MacVim.

Zazwyczaj plik wymiany jest tworzony, gdy osobny proces vim ma otwarty plik z edycjami. Śledzenie tego bufora w innym procesie może nie być możliwe, ale jeśli byłoby to możliwe, można uruchomić ten autocmd funkcję lub polecenie, aby to zrobić.

claytron
źródło
0

Nie jest to pełna odpowiedź, ale w połączeniu z @claytron możesz być w stanie go uruchomić.

Wyszukaj polecenie upuszczenia, np. : pomóż spadać. Używam go w połączeniu z kartą (upuść zakładkę), aby otworzyć mój vimrc na nowej karcie lub przełączyć się na tę kartę, jeśli jest już otwarta:

nmap <leader>v :tab drop $MYVIMRC<CR>

Więc powinieneś być w stanie wykonać następujące czynności (NIE TESTOWANE: Nie wiem, czy% odbierze nazwę pliku, którą próbujesz otworzyć, lub nazwę pliku bieżącego bufora, ale masz pomysł):

autocmd SwapExists * :tab drop %<CR>

Pozostaje tylko przetestować różnicę między istniejącym plikiem wymiany, ponieważ właścicielem tego jest vim, lub dlatego, że jest nim inna instancja vima, lub z powodu awarii. W przypadkach 2 i 3 będziesz miał nieskończoną pętlę.

rjturn
źródło