Cominciare con Vim su Linux

Immagina di essere immerso fino al collo nel tuo sistema Linux, cercando disperatamente di modificare un file e ogni tentativo sembra una decifrazione di un codice antico. Se più clicchi in giro, più ti senti perso, perché non rivolgersi a Vim per Linux?

In questo tutorial, svelerai i segreti di Vim, un editor di testo ampiamente acclamato, trasformandoti da un vagabondo di Linux in un virtuoso della riga di comando.

Prendi la tua spada metaforica (aka la tua tastiera) e avventurati nel mondo di Vim!

Prerequisiti

Ecco alcuni prerequisiti per padroneggiare Vim sul tuo sistema Linux:

  • A Linux OS – This tutorial uses an Ubuntu 22.04 LTS.

Creazione e modifica di file con Vim per Linux

Vim opera in diverse modalità, ognuna con capacità di modifica uniche. Ma prima di passare a queste modalità, devi imparare come creare e modificare file con Vim su Linux.

Per creare e modificare un file con Vim, segui questi passaggi:

1. Apri un terminale ed esegui il seguente comando vim per creare un file chiamato sshd_config (arbitrario) con Vim. Questo comando crea automaticamente il file se non esiste. In caso contrario, il file esistente si apre su Vim.

L’interfaccia di Vim assomiglia a quella riportata di seguito se hai creato un nuovo file, il che indica che Vim è attualmente in modalità comando. La modalità comando è una delle modalità principali in cui interagisci con il testo nell’editor Vim.

Creating a new file via Vim for Linux

2. Successivamente, copia il testo sottostante negli appunti, che contiene impostazioni di esempio per il server SSH puramente a scopo dimostrativo e non riflette configurazioni effettive del server.

3. In Vim, premi i, il comando per entrare in modalità inserimento. La modalità inserimento è anche una delle modalità principali in Vim, che ti consente di digitare e modificare il contenuto del tuo documento.

Una volta entrato nella modalità inserimento, vedrai che la riga di stato visualizza — INSERT — come nel seguente esempio.

Entering the insert mode on Vim

4. Ora, premi Ctrl+Shift+V o Shift+Insert per incollare il testo copiato al passo due nell’editor Vim, e premi Esc per uscire dalla modalità inserimento (passa alla modalità comando).

Nota che lo stato — INSERT — scompare, il che indica che sei tornato in modalità comando.

Inserting the copied text into Vim

5. Infine, digita il comando :w e premi Invio per salvare le modifiche al file senza chiudere l’editor.

Quando necessario, puoi eseguire gli altri comandi seguenti:

Command Details
:q! Quit the editor without saving the changes.
:w! Write the current file changes forcefully.
:wq Save the changes and quit the editor (or :wq! to save and quit forcefully).
e! Revert to the last saved version of the file.
Saving the changes

La riga di stato visualizza la dimensione dei dati scritti nel file, che in questo caso è di 23 righe (23L) e 624 byte (624B).

Verifying the changes are saved

Navigazione nei testi in Vim

Dopo aver acquisito l’arte di creare e modificare file con Vim, ti immergerai in una skill cruciale che aumenterà la tua abilità di modifica del testo: la navigazione in Vim. Una navigazione efficace è la chiave per sbloccare il potenziale di Vim, come esplorare un vasto paesaggio.

Per vedere come navigare nei testi in Vim, procedi nel seguente modo:

1. Ora, digita il comando :set nu e premi Invio per impostare la numerazione delle righe su Vim. La numerazione delle righe è una funzionalità cruciale dell’editor quando si lavora con codice o documenti di grandi dimensioni.

Se avrai successo, vedrai i numeri di riga nell’editor, come mostrato di seguito.

Setting the line numbering

2. Successivamente, passa alla modalità comando (Esc) e premi il comando gg per saltare all’inizio del file.

Jumping to the beginning of the file

3. Successivamente, premi uno qualsiasi dei seguenti comandi fino a raggiungere l’inizio del parametro MaxSessions e premi $ per spostare il cursore alla fine della riga.

Command Details
h Move the cursor to the left or the previous character.
j Move the cursor one line down.
k Move the cursor one line up.
l Move the cursor to the right or the next character.
Placing the cursor at the end of the MaxSessions line

