scorciatoia per aprire un file sotto il cursore in una finestra già aperta


12

In vim puoi aprire un file sotto il cursore usando il gfcomando.

Si può anche facilmente aprire quel file in una nuova finestra divisa colpendo <c-w> f. Questa è una funzione davvero piacevole e che fa risparmiare tempo.

Tuttavia, non riesco a capire come aprire il file in una finestra divisa già aperta (senza crearne una nuova).


1
Potresti voler dare un'occhiata alla previewfunzione (vedi :h preview).
Stéphane Chazelas,

Bene, uso anche l'anteprima. Tuttavia non volevo aprire il file nella finestra di anteprima ma esplicitamente in un altro.
psibar

Risposte:


10

Ho messo insieme tutti i pezzi per fare il trucco. Il modo migliore è creare una mappatura personalizzata per tutti i comandi:

 map <F8> :let mycurf=expand("<cfile>")<cr><c-w> w :execute("e ".mycurf)<cr><c-w>p

Spiegazione:

  • map <F8> mappa su "F8" i comandi che seguono
  • let mycurf=expand("<cfile>") ottiene il nome file sotto il cursore e lo salva mycurf
  • <c-w>w cambia lo stato attivo alla successiva finestra divisa aperta
  • execute("e ".mycurf) apre il file salvato in mycurf
  • finalmente <c-w>pcambia lo stato attivo alla finestra precedente (da dove veniamo effettivamente)

1

Non può essere fatto facilmente. Un [count]prima <C-w>fspecifica quale corrispondenza file 'path'è aperta, non seleziona una finestra esistente. Solo per il <C-w>wcomando, [count]significa "vai al numero di finestra esistente".

Per ottenere quella funzionalità, è necessario scrivere una mappatura personalizzata quale

  • prende il file, va alla [count]finestra ed emula il gfcomando, oppure
  • clona il buffer corrente nella [count]finestra ed esegue gf

Sì, l'unico modo per farlo è scrivere una mappatura personalizzata. Avevo solo dei problemi a prendere il file sotto il cursore. Ma penso di averlo capito ora
psibar

1

Ho cercato la stessa funzione di VIm e ho scoperto questa soluzione che funziona come un incantesimo:

map <F8> :vertical wincmd f<CR>

Pagina di origine .


0

Questo ha funzionato per me:

function! OpenFileInPrevWindow()
    let cfile = expand("<cfile>")
    wincmd p
    execute "edit " . cfile
endfunction

nmap ,f :call OpenFileInPrevWindow()<CR>
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.