Qual é a diferença entre "sair" e "abortar"?

23

Quando tento abrir um arquivo de várias instâncias do vim, recebo um erro com várias opções:

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

Qual é a diferença entre "Quit" e "Abort"?

Meu primeiro palpite foi que, quando estou tentando abrir vários arquivos e apenas um está sendo editado em outro lugar, "sair" pode pular esse e "abortar" sair do programa, mas isso é evidentemente incorreto - ambos abandonam toda a tentativa na edição e volte ao terminal.

Kevin
fonte
2
Não :help swap-exists-choicesresponder a sua pergunta?
FDinoff
@FDinoff ajuda, mas ainda não estou claro sobre "Abortar". "também anula comandos adicionais. Isso é útil ao carregar um script que edita vários arquivos" - Os "comandos adicionais" deveriam ser de um script vim? É realmente comum o suficiente para um script vim abrir novos buffers que isso é uma preocupação?
22415 Kevin

Respostas:

20

Tente o seguinte: execute vim file1em um terminal e, em seguida, vim -p file1 file2em outro terminal. O segundo comando solicitará como acima. Se você responder Quit, ainda poderá editar file2. Se você responder, Abortbasta sair do Vim, "abortando outros comandos".

lcd047
fonte
Portanto, existe apenas uma diferença ao abrir abas ou dividir janelas ( -p/ -o/ -O)? Apenas usar vim file1 file2saídas inteiramente em quit e abort quando o arquivo1 está sendo editado; e quando o arquivo2 está sendo editado, o prompt não aparece até a próxima etapa e, nesse caso, encerra e anula apenas retorna ao arquivo1.
22415 Kevin
1
Você não entende. Abrir arquivos é essencialmente uma sequência de comandos. vim file1 file2faz duas coisas: define os argumentos (o que você pode acessar argv()) e carrega o primeiro arquivo no buffer. O segundo arquivo é realmente carregado apenas quando você executa :n(ou similar). Quando o Vim solicitar, os argumentos já foram definidos, portanto, se você Quitnesse momento não houver nenhum comando "adicional" para executar. Além disso, outras coisas também contam como comandos, fis autocmde comandos definidos com vim -c. Você deve pensar em tudo isso em termos de comandos, não em arquivos afetados.
Lcd047 12/12/2015
4

@FDinoff sugeriu verificar a ajuda do vim . Caso alguém queira ver isso mais facilmente:

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.

Tanto quanto posso dizer, abortar é para quando você usa o vim para verificar vários arquivos, assim:

vim file1.txt file2.txt

Se o primeiro estiver bloqueado e você chamar quit, ele continuará em file2.txt, enquanto o cancelamento será interrompido completamente do aplicativo.

AJFaraday
fonte