4. Ora, sostituisci un testo con il seguente:

  • Premi i per passare alla modalità inserimento.
  • Elimina il valore (Backspace o Delete), che è 10, e sostituiscilo con 25.
  • Passa alla modalità comando (Esc) e salva le modifiche (:w).
Editing a text in Vim

Inserimento di testi in punti specifici

Vim offre una serie di comandi che consentono un controllo preciso su dove e come inserire nuovi testi (esattamente dove ne hai bisogno). Questa funzione funziona sia che tu desideri inserire all’inizio di una riga, subito dopo la posizione attuale del cursore, o alla fine di una riga.

Per vedere come funziona l’inserimento di testi in punti specifici, esegui quanto segue:

1. Premi I (Shift+I) mentre il cursore è alla fine della riga per entrare nella modalità di inserimento e contemporaneamente posizionare il cursore all’inizio della riga.

Inserting at the beginning of the line

2. Passa alla modalità comando (Esc), sposta il cursore su qualsiasi altro carattere nella riga di testo corrente (cioè, all’inizio) e premi il comando a.

Questo comando passa Vim alla modalità di inserimento e posiziona il cursore sul carattere successivo rispetto alla sua posizione precedente. Questo comportamento è utile per aggiungere rapidamente testo nel mezzo di una riga senza disturbare il testo esistente.

Inserting at the current cursor point

3. Inserisci ‘y’ per correggere la chiave MaxSession come MyaxSession, come mostrato di seguito, e torna alla modalità comando (Esc).

Noterai che il nuovo carattere ‘y‘ appare immediatamente dopo il primo.

Inserting a character within a line of text

4. Ora, modifica la riga di testo come segue:

  • Premi Shift+A per eseguire il comando A, che consente a Vim di entrare nella modalità di inserimento e spostare il cursore alla fine della riga. Questo comportamento è ideale per aggiungere rapidamente contenuti come un punto e virgola o per concludere una frase.
  • Aggiungi 0 alla fine della riga, il che cambia il valore in 250.
  • Torna alla modalità di comando (Esc) e salva le modifiche (:w).
Appending text to the end of the line

Apertura di Nuove Righe

Ora che hai padroneggiato il posizionamento strategico del testo nei tuoi file Vim, è il momento di esplorare una competenza che manterrà i tuoi contenuti ben strutturati e organizzati. La capacità di aprire nuove righe in Vim è il tuo biglietto da visita per un testo più leggibile e esteticamente piacevole.

Per aprire nuove righe, sopra o sotto, completa i seguenti passaggi:

1. Mentre sei nella modalità di comando, premi o per aprire una nuova riga sotto la riga di testo corrente e aggiungi il seguente commento riguardante le MyaxSessions.

# Nota: Adatta maxSessions in base al carico del server
Adding a new line below the current line of text

2. Passa alla modalità di comando (Esc), posiziona il cursore su un’altra riga di testo e premi O (Shift+O) per aggiungere una nuova riga sopra la riga di testo corrente.

Adding a new line above the current line of text

3. Ora, aggiungi il seguente comando al file e salva le modifiche (:w).

# Fai attenzione ai livelli di log per evitare problemi di prestazioni
Populating the new line of text

Eliminazione di Parole e Righe di Testo

Vim fornisce comandi efficienti per eliminare e sostituire testo oltre ai tasti di base Elimina o Backspace. Questi comandi sono accessibili dalla modalità di comando, che ti consente di apportare modifiche e correzioni rapidamente, consentendoti di eliminare o sostituire caratteri, parole o intere righe.

Per eliminare e sostituire testi in Vim per Linux, esegui quanto segue:

1. Sposta il cursore al parametro MyaxSessions, nello specifico al carattere ‘y’.

Placing the cursor at a specific character

2. Successivamente, premi x per rimuovere istantaneamente il carattere sotto il cursore, che, in questo caso, è ‘y’.

Il parametro tornerà al suo testo originale come MaxSessions, come mostrato di seguito.

Deleting a character under the cursor

3. Sposta il cursore alla riga PermitRootLogin no:.

Positioning the cursor

4. Ora, premi "_dd per eliminare l’intera riga di testo, indipendentemente dalla posizione del cursore.

La parte "_ nel comando specifica il registro black-hole, che scarta il testo eliminato (non verrà memorizzato in nessun registro).

Vim ha il suo set di registri dove puoi memorizzare testi, e non specificare il registro black-hole fa sì che il comando tagli il testo anziché eliminarlo.

