Navigazione di più file


11

Se apro vim con più file sulla riga di comando, ad esempio vim debug.log*quale carico debug.log, debug.log.1e debug.log.2, posso navigare tra di loro, assegnarli a più finestre ( :split/ :vsplit) o simili?

L'unica scorciatoia che conosco per questa modalità operativa è :n, che carica il file successivo nell'elenco. Cosa posso fare di più in questa modalità operativa multi-file? (o quale argomento di aiuto copre questo?)


3
:previous(o :prev) è l'inverso di :ne torna indietro di un file.
Ricco

Risposte:


13

L'argomento di aiuto più rilevante è :ls, noto anche come :fileso :buffers.

Nel tuo vim debug.log*esempio, se hai dato il :lscomando, vedresti:

:ls
  1 %a   "debug.log"                    line 1
  2      "debug.log.1"                  line 0
  3      "debug.log.2"                  line 0
Press ENTER or type command to continue

... indicando che il primo è il buffer attivo.

Per aprire debug.log.2nella finestra corrente, dare il comando :b 3o :b debug.log.2per mostrare il buffer 3.

Per dividere la finestra e aprire il buffer 2 in essa, dare il :sb 2comando. La versione con divisione verticale di questo è :vert sb 2.

Esistono molte varianti del :bcomando; sfoglia gli argomenti della guida citati qui per avere un'idea.


Inoltre, puoi invocare vim -o debug.log*per aprire tutti i file, ognuno nella propria divisione, o vim -O debug.log*per aprirli ciascuno in una divisione verticale.


6

Oltre alla funzionalità raw di vim menzionata da 200_success, l'ecosistema di Vim è pieno di plugin per fornire funzionalità extra, come:

Tuttavia, prima di iniziare a utilizzare i plug-in, è meglio comprendere a fondo buffer e windows in vim.


1
Leggi la nostra politica sulle risposte alle raccomandazioni dei plug-in e aggiungi alcuni dettagli su come questi plug-in possano essere utili all'utente.
200_successo

5

Puoi anche aprire vim con parametri diversi.

Apre i file nelle schede:

vim -p debug.log*

Apre i file in gruppi verticali:

vim -o debug.log*

Esiste un plugin interessante e abbastanza potente chiamato CtrlSpace:

https://github.com/szw/vim-ctrlspace

È molto utile se devi lavorare con molti file. Semplicemente puoi immaginare ctrl-space come proprio elenco buffer per ogni scheda. Fornisce un modo molto semplice per navigare tra i file, come afferma l'autore:

Vim-CtrlSpace è un plugin Vim per controllare e organizzare il tuo spazio di lavoro in Vim. Compresa la gestione di buffer, file, schede, sessioni e infine progetti. Il suo approccio è in qualche modo unico, ma sicuramente ti sentirai a casa, soprattutto se usi finestre, schede, buffer già divisi, ecc.


Benvenuti in Vi / Vim! Si prega di leggere la nostra politica sulle risposte alle raccomandazioni dei plugin e aggiungere alcuni dettagli su come esattamente il plugin affronta la domanda.
200_successo


4

Se si desidera aprire un determinato file senza dover passare attraverso :ls, è possibile utilizzare uno dei seguenti:

  • :vs filename apre il file in una divisione verticale
  • :sp filename fa lo stesso, ma in una divisione orizzontale
  • :tabe filename si apre in una nuova scheda

Vale anche la pena sapere che se non si specifica un nome file, si aprirà una nuova suddivisione / scheda del file corrente, che può essere utile per file lunghi.


2
:tè il comando copia. Per :tabeditte hai bisogno almeno :tabe.
Tommaso

Oh dang, hai perfettamente ragione. Grazie, lo modificherò!
Tom,

0

Esistono alcune scorciatoie utili per la navigazione di più file:

  • CTRL-^(dove si Ntrova il numero del buffer) per passare al file precedentemente modificato.
  • N CTRL-^(dove si Ntrova il numero del buffer) per passare al buffer specifico.

    Per esempio:

    • 1Control+^ - vai al 1 ° buffer
    • 2Control+^ - vai al 2 ° buffer
    • eccetera.

    Questo equivale a :buffer N.

  • Utilizzare :Ex/ :Sex/ :Vexper navigare nella directory corrente.

  • Usa :tabsinvece ( vim -p) con alcune scorciatoie personalizzate .vimrccome:

    " TABS
    " To create a new tab (Control-T)
    nnoremap <C-t> :tabnew<CR>
    inoremap <C-t> <Esc>:tabnew<CR>
    " Tab Navigation (Control+Left <-> Control-Right, Shift+H <-> Shift+L).
    nnoremap <S-h> gT
    nnoremap <S-l> gt
    nnoremap <A-Left> gT
    nnoremap <A-Right> gt
    nnoremap <C-S-Tab> gT
    nnoremap <C-Tab> gt
    " Tab Close (Control-W)
    nnoremap <C-BS> :tabclose<CR>
    inoremap <C-BS> <Esc>:tabclose<CR>
    " Close All (Control-Q)
    nnoremap <C-q> :qa<CR>
    inoremap <C-q> <Esc>:qa<CR>
    
  • Utilizzare :ba/ :vert baper dividere, saltare nel buffer selezionato tramite Control+w, w/ W, quindi impostarlo sulla finestra corrente ( :on).

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.