Question

J'ouvre parfois un fichier en lecture seule dans vi, en oubliant de faire chmod + w avant de l'ouvrir. Est-il possible de changer le fichier depuis vi?

Quelque chose comme ! r chmod + w [nom du fichier] ?

Existe-t-il un raccourci pour faire référence au fichier actuellement ouvert sans épeler son nom long?

Était-ce utile?

La solution

Il suffit d'utiliser

:!chmod +w %

en mode commande. % sera remplacé par le nom du fichier actuel.

Autres conseils

Si vous avez le droit d'écrire dans le fichier, vous pouvez simplement utiliser un point d'exclamation pour le forcer:

:w!

Si vous ne possédez pas les droits et que vous devez changer d'utilisateur, mais souhaitez tout de même écrire dans le fichier, vous pouvez parfois opter pour quelque chose comme

.
:w !sudo tee %

Je sais que ceci est un ancien message, mais avec Vim version 8, une fonction permettant de modifier les autorisations de fichiers a été incluse.

Selon le fichier version8.txt:

  

setfperm () définit les autorisations d'un fichier

Cette fonction peut ensuite être appelée via l’appel " appel " commande dans Vim.

Cela se fait comme suit:

:call setfperm("file name","permissions")

La structure des " autorisations " La chaîne prend la même forme que celle décrite dans la documentation de Vim:

  

getfperm ({fname}) getfperm ()           Le résultat est une chaîne, qui est la lecture, l'écriture et l'exécution           les permissions du fichier donné {fname}.           Si {nomfichier} n'existe pas ou si son répertoire ne peut pas être lu, un           chaîne vide est retournée.           Le résultat est de la forme "rwxrwxrwx", où chaque groupe de           " rwx " les drapeaux représentent, à leur tour, les autorisations du propriétaire           du fichier, le groupe auquel appartient le fichier et les autres utilisateurs.           Si un utilisateur n'a pas une permission donnée, l'indicateur pour cela           est remplacé par la chaîne "-". Exemple:               : echo getfperm ("/ etc / passwd")           J'espère que cela (du point de vue de la sécurité) affichera           la chaîne " rw-r - r - " ou même "rw -------".

Un exemple minimal:

:call setfperm("foo.txt","rwxrwxrwx")

Ceci ajoute des autorisations de lecture, d'écriture et d'exécution au fichier "foo.txt " fichier dans le répertoire en cours.

Avez-vous essayé

!chmod +w %

Le% représente le nom de fichier actuel.

Vous pouvez également mapper une clé sur ceci comme Ctrl-W.

:map <C-w> :!chmod +w %<CR>

Notez que vous tapez Ctrl-V Ctrl-M pour obtenir le < CR >

Après avoir modifié votre fichier avec vim, appuyez sur "esc". et ensuite ":". Puis tapez la commande suivante:

w !sudo tee %

Appuyez ensuite sur "Entrée". Puis tapez

:q!

pour quitter l'éditeur avec succès.

:!chmod <perms> <file>

et si vi ne veut toujours pas l'écrire,

:se cpo-=W
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top