Apri il nome del file sotto il cursore come gf, ma in una nuova scheda (o dividi)?


43

Il comando in modalità normale gfpassa a un file con il percorso attualmente sul cursore.

Ma lo fa nella finestra corrente, sostituendo il testo corrente. Ciò significa che è necessario tornare indietro in modo esplicito per tornare indietro in un secondo momento e che è necessario scrivere potenzialmente le modifiche nel buffer corrente.

Sono sicuro che è possibile aprire il file sotto il cursore in una nuova visualizzazione tab invece?


3
L'attivazione 'hidden'dell'opzione ( set hidden) consente di allontanarsi dai buffer non salvati. Per me, questo è stato un enorme incentivo per la produttività ed è stato fondamentale smettere di fare così tanto affidamento su frazioni e schede.
tommcdo,

Risposte:


56

MODIFICA: Suggerisci mappature piacevolmente simmetriche per il caso di divisione verticale, poiché Vim ha due mappature predefinite per il caso di divisione orizzontale.

Esistono diversi modi per modificare il "file sotto il cursore" e mentre puoi sicuramente rimappare gfper modificarlo in una nuova scheda come menzionato da @ alexander-myshov, ciò significa che hai due modi per modificarlo in una nuova scheda, ma non c'è modo di modificalo nella finestra corrente, cosa che a volte potresti voler fare. Non è difficile utilizzare i mapping standard, ma se si desidera rimappare uno di essi gf, suggerirei di cambiare i mapping, in modo da non perderne uno.

Alcuni dei modi per modificare un nome file sotto il cursore sono

  • gf - Modifica il file esistente sotto il cursore nella stessa finestra
  • C-Wf - Modifica il file esistente sotto il cursore nella finestra divisa
  • C-WC-F - Modifica il file esistente sotto il cursore nella finestra divisa
  • C-Wgf - Modifica il file esistente sotto il cursore in una nuova scheda

Non esiste un mapping standard per modificare il file esistente sotto il cursore in una divisione verticale, ma è possibile ottenerlo prima dividendo la finestra verticalmente e quindi modificando il file sotto il cursore nella finestra corrente.

  • C-Wv+ gf- Modifica il file esistente sotto il cursore nella finestra divisa verticalmente

Come puoi vedere sopra, ci sono due mappature predefinite per la modifica del file sotto il cursore in una divisione orizzontale. È quindi possibile rimappare uno di essi nella stringa di tasti sopra, estendendo il gruppo di mappe per coprire anche il caso di divisione verticale. È possibile associare qualsiasi cosa, naturalmente, ma questo sembra per completare la simmetria bene: nnoremap <C-W><C-F> <C-W>vgf. Adesso hai

  • gf - Modifica il file esistente sotto il cursore nella stessa finestra
  • C-Wf - Modifica il file esistente sotto il cursore nella finestra divisa
  • C-WC-F - Modifica il file esistente sotto il cursore in una finestra divisa verticalmente
  • C-Wgf - Modifica il file esistente sotto il cursore in una nuova scheda

Puoi anche andare a una riga particolare nel file, se il nome del file sotto il cursore è seguito da un numero di riga. Se hai

filename:10

puoi modificare il file e spostare il cursore sulla riga 10 con gF. L'equivalente è vero per C-WFuna divisione e C-WgFuna tabpage. Il completamento della simmetria per una divisione verticale non è così semplice qui, ma suggerirei che la C-WC-S-Fmappa ottenuta con nnoremap <C-W><C-S-F> <C-W>vgF, imitando il Fo Shift+ fdalle mappe predefinite come candidato.

Questo :è un esempio, puoi usare qualsiasi carattere che non sia un carattere di nome file (vedi :h 'isfname').


Tutti questi comandi vengono con salsa di mele, come ad esempio

  • espandi i caratteri jolly
  • cerca in più punti della directory corrente, secondo la tua 'path'opzione
  • aggiungendo un'estensione di file al nome del file, secondo la tua 'suffixesadd'opzione
  • altrimenti modifica il nome file specificato per trovare una corrispondenza, in base alla tua 'includeexpr'opzione

Maggiori informazioni su :help gfe gli argomenti della guida per queste varie opzioni.


Se il nome del file sotto il cursore indica un file che non esiste, è meglio usare i comandi di modifica standard con <cfile>, ad esempio

:edit <cfile> // edit non-existent file under cursor in current window
:split <cfile> // edit non-existent file under cursor in split window
:vsplit <cfile> // edit non-existent file under cursor in vertical split window
:tabe <cfile> // edit non-existent file under cursor in new tabpage

e con questi ovviamente puoi usare cose come :spl+10 filenamespostare il cursore su una particolare linea o :tabe+/cologne filenamespostare il cursore alla prima occorrenza di un motivo.


+1 Miglior commento con spiegazione chiara, molto meglio della documentazione suddivisa su più argomenti.
Loves Probability il

8

Usa solo le associazioni per questo:

apertura in una nuova finestra (suddivisa):

nnoremap gf <C-W>f
vnoremap gf <C-W>f

apertura in una nuova scheda:

nnoremap gf <C-W>gf
vnoremap gf <C-W>gf

controlla anche questo: :help CTRL-W_gf


Questi funzionano definitivamente per te? Vim non sembra volermi rimappare gfa qualcos'altro. Anche nnoremap gf :echo "hello"<CR> ancora apre il file sotto il cursore in un nuovo buffer (e sì, ho acquistato vimrc).
tandrewnichols,

Ah, non importa - ho un plugin che interferisce.
tandrewnichols,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.