171 votes

Est-ce que je peux voir des changements avant que j’ai enregistrer mon fichier dans Vim ?

J’utilise Vim. J’ouvre un fichier. J’ai éditer et je veux voir ce que j’ai édité avant j’ai enregistrer.

Comment puis-je faire cela dans Vim ?

195voto

chaos Points 69029
:w !diff % -

148voto

Tobias Heinicke Points 143

Parce que certains gens ont demandé une explication de la commande

:w !diff % -

Voici ma tentative sur la rédaction d'une réponse plus détaillée:

Je suis en supposant que vous travaillez sur un système avec cat et echo installé (par exemple, presque tous les GNU/Linux, Mac OS x, BSD et autres systèmes de type UNIX).

La commande ci-dessus fonctionne de la manière suivante:

  1. La syntaxe à utiliser pour l'enregistrement d'un fichier dans vim est:

    :w <filename>
    
  2. La syntaxe pour l'exécution d'une commande shell dans vim est:

    :!<command>
    
  3. L'intérieur de la coquille de l'environnement délivré par vim % arrive à point pour le nom de fichier courant. Vous pouvez le vérifier en exécutant la commande suivante:

    :!echo %
    

    Ce devrait sortir le nom de fichier (ou une erreur, si vim a été exécutée sans un nom de fichier).

    À l'aide de chat, nous pouvons également afficher le contenu du fichier:

    :!cat %
    

    Cela devrait renvoyer les fichiers contenu dans son dernier état enregistré ou une erreur s'il n'a jamais été enregistré.

  4. Le programme diff est en mesure de lire l'entrée standard (stdin). Sa page de man est la suivante:

    [...] Si un FICHIER est '-', lire l'entrée standard. [...]

  5. L'exécution de la commande enregistrer sans un nom de fichier, mais plutôt une commande shell derrière elle provoque vim pour écrire le contenu des fichiers stdin de la coque au lieu de l'enregistrer dans un fichier physique. Vous pouvez le vérifier en exécutant

    :w !cat
    

    Cela devrait toujours imprimer les fichiers contenu actuel (ce qui aurait été écrite dans un fichier au lieu de cela).

De les mettre ensemble (ou tl;dr): Le fichier est "sauvé" pour stdin, la diff est exécuté avec le nom et l'stdin comme entrée.

Sachant cela, on pourrait aussi comparer les fichiers avec vimdiff faire quelque chose comme cela - c'est juste une idée que vous ne voulez pas faire cela:

:w !cat > /tmp/tempFile && vimdiff /tmp/tempFile % && rm /tmp/tempFile

(Puis l'ouvrir en lecture seule et fermer vimdiff l'aide d' :qall)

70voto

sharth Points 25625

14voto

ldigas Points 19740

J’ai toujours aime diffchanges - sympa, simples, œuvres.

12voto

0x89 Points 1292

de vimrc_example.vim :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X