A volte, ti troverai in una situazione in cui desideri apportare modifiche a più file. Oppure potresti voler copiare il contenuto di un file in un altro. Se sei in modalità GUI, puoi semplicemente aprire i file in qualsiasi editor di testo grafico, come gedit, e usare CTRL+C e CTRL+V per copiare/incollare il contenuto. In modalità CLI, non è possibile utilizzare tali editor. Nessun problema! Dove c'è vim editor, c'è un modo! In questo tutorial impareremo a modificare più file contemporaneamente usando l'editor Vim. Credimi, questa è una funzionalità Vim molto interessante!
Installa Vim su Linux
L'editor Vim è disponibile nei repository ufficiali della maggior parte delle distribuzioni Linux. Quindi puoi installarlo usando il gestore di pacchetti predefinito.
Ad esempio, su Arch Linux e le sue varianti puoi installarlo usando il comando:
$ sudo pacman -S vim
Su Debian , Ubuntu :
$ sudo apt-get install vim
Su RHEL , CentOS :
$ sudo yum install vim
Su Fedora :
$ sudo dnf install vim
Su openSUSE :
$ sudo zypper install vim
Modifica più file alla volta utilizzando l'editor Vim in Linux
Potrebbero esserci molti modi per modificare multipli con l'editor Vim. Conosco due metodi.
Metodo 1
Ho due file e precisamente file1.txt e file2.txt , con un mucchio di parole casuali. Diamo un'occhiata a loro.
$ cat file1.txt ostechnix open source technology linux unix
$ cat file2.txt line1 line2 line3 line4 line5
Ora, modifichiamo questi due file alla volta usando l'editor Vim. Per farlo, esegui:
$ vim file1.txt file2.txt
Vim visualizzerà il contenuto dei file in ordine. Verrà mostrato prima il contenuto del primo file, poi il secondo file e così via.

Modifica più file usando Vim Editor
Passa da un file all'altro
Per passare al file successivo, digita:
:n

Passa da un file all'altro nell'editor Vim
Per tornare al file precedente, digita:
:N
Qui, N è la maiuscola (digitare MAIUSC+n).
Inizia a modificare i file come fai con l'editor Vim. Premi 'i' per passare alla modalità interattiva e modificare i contenuti a tuo piacimento. Al termine, premere ESC per tornare alla modalità normale.
Vim non ti permetterà di passare al file successivo se ci sono modifiche non salvate. Per salvare le modifiche nel file corrente, digita:
ZZ
Tieni presente che sono lettere maiuscole doppie ZZ (MAIUSC+zz).
Per abbandonare le modifiche e passare al file precedente, digita:
:N!
Per visualizzare i file attualmente in fase di modifica, digitare:
:buffers

Visualizza i file nel buffer in VIm
Vedrai l'elenco dei file caricati in fondo.

Elenco di file nel buffer in Vim
Per passare al file successivo, digita :buffer seguito dal numero del buffer. Ad esempio, per passare al primo file, digita:
:buffer 1
Oppure, fai semplicemente:
:b 1

Passa al file successivo in Vim
Ricorda solo questi comandi per passare facilmente 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. :b number # Go to n'th file (E.g :b 2) :bw # Close current file.
Apertura di file aggiuntivi per la modifica
Attualmente stiamo modificando due file, ovvero file1.txt, file2.txt. Potresti voler aprire un altro file chiamato file3.txt per la modifica. Cosa farai? È facile! Digita semplicemente :e seguito dal nome del file come di seguito.
:e file3.txt

Apri file aggiuntivi per la modifica in Vim
Ora puoi modificare file3.txt.
Per vedere quanti file sono attualmente in fase di modifica, digita:
:buffers

Visualizza tutti i file nei buffer in Vim
Tieni presente che non puoi passare da un file aperto all'altro con :e utilizzando :n o :N . Per passare a un altro file, digita :buffer seguito dal numero del buffer del file.
Copiare il contenuto di un file in un altro
Sai come aprire e modificare più file contemporaneamente. A volte, potresti voler copiare il contenuto di un file in un altro. È anche possibile. Passa a un file a tua scelta. Ad esempio, supponiamo che tu voglia copiare il contenuto di file1.txt in file2.txt.
Per farlo, passa prima a file1.txt:
:buffer 1
Posiziona il cursore di spostamento davanti a una riga da copiare e digita yy strappare (copiare) la linea. Quindi, passa a file2.txt:
:buffer 2
Posiziona il cursore del mouse nel punto in cui desideri incollare le righe copiate da file1.txt e digita p . Ad esempio, vuoi incollare la riga copiata tra line2 e line3. Per farlo, posiziona il cursore del mouse prima della riga e digita p .
Esempio di output:
line1 line2 ostechnix line3 line4 line5

