Parfois, je commence à modifier les fichiers de configuration dans /etc
Utiliser Vim, mais oubliez d'utiliser Sudo
pour lancer Vim. Le résultat inévitable est alors que, après avoir terminé mes modifications, je rencontre la préavis redoutée que je n'ai pas la permission de sauvegarder le fichier.
Pour la plupart des modifications, les modifications sont suffisamment petites que je sortais simplement de Vim et que tout recommencez comme la racine. Je pouvais bien entendu enregistrer sur un endroit que je peux écrire, puis copier en tant que root, mais c'est aussi un peu gênant.
Mais je suis sûr qu'il y a un moyen plus facile de devenir root ou d'utiliser Sudo
de l'intérieur Vim, sans avoir à supprimer les changements. Si la méthode ne s'appuierait pas sur Sudo
étant configurée pour l'utilisateur qui serait encore meilleur.
SUDO ne peut pas modifier l'utilisateur effectif d'un processus existant, il crée toujours un nouveau processus qui a les privilèges élevés et la coque d'origine n'est pas affectée. C'est un élément fondamental de la conception UNIX. J'ai le plus souvent simplement enregistrer le fichier sur/TMP comme solution de contournement. Si vous souhaitez vraiment l'enregistrer directement, vous pouvez essayer d'utiliser une fonctionnalité de VIM où il peut piquer un fichier à un autre processus. Essayez d'économiser avec cette commande:
:w !Sudo dd of=%
Testé et fonctionne. Vim vous demandera ensuite de recharger le fichier, mais il est inutile: vous pouvez simplement appuyer sur o pour éviter de recharger et de perdre vos antécédents d'annulation. Vous pouvez même enregistrer cela sur une commande/une fonction Vim ou même la lier à une clé pour un accès facile, mais je laisserai cela comme un exercice au lecteur.
Call sudoedit
Pour modifier les fichiers en tant que root.
Pensez à la gêne occasionnée lorsque vous appelez vim
directement comme un avertissement que vous êtes trop décontracté pour faire quelque chose de potentiellement dangereux.
Vous pouvez mettre cela dans votre .vimrc
cmap w!! %!Sudo tee > /dev/null %
Vous le déclenchez en faisant :w!!
- Il appuiera le fichier via Sudo tee
au nom de fichier actuel (%
).
À partir d'un post désormais supprimé à https://stackoverflow.com/questions/95072/what-are-your-favorite-vim-tricks ; Voir aussi: https://stackoverflow.com/questions/1218390/What-is-Your- plus -productive-shortcut-with-vim
Cela fonctionne également bien:
:w !Sudo sh -c "cat > %"
Ceci est inspiré par le commentaire de @nathan Long dans ceci Réponse .
[~ # ~] AVIS [~ # ~]:
"
doit être utilisé au lieu de '
parce que nous voulons %
Pour être élargi avant de passer à la coquille.