8 consigli e trucchi Vim che ti renderanno un utente Pro

Breve : In questo articolo, ti mostrerò alcuni dei miei trucchi preferiti di Vim con esempi pratici. Se non utilizzi Vim, questi suggerimenti potrebbero non fornire i motivi per l'utilizzo di Vim, ma se lo utilizzi già, diventerai sicuramente un utente Vim migliore.

Anche se recentemente ho iniziato ad usare Atom sempre di più, riesco a malapena a passare un giorno senza usare Vim. Non perché sono costretto a farlo. Ma perché mi sento così a mio agio.

Sì, comodo . Una parola molto strana quando parli di Vi o di qualcuno dei suoi cloni non è vero? E sono d'accordo, non è certamente l'editor di testo più intuitivo .

Ma con un po 'di pratica e allenando un po' la tua memoria, puoi eseguire compiti di editing apparentemente complessi solo con pochi tasti. Qualcosa che non ho mai veramente trovato con nessun altro editor di testo da riga di comando per Linux.

Ma, invece di scrivere ancora-un-altro-vi-introduzione, ho scelto oggi per farti toccare il vero potere dietro Vi (m) presentandoti alcuni trucchi che uso davvero - e mi manca nella maggior parte se non tutti gli altri editor. Non ti darò la spiegazione completa di tutti quei trucchi, ma ti incoraggio vivamente a provare a sperimentarli fino a quando non riesci a capire come funzionano.

Se ti è piaciuto Vim e desideri dominarlo completamente, puoi anche iscriverti al corso Vim online fornito da Linux Training Academy.

8 trucchi Vim per ottenere di più da esso

Permettetemi di ripetere: vi incoraggio vivamente a provare questi esempi da soli. Sfortunatamente, WordPress non è necessario fare un buon lavoro per preservare il contenuto esatto dei miei esempi e comandi - specialmente per quanto riguarda le linee vuote o le virgolette. Quindi, per tua comodità, puoi scaricare i campioni usati qui dal link sottostante:

Scarica gli esempi Vim per la pratica

Ogni esempio viene fornito con il testo originale (.orig) e uno script Bash (.sh) che richiama Vim con il comando illustrato in questo articolo.

1. Modifica della capitalizzazione in Vim

Sono l'unico ad usare quella funzione? O è perché sono condannato a lavorare con persone che credono che SCRIVERE TUTTE LE TAPPE È FREDDO?

In ogni caso, durante la programmazione, quando si aggiunge una nota di copyright o anche dopo una copia-incolla, non è così raro dover modificare la maiuscola di testo. A tale riguardo, Vim è molto più evoluto rispetto al Vi originale. E benedico ogni giorno Bram Moolenaar per la sua grande opera:

Testo originale
copyright (c) di

L'utilizzo delle opere è consentito a condizione che questo strumento sia mantenuto con le opere, in modo tale che ogni entità che utilizza i lavori sia informata di questo strumento.

Disclaimer: i lavori sono senza garanzia.

comandi
~Scatola dell'interruttore
: $ norm gUUConverti l'ultima riga in maiuscolo {non in Vi}
Testo modificato
C opyright (c) di

L'utilizzo delle opere è consentito a condizione che questo strumento sia mantenuto con le opere, in modo tale che ogni entità che utilizza i lavori sia informata di questo strumento.

ESCLUSIONE DI RESPONSABILITÀ: LE OPERE SONO SENZA GARANZIA.

2. Suggerimenti per la ricerca e la sostituzione di Vim

Questo uso ogni giorno Perché questo non è ancora presente in tutto l' editor di testo? Ovviamente, la maggior parte degli editor ha un qualche tipo di funzione di sostituzione della ricerca. Ma quanti hanno davvero il potere di regex e schemi di sostituzione? Naturalmente, questo è più difficile da padroneggiare rispetto alle sostituzioni di base delle stringhe . Ma non potrei vivere senza quella caratteristica. A quel punto, a volte mi vedo copiare / incollare da alcuni editor della GUI in un terminale che corre avanti e indietro. Ma Vi ha quello incorporato da 40 anni circa ...

Testo originale
Un ragazzo ha la possibilità di dipingere un recinto nero ogni giorno? Questo ha messo la cosa sotto una nuova luce. Ben Rogers smise di mordicchiare la sua mela. Tom passò delicatamente il pennello avanti e indietro - fece un passo indietro per notare l'effetto - aggiunse un tocco qua e là - criticò di nuovo l'effetto - Ben osservava ogni mossa e diventava sempre più interessato, sempre più assorbito.
comandi
: S / nero / bianco /Sostituisci la prima occorrenza della stringa "nero" con "bianco"
: s / Ben \ (Rogers \) \ @! / Ben Rogers / gSostituisci ogni occorrenza della stringa "Ben" con "Ben Rogers" tranne quando "Rogers" era già presente
:S/.*/

\ R & \ r /

Avvolgere la linea tra

e

: -1S / - / \ - / gSostituisci ogni occorrenza della stringa '-' con '-' nella riga precedente
Testo modificato

Un ragazzo ha la possibilità di dipingere un recinto bianco ogni giorno? Questo ha messo la cosa sotto una nuova luce. Ben Rogers smise di mordicchiare la sua mela. Tom spazzò delicatamente il pennello avanti e indietro - fece un passo indietro per notare l'effetto - aggiunse un tocco qua e là - criticò di nuovo l'effetto - Ben Rogers osservava ogni mossa e diventava sempre più interessato, sempre più assorbito.

Quelle staccionate mi ricordano di ViM ...

3. Spostare le cose in pochissimo tempo

Sì, copia-incolla e drag-n-drop sono ottimi strumenti. Ma a volte è semplicemente troppo noioso scorrere un intero documento per trovare dove incollare il mio testo, e poi scorrere nella direzione opposta per riportare il cursore nella sua posizione iniziale.

Testo originale
Professionisti:

* Veloce

* Potente

* Affidabile

* Non user-friendlyCons:

* Portatile

* Addictive

comandi
/Energia/Vai alla prima riga contenente la stringa 'Power'
DDPScambia la riga corrente con quella successiva
: / User-friendly / m $Sposta la riga successiva contenente la stringa 'user-friendly' alla fine del file
g;Porta il cursore nella posizione precedente
: / CONS / + 1m-2Sposta due linee lungo la linea seguendo 'Cons'
Testo modificato
Professionisti:

* Veloce

* Affidabile

* Potente

* Contro portatile:

* Addictive

* Non facile da usare

4. Applicazione di comandi su un intervallo di indirizzi

Gli editor della GUI possono consentire di applicare alcuni comandi all'intero file o solo alla selezione corrente. A volte, abbiamo più opzioni, come prima o dopo il cursore. Ma Vi (m) consente una descrizione molto più espressiva dell'intervallo su cui deve essere applicato un dato comando:

Testo originale

PseudonimoVero nome
Mark TwainSamuel Clemens
Lewis CarrollCharles Dodgson
Richard BachmanStephen King

Molti scrittori hanno scelto di scrivere con uno pseudonimo.

