A volte inizio a modificare i file di configurazione in /etc
usando Vim, ma dimentica di usare sudo
per avviare Vim. Il risultato inevitabile quindi è che dopo aver terminato le mie modifiche incontro il temuto avviso che non ho il permesso per salvare il file.
Per lo più le modifiche sono abbastanza piccole che esco da Vim e rifaccio il tutto come root. Ovviamente potrei salvare in una posizione in cui posso scrivere e quindi copiare come root, ma anche questo è alquanto fastidioso.
Ma sono sicuro che esiste un modo più semplice per diventare root o utilizzare sudo
dall'interno di Vim, senza dover scartare le modifiche. Se il metodo non si basasse su sudo
essere configurato per l'utente sarebbe ancora meglio.
Risposta accettata:
sudo non può cambiare l'utente effettivo di un processo esistente, crea sempre un nuovo processo che ha i privilegi elevati e la shell originale non è interessata. Questo è un aspetto fondamentale della progettazione UNIX. Molto spesso salvo il file in /tmp come soluzione alternativa. Se vuoi davvero salvarlo direttamente, potresti provare a utilizzare una funzionalità di Vim in cui può reindirizzare un file a un altro processo. Prova a salvare con questo comando:
:w !sudo dd of=%
Testato e funziona. Vim ti chiederà quindi di ricaricare il file, ma non è necessario:puoi semplicemente premere o per evitare di ricaricare e perdere la cronologia degli annullamenti. Puoi persino salvarlo su un comando/funzione Vim o persino associarlo a una chiave per un facile accesso, ma lo lascerò come esercizio al lettore.