Quelle est la différence entre «quitter» et «abandonner»?

23

Lorsque j'essaie d'ouvrir un fichier à partir de plusieurs instances de vim, j'obtiens une erreur avec plusieurs options:

Swap file "~/.vim/tmp/file.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort:

Quelle est la différence entre "Quitter" et "Abandonner"?

Ma première supposition était, lorsque j'essaie d'ouvrir plusieurs fichiers et qu'un seul est en cours de modification ailleurs, "quitter" peut sauter celui-ci et "abandonner" quitter le programme, mais cela est évidemment incorrect - les deux abandonnent simplement toute la tentative à l'édition et revenir au terminal.

Kevin
la source
2
Répond :help swap-exists-choicesà votre question?
FDinoff
@FDinoff ça aide, mais je ne suis pas encore tout à fait clair sur "Abort". "également abandonner d'autres commandes. Ceci est utile lors du chargement d'un script qui édite plusieurs fichiers" - Les "autres commandes" sont-elles censées provenir d'un script vim? Est-il vraiment assez courant qu'un script vim ouvre de nouveaux tampons que c'est un problème?
Kevin

Réponses:

20

Essayez ceci: exécutez vim file1dans un terminal, puis exécutez vim -p file1 file2dans un autre terminal. La deuxième commande vous demandera comme ci-dessus. Si vous répondez Quit, vous pouvez toujours modifier file2. Si vous répondez, Abortvous quittez simplement Vim, "annulant ainsi toute autre commande".

lcd047
la source
N'y a-t-il donc qu'une différence lors de l'ouverture dans des onglets ou des fenêtres fractionnées ( -p/ -o/ -O)? Il suffit d'utiliser les vim file1 file2sorties entièrement à la fois pour quitter et abandonner lorsque file1 est en cours d'édition; et lorsque file2 est en cours de modification, l'invite n'apparaît pas jusqu'à ce que vous frappiez ensuite, et dans ce cas, à la fois quitter et abandonner reviennent simplement à file1.
Kevin
1
Tu ne comprends pas. L'ouverture de fichiers est essentiellement une séquence de commandes. vim file1 file2fait deux choses: il définit les arguments (la chose à laquelle vous pouvez accéder argv()), et il charge le premier fichier dans le tampon. Le deuxième fichier n'est en fait chargé que lorsque vous exécutez :n(ou similaire). Lorsque Vim vous invite, les arguments ont déjà été définis, donc si vous Quità ce stade, il n'y a plus de commande "supplémentaire" à exécuter. De plus, d'autres choses comptent aussi comme des commandes, des fi autocmdet des commandes définies avec vim -c. Vous devriez penser tout cela en termes de commandes, pas en termes de fichiers affectés.
lcd047
4

@FDinoff a suggéré de vérifier l'aide de vim . Au cas où quelqu'un voudrait les voir plus facilement:

WHAT TO DO?                                     *swap-exists-choices*

If dialogs are supported you will be asked to select one of five choices:

  Swap file ".main.c.swp" already exists! ~
  [O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort, (D)elete it: ~

O  Open the file readonly.  Use this when you just want to view the file and
   don't need to recover it.  You might want to use this when you know someone
   else is editing the file, but you just want to look in it and not make
   changes.

E  Edit the file anyway.  Use this with caution!  If the file is being edited
   in another Vim, you might end up with two versions of the file.  Vim will
   try to warn you when this happens, but better be safe then sorry.

R  Recover the file from the swap file.  Use this if you know that the swap
   file contains changes that you want to recover.

Q  Quit.  This avoids starting to edit the file.  Use this if there is another
   Vim editing the same file.
      When you just started Vim, this will exit Vim.  When starting Vim with
   files in several windows, Vim quits only if there is a swap file for the
   first one.  When using an edit command, the file will not be loaded and you
   are taken back to the previously edited file.

A  Abort.  Like Quit, but also abort further commands.  This is useful when
   loading a script that edits several files, such as a session with multiple
   windows.

D  Delete the swap file.  Use this when you are sure you no longer need it.
   For example, when it doesn't contain changes, or when the file itself is
   newer than the swap file.
      On Unix this choice is only offered when the process that created the
   swap file does not appear to be running.

Autant que je sache, l'abandon concerne l'utilisation de vim pour vérifier plusieurs fichiers, comme ceci:

vim file1.txt file2.txt

Si le premier est verrouillé et que vous appelez quit, il passera à file2.txt, tandis que l'abandon sortira complètement de l'application.

AJFaraday
la source