comandi
: / /, // g / ^ $ / d
Elimina le linee vuote tra le righe che contengono e
: / ^ $ /; / ^ $ / - 1M1Sposta il testo tra le due linee successive dopo la linea 1 (nota l'uso di un punto e virgola qui)
: 2, $ - 1>Aumentare il rientro del testo tra la riga 2 e la penultima riga
Testo modificato

Molti scrittori hanno scelto di scrivere con uno pseudonimo.

PseudonimoVero nome
Mark TwainSamuel Clemens
Lewis CarrollCharles Dodgson
Richard BachmanStephen King

5. Esempi di comandi di piping Vim

Questo è assolutamente un meta-trucco nello spirito diretto della filosofia Unix. Vi ti permette di elaborare parte del tuo buffer attraverso un comando esterno . Questo è fantastico quando hai bisogno di cose che non sono fattibili direttamente in Vi - o per cose che non sono facilmente realizzabili in Vi. Il mio caso d'uso preferito per questa funzione è di ordinare i dati, ma ha un potere praticamente illimitato:

Testo originale
tee> (echo $ (wc -l) dati più recenti) << EOT

Ago, 2016 2, 11%

Set, 2016 2, 23%

Ott. 2016 2, 18%

Nov, 2016 2, 31%

Dec, 2016 2, 21%

Gen, 2017 2, 27%

Mar, 2016 1, 78%

Apr, 2016 1, 65%

Maggio 2016 1, 79%

Giu, 2016 2, 02%

Lug, 2016 2, 33%

EOTLinux Market Share sul desktop

fonte: //www.commarketshare.com

comandi
: 2, / ^ EOT / -1! Ordina -k2n -k1MOrdina i dati per anno e mese
: $ R! data "+ Dati ottenuti \% c"Aggiungi l'output del comando date alla fine del file
: 1, / ^ EOT / bashEsegui lo script incorporato e sostituiscilo con il suo risultato
Testo modificato
Mar, 2016 1, 78%

Apr, 2016 1, 65%

Maggio 2016 1, 79%

Giu, 2016 2, 02%

Lug, 2016 2, 33%

Ago, 2016 2, 11%

Set, 2016 2, 23%

Ott. 2016 2, 18%

Nov, 2016 2, 31%

Dec, 2016 2, 21%

Gen, 2017 2, 27%

11 dati più recenti Condividi mercato Linux sul desktop

fonte: //www.commarketshare.com

Dati ottenuti il ​​Gio 09 Feb 2017 11:07:34 CET

6. Digitando di meno

Quando si scrive documentazione formale, ci sono sempre termini insolitamente lunghi e complicati da ripetere. Può essere un nome di marca o di prodotto. Qualche luogo Un avviso di copyright. E così via. Ovviamente, ogni istanza di queste parole grosse deve essere scritta correttamente e utilizzando la stessa esatta maiuscola e punteggiatura. La funzione di abbreviazione di Vim è un must lì.

comandi
: una mela Apple Computer, Inc.Introdurre una nuova abbreviazione
ioPassa alla modalità di inserimento
la mela è stata fondata nel 1977.

Il logo della mela è una mela ^ V.

Testo digitato

(^ V significa controllo-V )

Risultato
Apple Computer, Inc. è stata fondata nel 1977.

Il logo Apple Computer, Inc. è una mela.

7. Ottenere aiuto in Vim

Ok, c'è Intenet. Ma le persone che usano ancora l' uomo come me apprezzeranno l'aiuto in linea . È possibile ottenere assistenza per argomento. O per comando. È sempre utile quando non ricordi la sintassi esatta o le opzioni per i comandi Vim - o se non sei sicuro che il comando di cui hai bisogno è un comando normale o un comando ex : .

Prova questo!
:aiuto aiuto
:aiutami
:aiutami

8. Scripting in Vim

Quando si usa Vi (m) si sta fondamentalmente usando un frontend visivo ad un altro editor sottostante chiamato ex . Forse hai notato quanti comandi negli esempi precedenti iniziano con i due punti (:)? Questo perché quelli sono ex comandi. E questo è ancora un altro vantaggio di Vi (m) rispetto a tanti editor di testo: non solo puoi usarlo interattivamente, ma puoi anche copiarlo .

Perché qualcuno dovrebbe volerlo fare? Parlando per me, trovo che sia un ottimo modo per automatizzare l'elaborazione del testo. Accanto, puoi vedere un esempio tipico direttamente dal mio disco fisso.

Probabilmente ci sono alcuni comandi misteriosi in quell'ex script, ma posso dirti che questo rimuoverà qualsiasi intestazione (eventualmente presente) da uno script e la sostituirà con un'altra letta dal file NEW.HEADER - aggiungendo un # prima di ogni riga aggiunta . Non c'è dubbio che avrei potuto farlo usando altri strumenti oltre a ex. In effetti, questo è stato anche il tema di una delle nostre precedenti Bash Challenge. Ma ex è sicuramente un'opzione.

Quanto misterioso ...
ex some.script << EOT

0pu_

1, / ^ [^ #] / - 1d

0r NEW.HEADER

1, .s / ^ / # /

wq

EOT

Come ho detto inizialmente, questo articolo non era assolutamente un tutorial, né un'introduzione a Vi (m). Solo alcuni suggerimenti di Vim per mostrarti perché qualcuno potrebbe ancora apprezzare quell'editor nonostante tutti gli altri editor di codice moderni per Linux disponibili oggi. In un certo senso, ho condiviso con voi alcuni dei miei incantesimi preferiti. Ma nella grande tradizione della magia, non ho svelato come funzionano esattamente.

Quindi, cari apprendisti, non esitate a utilizzare la sezione commenti qui sotto per condividere i vostri incantesimi o controcanti - o se avete il coraggio, per spiegare questi trucchi!

Raccomandato

Come co-autore di documenti in Linux con ONLYOFFICE
2019
Come usare Swift Programming Language in Ubuntu Linux
2019
Cose da fare dopo l'installazione di Ubuntu 13.04
2019