2011-05-07

Eseguire comandi esterni con vim l'editor

Quando si sta editando un file capita di dover eseguire qualche comando da shell, in questo vim viene in aiuto con alcuni comandi, se va aperta una shell per eseguire una serie di comandi si può digitare:
:sh<INVIO>
e viene presentato il prompt della nuova shell nella quale eseguire i comandi, per tornare a vim va fatta terminare la shell con exit oppure <Ctrl>D.



Un modo abbreviato per avviare una nuova shell è il seguente:
:!<INVIO>
Inoltre se il comando da eseguire è uno solo e non si vuole restare nella nuova shell, si può far seguire il comando stesso a :! e durante l'esecuzione ne verrà mostrato l'output, al termine, dopo aver letto l'output, andrà digitato INVIO per tornare alla sessione di vim.
Oltre ad eseguire il comando e controllarne l'output, si può aver bisogno di riportare l'output stesso dentro il file che si sta editando con vim, in questo caso invece di :! va usato il comando !! seguito di nuovo dal comando da eseguire, l'output verrà riportato dalla riga corrente che verrà sostituita dalla prima riga di output, le seguenti righe di output verranno inserite tra la riga corrente e quella che la segue.
Senza aggiungere troppe indicazioni ne trovo una particolarmente utile ed utilizzo spesso, se nei comandi passati alla shell da la shell e le variabili vim si inserisce il carattere %, esso verrà sostituito dal file che si sta editando; ad esempio se vi accorgete che le modifiche che state effettuando potrebbero essere tali da dover avere una copia che vi siete dimenticati di fare, si può utilizzare il comando:
:!cp % %.bak
Oppure se quello che state editando è uno script e volete eseguirlo senza uscire da vim potete:
:!chmod +x %
per aggiungere il permesso di eseguibilità, e
:!%
per eseguirlo, se ( come le guide di sicurezza consigliano ) nella vostra variabile di ambiente PATH non è presente la voce . ( punto, come directory corrente  ), il comando da impartire dovrà essere:
:!./%

Nessun commento:

Posta un commento