GNU/Linux >> Linux Esercitazione >  >> Linux

Come accedere alla shell o eseguire comandi esterni da Vim

Vim, come forse già saprai, è un editor potente e ricco di funzionalità. Qui su HowtoForge, abbiamo scritto diversi tutorial su Vim, coprendone l'utilizzo di base, i plug-in e alcune altre utili funzionalità. Ma dato il mare di funzionalità offerte da Vim, troviamo sempre qualcosa di utile da condividere con i nostri lettori.

In questo tutorial, ci concentreremo su come eseguire comandi esterni e accedere alla shell della riga di comando dall'interno della finestra dell'editor.

But before we start doing that, it's worth mentioning that all the examples, commands, and instructions mentioned in this tutorial have been tested on Ubuntu 14.04, and the Vim version we've used is 7.4.

Esegui comandi esterni in Vim

A volte potresti voler eseguire comandi esterni dall'interno della finestra dell'editor di Vim. Ad esempio, considera una situazione in cui hai aperto un file in Vim, apportato alcune modifiche e quindi, durante il tentativo di salvare tali modifiche, Vim genera un errore dicendo che non disponi di autorizzazioni sufficienti.

Ora, uscire dalla sessione vim corrente e aprire nuovamente il file con privilegi sufficienti significherà la perdita di tutte le modifiche che hai fatto, quindi, sarai d'accordo, non sarebbe un'opzione nella maggior parte dei casi. Sono situazioni come queste in cui la possibilità di eseguire comandi esterni dall'editor è utile.

Torneremo più avanti sul caso d'uso precedente(**), ma per ora, capiamo come eseguire i comandi di base da vim.

Supponiamo che durante la modifica di un file tu voglia conoscere il numero di righe, parole e caratteri che contiene il file. Per fare ciò, nella modalità di comando di Vim, basta inserire i due punti (:) seguiti da un botto (!) e infine il comando ('wc' in questo caso) seguito dal nome del file (usa % per il file corrente).

:! wc %

Ecco un esempio:

File con il suddetto comando pronto per essere eseguito:

ed ecco l'output sul terminale:

Dopo aver visto l'output, premi il tasto Invio e verrai riportato alla tua sessione di Vim.

Questa funzione può tornare molto utile in situazioni in cui, ad esempio, stai scrivendo un codice o uno script e vuoi sapere rapidamente se il codice/script contiene o meno errori in fase di compilazione o di sintassi.

Andando avanti, nel caso in cui il requisito sia aggiungere l'output al file, utilizzare ':read !' comando. Ecco un esempio:

:read ! wc %

Il comando "leggi" inserisce l'output del comando esterno su una nuova riga sotto la riga corrente nel file in fase di modifica. Se lo desideri, puoi anche specificare un numero di riga particolare:l'output verrà aggiunto dopo quella riga particolare.

Ad esempio, il comando seguente aggiungerà l'output di 'wc' dopo la seconda riga del file.

:2read ! wc %

Nota :Usa '$' per inserire dopo l'ultima riga e '0' per inserire prima della prima riga.

Ora, tornando al caso d'uso di cui abbiamo discusso all'inizio (**), ecco il comando che ti aiuterà a salvare il file senza doverlo prima chiudere (il che significa nessuna perdita di modifiche non salvate) e poi aprirlo con, diciamo , sudo.

:w ! sudo tee %

Accedi alla shell in Vim

Oltre a eseguire singoli comandi, puoi anche farti cadere in una shell appena lanciata da Vim. Per questo, tutto ciò che devi fare è eseguire il seguente comando dall'editor:

:shell

o

:sh

e digita "exit" quando hai finito con il lavoro della shell:questo ti riporterà alla sessione di Vim da dove eri rimasto inizialmente.

La scappatoia da tenere a mente

Sebbene la possibilità di accedere a una shell abbia sicuramente i suoi usi nel mondo reale, può anche essere utilizzata come tecnica di escalation dei privilegi. Come abbiamo spiegato in uno dei nostri tutorial precedenti (su sudoedit), anche se fornisci a un utente sudo l'accesso per modificare un solo file tramite Vim, questi potrebbero avviare una nuova shell dall'interno dell'editor usando questa tecnica e saranno quindi in grado per fare qualsiasi cosa come 'root' o superutente.

La capacità di eseguire comandi esterni dall'interno di Vim è una caratteristica importante che può tornare utile in molte situazioni (alcune delle quali abbiamo menzionato in questo tutorial). La curva di apprendimento per questa funzione non è ripida, quindi sia i principianti che gli utenti esperti possono trarne vantaggio.

Utilizzi questa funzione da un po' di tempo ormai? Hai qualcosa da condividere? Si prega di lasciare i vostri pensieri nei commenti qui sotto.


Linux
  1. Come accedere ai file Flash da siti Web in streaming?

  2. Come stampare da Vim a PDF?

  3. Come eseguire script Python dalla shell

  4. Come eseguire il file sh da un altro file sh

  5. Come eseguire uno script di shell all'avvio

Come eseguire lo script della shell come servizio Systemd in Linux

Come eseguire i comandi del file .sh tutto in una volta in Linux

Linux:come eseguire un bootloader da Linux?

Come eliminare le prime N righe di un file Ascii utilizzando i comandi della shell?

Come accedere ai file di Windows da Ubuntu?

Come eseguire comandi shell esterni dal controller laravel?