Se avrai successo, noterai che la riga PermitRootLogin no: è sparita.

Deleting an entire line of text

5. Mentre sei in modalità comando, posiziona il cursore all’inizio della parola Specifies nella riga # Specifica se root può effettuare l’accesso tramite ssh.

Placing the cursor at the beginning of a word

6. Infine, esegui il comando "_dw, che rimuove la parola Specifies come mostrato di seguito:

Deleting a word

Opzionalmente, puoi optare per i seguenti comandi per operazioni aggiuntive di eliminazione:

Command Details
"_d$ Delete texts from the cursor position to the end of the line.
"_D Deletes from the cursor position to the end of the line.
"_d^ Deletes from the cursor position to the first non-whitespace character of the line
"_dgg Deletes from the cursor position to the beginning of the file.
"_dG Deletes from the cursor position to the end of the file.

Sostituzione di Caratteri e Righe di Testo

Dalle eliminazioni strategiche in Vim, rivolgi la tua attenzione al lato opposto della medaglia: sostituire caratteri e righe di testo. Sostituire è la pennellata che ti permette di perfezionare e ridefinire il tuo testo in modo preciso. La buona notizia è che Vim ti consente di eseguire sostituzioni di caratteri singoli o intere righe di testo.

Per sostituire caratteri e righe di testo, procedi con questi passaggi:

1. Posiziona il cursore sulla riga AuthorizedKeysFile .ssh/authorized_keys, in particolare sul carattere ‘z’ in authorized, come mostrato di seguito:

Positioning the cursor

2. Una volta posizionato, premi r, che dice a Vim che stai per sostituire il carattere sotto il cursore e inserisci il carattere ‘s’. Il comando r ti permette di sostituire un carattere senza entrare prima nella modalità di inserimento (i).

Nota che il carattere ‘z’ in authorized è stato sostituito con il carattere ‘s’, cambiando la parola in authorised.

Replacing a character within a line of text

3. Successivamente, posiziona il cursore sul carattere ‘z’ in AuthorizeKeysFile.

Placing the cursor on another character

4. Premi R (Shift+R) per entrare nella modalità di sostituzione, digita ‘s’ per sostituire il carattere, ma non uscire ancora dalla modalità di sostituzione.

A differenza del comando r, che ti consente solo di sostituire un carattere, il comando R ti permette di sovrascrivere i testi esistenti mentre digiti continuamente.

Entering replace mode

5. Alla fine, copia il seguente testo negli appunti, sposta il cursore all’inizio del file e incolla il testo che hai copiato (Ctrl+Shift+V o Shift+Insert).

Dato che sei ancora in modalità sostituzione, incollare il testo sostituisce la prima riga nel file.

Overwriting an entire line of text via the replace mode

Ricerca di testi all’interno di un file

Coinvolto nel rifare o annullare azioni, la capacità di cercare testi all’interno di un file è utile. Vim ti consente di cercare parole, frasi o schemi specifici nel tuo file.

Immagina l’enorme aumento di produttività quando puoi rapidamente individuare e manipolare sezioni di testo specifiche senza scorrere senza meta.

Per cercare testi in un file, segui questi passaggi:

1. Sposta il cursore all’inizio del file (comando gg), premi / (barra obliqua) per avviare la modalità di ricerca, digita il termine di ricerca log e premi Invio.

Questo comando cerca il termine specificato (log), spostando il cursore in avanti alla prossima occorrenza del termine.

Searching for the term “log”

2. Successivamente, premi n per spostarti alla successiva occorrenza del termine.

Moving to the next occurrence of the term “log”

3. Ora, premi N (Shift+N) per tornare alla precedente occorrenza.

Moving back to the previous occurrence of the term “log”

Inoltre, Vim offre altre scorciatoie di ricerca come la seguente per una maggiore flessibilità nella ricerca:

Command Details
? Initiates a reverse search of a term.
* Performs a forward search for the word under the cursor. Continue pressing * to cycle through further occurrences of the word until it loops back to the first instance.
# Performs a backward search for the word under the cursor. Continuously pressing # works similarly to the * command but cycles until it loops back to the last instance.

Combinare la Ricerca con Altri Comandi su Vim

Mentre navighi nei paesaggi intricati di Vim, perché non aggiungere un altro livello alla tua maestria nell’editing del testo – combinando la ricerca con altri comandi?

