web-dev-qa-db-fra.com

vim incapable d'écrire dans les fichiers même si Sudo est utilisé

Je trouve qu'avec vim, si j'essaie de modifier un fichier avec lequel je n'ai pas d'accès en écriture en tant qu'utilisateur normal, même si j'utilise Sudo, je ne parviens pas à écrire dessus, même si J'utilise nano pour éditer le même fichier, cela fonctionne.

Donc par exemple si je le fais:

Sudo vim /var/path/to/file.conf

Je vais mettre ça dans le fichier et ne pas pouvoir l'éditer:

"/var/path/to/file.conf" [readonly]

Mais si je le fais plutôt:

Sudo nano /var/path/to/file.conf

Il sera capable d'écrire dans le fichier, pourquoi cela, pourquoi Sudo n'accorde-t-il pas un accès en écriture à vim comme il le fait avec nano? Est-ce une sorte de bug? Ou est-ce juste quelque chose qui est censé être? Parce que c'est très énervant.


Informations sur le système d'exploitation:

Description:    Ubuntu 15.04
Release:    15.04

Informations sur le forfait:

vim:
  Installed: 2:7.4.488-3ubuntu2
  Candidate: 2:7.4.488-3ubuntu2
  Version table:
 *** 2:7.4.488-3ubuntu2 0
        500 http://gb.archive.ubuntu.com/ubuntu/ vivid/main AMD64 Packages
        100 /var/lib/dpkg/status
3
user364819

C'est le comportement souhaité de vim (et vi).

Lorsque vous modifiez un fichier en lecture seule, toute tentative d’écriture du fichier de la manière habituelle (avec :w) échoue. Cela vous évitera de modifier accidentellement un fichier en lecture seule que vous ne souhaitez peut-être pas modifier.

Si vous voulez vraiment remplacer les autorisations en lecture seule sur un fichier que vous possédez et écrire vos modifications dans le fichier, vous devez utiliser le :w! commande donc vim sait que c'est ce que vous voulez.

  • Ceci est similaire au fait que :q ne se ferme pas s'il y a des modifications non enregistrées, mais :q!.

Si vous souhaitez écrire des modifications et quitter en une seule commande, vous pouvez utiliser :wq! ou :x!.

9
Eliah Kagan