vim Enregistrement d'un fichier en lecture seule édité dans Vim


Exemple

Parfois, nous pouvons ouvrir un fichier que nous n'avons pas la permission d'écrire dans Vim sans utiliser sudo .

Utilisez cette commande pour enregistrer un fichier en lecture seule modifié dans Vim.

:w !sudo tee > /dev/null %

Ce que vous pourriez cartographier :w!! dans votre .vimrc :

cmap w!! w !sudo tee > /dev/null %

Vous serez présenté une invite comme indiqué dans l'image.

Appuyez sur ENTRÉE ou tapez la commande pour continuer. [O] K, (L) oad File: .

Appuyez sur O et le fichier sera enregistré. Il reste ouvert dans vi / vim pour plus d'édition ou de lecture et vous pouvez quitter normalement en tapant :q! puisque le fichier est toujours ouvert en lecture seule.

Explication de commande

:w ............................ isn't modifying your file in this case, 
   ............................ but sends the current buffer contents to 
   ............................ a substituted shell command
   !sudo ...................... call the shell 'sudo' command
         tee .................. the output of the vi/vim write command is redirected 
                                using the 'tee' command
             > /dev/null ...... throws away the standard output, since we don't need 
                                to pass it to other commands
                         % .... expands to the path of the current file

Sources: