Eu sei que posso :!
ou :r!
para executar um comando externo e, opcionalmente, inserir sua saída no texto. Eu posso até me apresentar :!sh
e criarei um shell que permanecerá vivo até sair dele - mas enquanto o shell estiver ativo, o Vim estará "adormecido" e inacessível. Preciso sair do shell e gerar um novo se quiser retornar ao Vim por um momento - não muito útil.
I pode acessar shell na extremidade oposta, suspendendo Vim com ^Ze gerenciar o trabalho Vim através de bg
, fg
e jobs
. Isso faz mais sentido, mas é muito complicado a longo prazo. Posso usar Screen
se estiver disponível (geralmente não está) ou abrir várias janelas do meu gerenciador de janelas (e ssh para direcionar o host de cada um deles em sequência, para ter o vim e o shell no host remoto, mais complicado novamente).
Seria melhor se o Vim me permitisse abrir uma sessão de shell e mantê-la, digamos, em uma de suas janelas (internas), ou permitir que eu alternasse para ela e voltasse. É algo assim possível?
:split
arquivo, mantendo o arquivo na outra janela? ... Isso me parece um trabalho para tmux ou tela ...Respostas:
Existem alguns plugins do vim que permitem isso. Eu uso o Conque ( Github ).
Depois de colocá-lo no diretório de plugins, tudo o que você precisa fazer é:
E você terá um shell bash interativo no vim. Você pode usar seus gestos regulares do vim para fazer qualquer outra coisa que desejar na janela.
Além disso, o outro plugin é o vimshell .
fonte
:help shell-window
. (Resposta curta: não).Com o VIM, acredito que os plug-ins que existem para fazer isso não são tão bons assim, embora o vimshell da IMO seja o mais próximo. No entanto, você precisa entender que é um problema de 2 partes.
Na minha opinião, existem 2 abordagens que funcionam muito melhor nesse sentido.
Devo acrescentar que há uma boa probabilidade de que o NeoVIM possa causar uma mudança nesse aspecto, uma vez que um de seus principais objetivos é poder executar tarefas de forma assíncrona. Mas até então, é o melhor que podemos obter na minha opinião.
fonte
Em
:help shell-window
podemos ler sobre a execução de comandos shell em uma janela:No entanto, existem poucas soluções que você pode usar:
uso
screen
especialmente projetado para esse tipo de coisa, por exemplo:Veja mais em: Guia de Sobrevivência na Tela GNU no stackoverflow SE
Ou: Divisão de tela GNU , Referência rápida da tela para obter mais detalhes.
VIM-Shell - um patch de terceiros
vterm - Emulador de terminal dentro do vim.
Vimux - interaja facilmente com o tmux do vim.
outro já mencionado: Conque
Relacionado: Como executar um terminal dentro do vim? no stackoverflow
fonte