Como sair temporariamente do Vim e voltar

303

Como eu poderia sair do Vim, não :qe depois voltar para continuar editando?

Ricky
fonte

Respostas:

571

Supondo que o terminal Vim tenha um sabor de * nix:

Para suspender o seu Vim em execução

Ctrl + Z

suspenderá o processo e retornará ao seu shell

fg

retomará (trazer para f minério g rodada) seu Vim suspenso.

Para iniciar um novo shell

Inicie um subshell usando:

:sh

(conforme configurado por)

:set shell?

ou

:!bash

Seguido por:

Ctrl+ D(ou exit, mas por que digitar tanto?)

para matar a concha e retornar ao Vim.

zen
fonte
5
pspara visualizar os processos em primeiro plano unix.stackexchange.com/questions/6115/…
Vlad Vinnikov
1
E se eu quiser continuar executando meu servidor enquanto estiver editando meu arquivo. Por exemplo, digamos que sim nodemon app.js(o nodemon atualiza o servidor nas edições de arquivo para você) e, em seguida, quero retornar à minha edição do vim. Posso fazer isso sem duas janelas de terminal separadas?
Costa
5
ou jobspara visitar os processos em primeiro plano com um título (para mim) mais legível. Então, por exemplo, fg %2para selecionar o segundo.
Isomorphismes
Se isso não funcionar para você e control-zage como 'desfazer', verifique seu vimrc para ver se behave mswinestá presente. Se é removê-lo e control-zvai funcionar
schuess
3
no windows, você pode voltar ao vim se você digitar #exit
319 JonnyRaa
107

Você pode usar :shpara sair para o shell padrão e digitar $ exitno prompt do shell retornará ao Vim.

Pierre-Antoine LaFayette
fonte
1
Eu gostaria de poder votar mais difícil. É exatamente por isso: o shell existe.
Randy Morris
8
Para ser justo, às vezes você deseja o mesmo ambiente, não um ambiente sub-shell. Portanto, se você estiver procurando por alterações nas variáveis ​​de ambiente para quando sair do Vim completamente, convém CTRL-z /: sus.
Tango Bravo
Pode ser usado $ pspara descobrir se estamos em um sub-shell vim antes de ligar $ exitpara evitar fechar o terminal acidentalmente. Encontrei isso aqui (não tentei o indicador de prompt mencionado no site).
Daniel
34

Você pode alternar temporariamente para o modo shell:

:! <command>

tal como

:! ls
Jay Zeng
fonte
14

Se você estiver em um sistema Unix, o Ctrl+ Zsuspenderá o Vim e fornecerá um shell.

Digite fgpara voltar. Observe que o Vim cria um arquivo de troca durante a edição e a suspensão do Vim não excluiria esse arquivo (afinal você não está saindo do Vim). Em terminais burros, esse método era bastante padrão para ciclos de edição, compilação e edição usando o vi . Acabei de descobrir que, para mim, o gVim minimiza a digitação Z.

Alok Singhal
fonte
13

Você também pode fazer isso :suspara cair na concha e voltar atrás fg.

solotim
fonte
5

Existem várias maneiras de sair do Vim e ter tudo igual quando você retornar. Existe uma documentação muito boa no próprio Vim explicando as várias maneiras pelas quais isso pode ser feito. Você pode usar o seguinte comando no vim para acessar a página de ajuda relevante::help usr_21

Para lhe dar um breve resumo, eis os diferentes métodos para encerrar e retornar com a sessão intacta:

  1. Suspender e continuar - Na verdade, você não sai do Vim com isso; você simplesmente oculta sua sessão em segundo plano até precisar dela. Se você redefinir seu computador ou emitir um comando kill para o Vim, você perderá sua sessão. Isso é bom para quando você deseja alternar temporariamente para outra tarefa, mas se for esse o caso, convém usar o utilitário GNU Screen .

  2. Sessões - Esta é a maneira verdadeira de salvar sua sessão entre instâncias do Vim. Mesmo que você realmente saia do Vim, sua sessão estará lá quando você voltar. Provavelmente é isso que você está procurando.

suíço
fonte
5

Para estender a resposta do usuário Zen , você pode adicionar a seguinte linha no seu ~/.vimrcarquivo para permitir alternar rapidamente entre o Bash e o Vim:

noremap <C-d> :sh<cr>
xaa
fonte
cinco anos depois, gostaria de mencionar que o uso do Cd é provavelmente um mau conselho, pois substitui o comportamento padrão do Vim. janela de rolagem ctrl-d em direção ao buffer por padrão. consulte vimdoc.sourceforge.net/htmldoc/scroll.html#CTRL-D
xaa
3

Basta inserir fge voltar ao seu programa suspenso mais recentemente.

falcucci
fonte
3

Se você estiver usando o Neovim , faça o seguinte:

  • :terminal comando para abrir uma janela do terminal.
  • Faça suas coisas terminais
  • Digite exitpara matar o processo do terminal
  • Pressione qualquer tecla para retornar ao Neovim
loeschg
fonte
0

Se você não se importa de usar o mouse um pouco:

  • Inicie seu terminal,
  • selecione um arquivo,
  • selecione Abrir guia .

Isso cria uma nova guia no terminal na qual você pode executar o Vim. Agora use o mouse para mudar de / para o terminal. Eu prefiro isso em vez de sempre ter que digitar ( :shelle sair).

Pius IK
fonte