Copiare il contenuto di un file in un altro file usando Vim
Per salvare le modifiche apportate nel file corrente, digita:
ZZ
Ancora una volta, tieni presente che questa è la doppia ZZ maiuscola (MAIUSC+z).
Per salvare le modifiche in tutti i file e uscire dall'editor di vim. digita:
:wq
Allo stesso modo, puoi copiare qualsiasi riga da qualsiasi file in altri file.
Copiare l'intero contenuto del file in un altro
Sappiamo come copiare una singola riga. E l'intero contenuto del file? È anche possibile. Diciamo che vuoi copiare l'intero contenuto di file1.txt in file2.txt.
Per farlo, apri prima il file2.txt:
$ vim file2.txt
Se i file sono già caricati, puoi passare a file2.txt digitando:
:buffer 2
Sposta il cursore nel punto in cui desideri copiare il contenuto di file1.txt. Voglio copiare il contenuto di file1.txt dopo la riga 5 in file2.txt, quindi ho spostato il cursore sulla riga 5. Quindi, digita il seguente comando e premi il tasto INVIO:
:r file1.txt

Copiare l'intero contenuto di un file in un altro file
Ecco, r significa leggi .
Ora vedrai il contenuto di file1.txt incollato dopo la riga 5 in file2.txt.
line1 line2 line3 line4 line5 ostechnix open source technology linux unix

Copiare l'intero contenuto del file in un altro file usando Vim
Per salvare le modifiche nel file corrente, digita:
ZZ
Per salvare tutte le modifiche in tutti i file caricati e uscire dall'editor di vim, digita:
:wq
Metodo 2
L'altro metodo per aprire più file contemporaneamente è utilizzare -o o -O bandiere.
Per aprire più file in finestre orizzontali, esegui:
$ vim -o file1.txt file2.txt

Apri più file contemporaneamente in Vim
Per passare da una finestra all'altra, premi CTRL-w w (ad esempio, premi CTRL+w e di nuovo premi w ). Oppure, usa le seguenti scorciatoie per spostarti tra le finestre.
- CTRL-w k - finestra superiore
- CTRL-w j - finestra inferiore
Per aprire più file in finestre verticali, esegui:
$ vim -O file1.txt file2.txt file3.txt

Apri più file in finestre verticali in Vim
Per passare da una finestra all'altra, premi CTRL-w w (ad esempio, premi CTRL+w e di nuovo premi w ). Oppure, usa le seguenti scorciatoie per spostarti tra le finestre.
- CTRL-w l - finestra sinistra
- CTRL-w h - finestra destra
Tutto il resto è uguale a quello descritto nel metodo 1.
Ad esempio, per elencare i file attualmente caricati, eseguire:
:buffers
Per passare da un file all'altro:
:buffer 1
Per aprire un file aggiuntivo, digita:
:e file3.txt
Per copiare l'intero contenuto di un file in un altro:
:r file1.txt
L'unica differenza nel metodo 2 è una volta che hai salvato le modifiche nel file corrente utilizzando ZZ , il file si chiuderà automaticamente. Inoltre, devi chiudere i file uno per uno digitando :wq . Ma se avessi seguito il metodo 1, digitando :wq tutte le modifiche verranno salvate in tutti i file e tutti i file verranno chiusi contemporaneamente.
Per maggiori dettagli, fare riferimento alle pagine man.
$ man vim
Lettura consigliata:
- Come commentare più righe contemporaneamente in Vim Editor
- Come gestire i plugin di Vim usando Vundle su Linux
- Come utilizzare la funzione di controllo ortografico in Vim Text Editor
Ora sai come modificare più file usando l'editor vim in Linux. Come puoi vedere, la modifica di più file non è così difficile. L'editor Vim ha funzionalità più potenti.
Scriveremo altri suggerimenti Vim nei giorni a venire. Resta sintonizzato!