¿Cuál es la diferencia entre "dejar de fumar" y "cancelar"?

23

Cuando intento abrir un archivo desde varias instancias de vim, aparece un error con varias opciones:

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

¿Cuál es la diferencia entre "Quit" y "Abort"?

Mi primera suposición fue que, cuando intento abrir varios archivos y solo se está editando uno en otro lugar, "salir" puede omitirlo y "cancelar" salir del programa, pero eso es evidentemente incorrecto: ambos abandonan todo el intento al editar y volver a la terminal.

Kevin
fuente
2
¿ :help swap-exists-choicesResponde tu pregunta?
FDinoff
@FDinoff ayuda, pero aún no tengo muy claro "Abortar". "también cancela más comandos. Esto es útil al cargar un script que edita varios archivos" - ¿Se supone que los "comandos adicionales" provienen de un script vim? ¿Es realmente lo suficientemente común que un script vim abra nuevos buffers que esto es una preocupación?
Kevin

Respuestas:

20

Pruebe esto: ejecute vim file1en una terminal, luego ejecute vim -p file1 file2en una terminal diferente. El segundo comando le indicará lo anterior. Si responde Quit, aún puede editar file2. Si responde Abort, simplemente salga de Vim y, por lo tanto, "cancele cualquier otro comando".

lcd047
fuente
Entonces, ¿solo hay una diferencia al abrir en pestañas o ventanas divididas ( -p/ -o/ -O)? Simplemente usando las vim file1 file2salidas por completo tanto en salir como en anular cuando se está editando el archivo1; y cuando se está editando file2, el mensaje no aparece hasta que se presiona el siguiente, y en ese caso, tanto salir como abortar simplemente regresan a file1.
Kevin
1
No entiendes Abrir archivos es esencialmente una secuencia de comandos. vim file1 file2hace dos cosas: establece los argumentos (con los que puede acceder argv()) y carga el primer archivo en el búfer. El segundo archivo se carga realmente solo cuando ejecuta :n(o similar). Cuando Vim le pregunta, los argumentos ya se han establecido, por lo que si Quiten ese momento no queda ningún comando "adicional" para ejecutar. Además, otras cosas también cuentan como comandos, fi autocmds y comandos configurados con vim -c. Debe pensar todo esto en términos de comandos, no en términos de archivos afectados.
lcd047
4

@FDinoff sugirió revisar la ayuda de vim . En caso de que alguien quisiera ver esto más fácilmente:

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.

Por lo que puedo decir, abort es para cuando usas vim para revisar varios archivos, así:

vim file1.txt file2.txt

Si el primero está bloqueado y llamas a salir, pasará a file2.txt, mientras que abortar saldrá completamente de la aplicación.

AJFaraday
fuente