MacVim: passa alla scheda in cui il file viene aperto se provi ad aprire un file già aperto

3

Nel corso della giornata, spesso apro molte schede / finestre aperte in MacVim, dimentico esattamente quali file ho aperto ecc.

Quindi quando provo ad aprire un file che ho già aperto da qualche parte, ottengo qualcosa di simile al seguente:

Quindi devo andare a cercare dove ho aperto il file prima, il che è fastidioso (devo passare da una finestra all'altra per trovare la sua scheda).

C'è un modo per fare in modo che MacVim chiuda semplicemente la scheda in cui ho aperto il file per l'ultima volta quando tento di aprire di nuovo il file?

    
posta houbysoft 14.06.2012 - 20:14
fonte

3 risposte

2

Puoi rimappare tabnew in tab drop in modo da passare a file già aperti o indirizzati a file appena creati.

cnoreabbrev <expr> tabnew getcmdtype() == ":" && getcmdline() == "tabnew" ? "tab drop" : "tabnew" 
    
risposta data 02.07.2013 - 21:31
fonte
0

Puoi usare SwapExists autocmd per eseguire un'azione quando si verifica questa situazione. Se volessi semplicemente ignorare il messaggio e modificare comunque il file, potresti aggiungere quanto segue al tuo ~/.vimrc

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

O se si desidera ripristinare automaticamente ciò che era nel file di scambio

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

Guarda l'aiuto ( :help SwapExists ) per maggiori informazioni sulle tue opzioni. Sono l'equivalente di fare clic sulle opzioni nella finestra di dialogo che presenta MacVim.

Generalmente un file di swap viene creato quando un processo separato di vim ha il file aperto con le modifiche. Potrebbe non essere possibile rintracciare quel buffer in quell'altro processo, ma se fosse possibile, è possibile che questo autocmd attivi la funzione o il comando per farlo.

    
risposta data 22.06.2012 - 04:07
fonte
0

Questa non è una risposta completa, ma in combinazione con @claytron potresti riuscire a farlo funzionare.

Cerca il comando di rilascio, ad es. : help drop. Lo uso in combinazione con la scheda (rilascio scheda) per aprire il mio vimrc in una nuova scheda o per passare a quella scheda se è già aperta:

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

Quindi dovresti essere in grado di fare quanto segue (NON TESTATO: non so se% prenderà il nome del file che stai tentando di aprire, o il nome del file del buffer corrente, ma ti viene l'idea):

autocmd SwapExists * :tab drop %<CR>

L'unica cosa che rimane è testare la differenza tra un file di swap che esiste perché questa istanza di vim lo possiede, o perché un'altra istanza di Vim lo possiede o a causa di un arresto anomalo. Nei casi 2 e 3 avrai un ciclo infinito.

    
risposta data 10.10.2012 - 11:22
fonte

Leggi altre domande sui tag