Parfois, je commence à éditer des fichiers de configuration en /etc
utilisant Vim, mais j'oublie de l'utiliser sudo
pour démarrer Vim. Le résultat inévitable est donc qu'après avoir terminé mes modifications, je reçois le constat redouté que je n'ai pas la permission de sauvegarder le fichier.
La plupart du temps, les modifications sont suffisamment petites pour que je quitte Vim et que je refasse le tout en tant que root. Je pourrais bien sûr sauvegarder dans un endroit où je pourrais écrire puis copier en tant que root, mais c'est aussi un peu gênant.
Mais je suis certain qu’il existe un moyen plus simple de devenir root ou d’utiliser sudo
Vim sans avoir à ignorer les modifications. Si la méthode ne repose pas sur sudo
une configuration pour l'utilisateur, ce serait encore mieux.
sudoedit
au lieu devim
pour toutes les éditions d'administrateur. C'est un moyen de ne plus jamais rencontrer ce problème :). +1 pour la réponse de Gilles .Réponses:
sudo ne peut pas changer l'utilisateur effectif d'un processus existant, il crée toujours un nouveau processus avec les privilèges élevés et le shell d'origine n'est pas affecté. C’est l’un des fondements de la conception UNIX. Le plus souvent, je ne fais que sauvegarder le fichier dans / tmp en guise de solution de contournement. Si vous voulez vraiment le sauvegarder directement, essayez d’utiliser une fonctionnalité de Vim qui permet de diriger un fichier vers un autre processus. Essayez de sauvegarder avec cette commande:
Testé et fonctionne. Vim vous demandera alors de recharger le fichier, mais c'est inutile: vous pouvez simplement appuyer sur opour éviter de recharger et de perdre votre historique d'annulation. Vous pouvez même sauvegarder ceci dans une commande / fonction Vim ou même le lier à une clé pour un accès facile, mais je laisserai cela au lecteur.
la source
%
, qui dans vim sera le chemin du fichier que vous êtes en train de modifier.%
guillemets au cas où le nom du fichier contient un espace.'modified'
réglage; vous pouvez le faire manuellement avecset nomodified
.exec 'w !sudo dd of=' . shellescape(expand('%'))
dans le cas où le nom du fichier contient des guillemets, antislashs, dollar-signes, etc.Enregistrer le fichier en tant que root:
la source
Appelez
sudoedit
pour éditer les fichiers en tant que root.Lorsque vous appelez
vim
directement, pensez à la gêne occasionnée pour vous avertir que vous faites trop occasionnellement pour faire quelque chose de dangereux.la source
Vous pouvez mettre cela dans votre
.vimrc
Vous le déclenchez en agissant
:w!!
- le fichier sera inséré danssudo tee
le nom de fichier actuel (%
).De https://stackoverflow.com/questions/95072/what-are-your-favorite-vim-tricks
la source
!sudo sponge %
place.Cela fonctionne aussi bien:
Ceci est inspiré par le commentaire de @Nathan Long dans cette réponse .
AVIS :
"
doit être utilisé à la place de'
parce que nous voulons%
être étendus avant de passer à shell.la source