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 ?
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 ?
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:
La syntaxe à utiliser pour l'enregistrement d'un fichier dans vim est:
:w <filename>
La syntaxe pour l'exécution d'une commande shell dans vim est:
:!<command>
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é.
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. [...]
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
)
J’ai toujours aime diffchanges - sympa, simples, œuvres.
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.