Vim ti permette di eseguire azioni dalla sostituzione di occorrenze specifiche alla cancellazione di righe che corrispondono a un certo modello.

Per apprezzare la sinergia tra ricerca e azione in Vim, esegui quanto segue:

1. Mentre sei in modalità comando, posiziona il cursore nel punto di partenza da cui desideri iniziare la cancellazione (ossia la prima occorrenza del termine di ricerca log).

Positioning the cursor at the first occurrence of the term “log”

2. Successivamente, digita d/log e premi Invio per cancellare tutto dalla posizione del cursore alla prossima occorrenza del termine log, come mostrato di seguito.

Deleting everything from the cursor up to the next occurrence of “log”

3. Annulla l’azione precedente (comando u) e posiziona il cursore alla prima istanza del termine di ricerca log.

Placing the cursor at the first instance of the search term “log”

4. Ora, esegui il seguente comando per cercare e sostituire testi all’interno di un range specifico, dove:

  • :. – Entra in modalità comando (:) alla linea corrente (.).
  • ,$ – Specifica il range per la sostituzione.
  • s/log/logs/g – Substitute all occurrences of the old word (log) with new (logs) globally (g) within the specified range.
Replacing all occurrences of the term “log” with “logs” within a specified rage

Selezione del Testo Mentre sei in Modalità Visuale in Vim

Oltre a fondere l’arte della ricerca con altri comandi in Vim, devi scoprire una funzione che trasforma la tua esperienza di editing del testo. La modalità visuale di Vim ti consente di manipolare il testo in modo più interattivo e visuale. La modalità visuale offre un metodo flessibile ed efficiente per evidenziare e operare su porzioni del tuo testo.

Per selezionare ed editare il testo, puoi scegliere di selezionare ed editare singoli caratteri o selezionare ed editare blocchi di testo, come segue:

1. Sposta il cursore all’inizio del file (comando gg), e premi v per attivare la modalità visuale, come mostrato di seguito.

Entering visual mode

2. Premi $ per spostare il cursore alla fine della riga. Poiché sei nella modalità visuale, il comando evidenzia la riga di testo.

Highlighting a line of text

3. Ora, esegui un’azione di copia e incolla come segue:

  • Premi y per copiare il testo evidenziato nel registro di Vim.
  • Premi G$ per spostare il cursore alla fine dell’ultima riga nel file.
  • Premi p per incollare il testo che hai copiato (specificamente dopo il cursore).
    Nota che il comando p differisce dalle scorciatoie da tastiera nel copiare e incollare testi (Ctrl+Shift+V o Shift+Insert). Quando copi il testo con il comando y, il testo viene memorizzato nel registro di Vim e il comando p incolla il testo dal registro.
Copying and pasting a line of text after the cursor
Copying and pasting a line of text at the cursor’s position

4. Annulla (u) la tua azione precedente, sposta il cursore all’inizio del file (gg) e premi V (Ctrl+V) per entrare nella modalità visuale delle righe.

A differenza della selezione di una singola riga nella modalità visuale, la modalità visuale delle righe ti consente di selezionare più righe di testo, come vedrai nel passaggio seguente.

Entering visual line mode

5. Utilizza il tasto freccia giù per selezionare i caratteri dall’inizio del file fino alla riga Protocollo 2.

Selecting multiple lines of text via visual line mode

6. Premi d per tagliare le righe multiple di testo selezionate.

Cutting multiple lines of text

7. Infine, incolla il testo che hai tagliato nel passaggio sei come segue:

  • Sposta all’ultima riga nel file (G) e crea una nuova riga sotto (o).
  • Torna alla modalità di comando (Esc), e incolla il testo (p).
Pasting multiple lines of text

Conclusione

Congratulazioni! Hai navigato gli intricati regni di Vim per Linux, sbloccando un tesoro di saggezza nell’editing di testo lungo il cammino. Dalla creazione e modifica di file al padroneggiare l’arte della modalità visuale, hai indossato il cappello di un virtuoso di Vim.

Ma le tue avventure sulla riga di comando sono appena iniziate. Perché non esplorare funzionalità avanzate come macro e plugins per personalizzare Vim alle tue esigenze?

Utilizza queste competenze di base per esplorare gli aspetti più profondi di Vim, come la gestione dei file, i pattern di ricerca complessi e lo scripting di Vim per la personalizzazione.

Source:
https://adamtheautomator.com/vim-for-linux/