So di poter aprire più file vim
facendo qualcosa del genere vim 2011-12*.log
, ma come posso passare da un file all'altro e chiuderlo uno alla volta? Inoltre, come posso dire il nome del file corrente che sto modificando?
So di poter aprire più file vim
facendo qualcosa del genere vim 2011-12*.log
, ma come posso passare da un file all'altro e chiuderlo uno alla volta? Inoltre, come posso dire il nome del file corrente che sto modificando?
Risposte:
Prima di tutto, in vim puoi inserire :(due punti) e poi aiutare help
, ala :help
per un elenco di argomenti di auto-aiuto, incluso un breve tutorial. All'interno dell'elenco degli argomenti, sposta il cursore sull'argomento di interesse, quindi premi ctrl]e quell'argomento verrà aperto.
Un buon punto di partenza sarebbe l'argomento
|usr_07.txt| Editing more than one file
Ok, alla tua risposta.
Dopo aver avviato vim con un elenco di file, è possibile passare al file successivo inserendo :next
o :n
in breve.
:wnext
è l'abbreviazione di scrivere le modifiche correnti e quindi passare al file successivo.
C'è anche un analogo :previous
, :wprevious
e :Next
. (Nota che :p
è una scorciatoia per :print
. La scorciatoia per :previous
è :prev
o :N
.)
Per vedere dove ti trovi nell'elenco dei file, inserisci :args
e il file attualmente in fase di modifica apparirà tra []
parentesi.
Esempio:
vim foo.txt bar.txt
:args
risultato:
[foo.txt] bar.txt
puoi aprire un altro file mentre vim è aperto con :tabe filename
e per passare all'altro file digitato :tabn
o :tabp
per il successivo e il precedente di conseguenza.
Le scorciatoie da tastiera gT e gt possono anche essere utilizzate per cambiare scheda quando non si è in modalità di modifica (ovvero non in modalità inserimento, sostituzione ecc.). Su alcuni sistemi Ctrl+ Alt+ Page Upe Ctrl+ Alt+ Page Downconsentono anche il cambio di tabulazione, ma ciò non sempre funziona (ad esempio, non funzionerà nel terminale OS X "out of the box").
E puoi vedere il nome del file nella parte superiore dell'app vim.
vim -p file1 file2
:argadd filename
e poi :next
ad esso. Allo stesso modo, è possibile utilizzare :argdel filename
per rimuovere uno dei file in modifica.
Comandi per passare da un buffer all'altro:
:bf # Go to first file.
:bl # Go to last file
:bn # Go to next file.
:bp # Go to previous file.
:bw # Close file.
:help buffer
per trovare maggiori informazioni
Per conoscere il nome del file utilizzo Ctrl+ G, :file
o:f
:bw
chiudi il file haha. Non dimenticare di leggere la guida in :bw
cui dice che dovresti usarlo solo se sai cosa stai facendo. Non è un grosso problema, ma a meno che tu non voglia cancellare tutti i segni e le informazioni sul file, usare meglio :bd
o :q
come una persona normale
:bw
in caso di curiosità: vi.stackexchange.com/questions/2212/…
Un'altra opzione a parte le risposte fornite, è quella di dividere la finestra con:
:sp
:vsp
:vsp
è per la divisione verticale. Quindi utilizzare Ctrl+W <ARROW_KEYS>
per spostarsi nei riquadri.
:vs
invece di:vsp
Ctrl+W, v
per la divisione verticale e Ctrl+W, s
per la divisione orizzontale.
CTRL+W
per anni e recentemente faccio un sacco di editing VI all'interno delle pagine web. Ogni volta, digito il comando senza nemmeno pensare e ... whammmm ... la scheda del browser è ANDATA! Continuo a dimenticare. Ho davvero bisogno di imparare una nuova scorciatoia.
Ho fatto una domanda simile a superutente,
"Come copiare e incollare tra diverse finestre bash e file aperti con VI?"
La risposta alla mia domanda è che non puoi, ma puoi aprire due file in una finestra bash usando il :split
comando di VIM :
$ vim file1
, apri un secondo file all'interno di VIM usando il :split file2
comando.$ vim -o file1 file2
da bash.:q
chiude e si :q!
forza la chiusura.Il mio bash è in bianco e nero, quindi il nome del file di ogni schermata è definito come una linea "selezionata" invertita con il nome del file citato lì.
Woot!
Trovo che il metodo più conveniente per modificare più file sia usando le schede. Puoi aprire più file in schede separate tramite la riga di comando in questo modo:
vim -p file1.txt file2.txt
Oppure, se hai già aperto VIM, puoi aprire un nuovo file in una nuova scheda in questo modo:
:tabe file2.txt
Dopo aver aperto le schede, utilizzare gt
per visualizzare la scheda successiva e gT
per visualizzare la scheda precedente.
Puoi anche passare alla prima scheda con 1gt
, alla seconda scheda con 2gt
, ecc.
Puoi chiudere le schede usando :tabc
Infine puoi spostare la scheda corrente nella n
posizione con :ntabm
dove n
c'è un numero maggiore o uguale a 0
.
Ci sono molti modi per farlo. Il primo, forse il meno conveniente, è chiamare vim
con i file che si desidera modificare - creare:
vim first_file second_file ...
Chiama i due file in due buffer. Per passare da un file a un altro, utilizzare :n
e :N
. Per elencare i file che stai modificando, :args
farà il lavoro. :help buffer
ti aiuterà di più su questo.
Questo dovrebbe rispondere alla tua domanda. Ma qui ci sono ulteriori informazioni:
C'è un modo per modificare i tuoi file in un modo più conveniente dividendo la schermata della tua console usando vim . Per fare ciò, apri due frame con :split
( :sp
) o :vsplit
( :vs
) mentre usi vim . Quindi navigare in questi frame utilizzando la combinazione Ctrl+ W> Ctrl+ W. È anche possibile utilizzare Ctrl+ W+ la freccia o il tasto ( H, J, Ko L) corrispondente al frame successivo. Al termine, modifica il file desiderato :e file_name
. :help opening-window
ti aiuterà di più su questo.
Ora, se vuoi vedere le differenze tra i file, usa l' -d
argomento o chiama il programma vimdiff (è lo stesso) con i file corrispondenti. :help diff
ti aiuterà di più su questo.
vim -d first_file second_file ...
Per favore fatemi sapere se avete qualche problema.
Mi piace usare le finestre divise - sia orizzontali che verticali - per modificare più file.
Uso tmux per gestire quelle finestre più facilmente
https://tmux.github.io/ "Che cos'è un multiplexer terminale? Ti consente di passare facilmente tra diversi programmi in un terminale, scollegarli (continuano a funzionare in background) e ricollegarli a un terminale diverso. E fare un molto di più. Vedi il manuale. "
Esempio: guardando i file o eseguendo i test a destra, modificando i file di test e di origine a sinistra:
:e #(filename)
per alternare tra due file aperti
:p
per il file precedente
:n
per il prossimo file