Costumava haver um patch de shell para o vim, mas ele não compila mais afaik. O mais próximo que você vai chegar de um shell verdadeiro é usar o screen ou tmux. Essa é a maior coisa de que sinto falta no vim.
Se você estiver usando o Vundle para gerenciar os plug-ins, pode adicionar Bundle 'jewes / Conque-Shell' ao seu arquivo .vimrc e executar: BundleInstall para instalá-lo.
Mingjiang Shi
Uma coisa a observar: o requisito + python ou + python3 para o vi pode ser um assassino em alguns ambientes de trabalho.
:vspou :sp- divide o vim em duas instâncias, mas você não pode usar: shell em apenas uma delas.
Por que não exibir outra guia do terminal e não outra guia do vim. Se gostar da ideia, pode experimentá-la: Ctrl-shift-t.e alternar entre elas com Ctrl - pageupeCtrl - pagedown
Se você quiser apenas alguns comandos de shell, você pode fazer qualquer comando de shell no vim usando !
E para executar um executável atualmente aberto, você pode usar vimmagia caminho assim::!./%
CPRN
Por que não exibir outra guia do terminal - nem todo mundo está usando o vim em um emulador de terminal acima de uma GUI ... De Ctrl-qualquer coisa, suponho que sua resposta assume gnome-terminal ou um emulador semelhante.
törzsmókus
8
Você pode usar tmuxou screen(o segundo é capaz de fazer apenas divisões horizontais sem um patch) para dividir seu terminal. Mas não sei como ter uma instância do Vim em ambos os painéis.
a tela pode fazer divisões verticais se você construir a partir do git.
Randy Morris
8
Se você ainda não descobriu, pode usar o incrível plugin de tela .
Conque também é excepcional, mas acho a tela muito mais prática (não vai "sujar" seu buffer por exemplo e você pode apenas enviar os comandos que realmente deseja após editá-los em seu buffer)
Eu acho que esta é uma questão bastante antiga, mas agora em 2017. Temos o neovim, que é um fork do vim que adiciona suporte de terminal.
Portanto, a invocação :termabriria uma janela de terminal. A beleza desta solução, ao contrário de usar tmux (um multiplexador de terminal), é que você terá as mesmas vinculações de janela de sua vimconfiguração. neovim é compatível com vim, então você pode basicamente copiar e colar o seu .vimrce ele funcionará.
Mais vantagens são que você pode alternar para o modo normal no terminal aberto e pode fazer cópias e edições básicas. Também é muito útil para git commits, eu acho, já que tudo em seu buffer você pode usar no autocompletar.
Não exatamente o que você está pedindo, mas você pode se interessar por meu plugin vim-notebook que permite ao usuário manter um processo de background vivo e fazer com que avalie parte do documento atual (e escreva a saída no documento). Destina-se a ser usado em documentos do tipo notebook contendo partes de código a serem avaliadas.
Cancelei o -1 porque não havia explicação. Além disso, testei a solução do plugin vim screen e não é muito diferente da solução do mrcybul. @mrcybul: tanques por tentar ajudar. Para evitar ser rejeitado, leia com atenção as outras respostas e adicione a sua própria apenas se achar que traz algo novo. Inclua também por que sua solução pode ser melhor em certos casos.
Respostas:
Neovim e Vim
8.2
suportam isso nativamente por meio do:ter[minal]
comando.Veja
terminal-window
na documentação para detalhes.fonte
vsplit term://bash
se você estiver usando Neovim.terminal
comando divide a janela e fornece um shell de comando com uma cor especial na barra de status da janela. Liso.Bem, isso depende do seu sistema operacional - na verdade, eu não testei no MS Windows - mas Conque é um dos melhores plug-ins que existem.
Na verdade, pode ser melhor, mas funciona.
fonte
:vsp
ou:sp
- divide o vim em duas instâncias, mas você não pode usar: shell em apenas uma delas.Por que não exibir outra guia do terminal e não outra guia do vim. Se gostar da ideia, pode experimentá-la:
Ctrl-shift-t.
e alternar entre elas comCtrl - pageup
eCtrl - pagedown
Se você quiser apenas alguns comandos de shell, você pode fazer qualquer comando de shell no vim usando
!
Por exemplo
:!./a.out
.fonte
vim
magia caminho assim::!./%
Ctrl
-qualquer coisa, suponho que sua resposta assume gnome-terminal ou um emulador semelhante.Você pode usar
tmux
ouscreen
(o segundo é capaz de fazer apenas divisões horizontais sem um patch) para dividir seu terminal. Mas não sei como ter uma instância do Vim em ambos os painéis.fonte
Se você ainda não descobriu, pode usar o incrível plugin de tela .
Conque também é excepcional, mas acho a tela muito mais prática (não vai "sujar" seu buffer por exemplo e você pode apenas enviar os comandos que realmente deseja após editá-los em seu buffer)
fonte
Eu acho que esta é uma questão bastante antiga, mas agora em 2017. Temos o neovim, que é um fork do vim que adiciona suporte de terminal.
Portanto, a invocação
:term
abriria uma janela de terminal. A beleza desta solução, ao contrário de usar tmux (um multiplexador de terminal), é que você terá as mesmas vinculações de janela de suavim
configuração. neovim é compatível com vim, então você pode basicamente copiar e colar o seu.vimrc
e ele funcionará.Mais vantagens são que você pode alternar para o modo normal no terminal aberto e pode fazer cópias e edições básicas. Também é muito útil para git commits, eu acho, já que tudo em seu buffer você pode usar no autocompletar.
Vou atualizar esta resposta, já que o vim também está planejando lançar o suporte de terminal, provavelmente no vim 8.1. Você pode acompanhar o progresso aqui: https://groups.google.com/forum/#!topic/vim_dev/Q9gUWGCeTXM
Depois de lançado, acredito que esta é uma configuração mais superior do que usar o tmux.
fonte
VimShell de Shougo , que pode auto-completar nomes de arquivos se usado com neocomplcache
fonte
Não exatamente o que você está pedindo, mas você pode se interessar por meu plugin vim-notebook que permite ao usuário manter um processo de background vivo e fazer com que avalie parte do documento atual (e escreva a saída no documento). Destina-se a ser usado em documentos do tipo notebook contendo partes de código a serem avaliadas.
fonte
Você pode querer abrir um programa de "tela", dividir a tela, abrir o shell em um e o vim em outro. Funciona para mim.
fonte
Atualmente, estou usando o tmux.
Instalação: sudo apt-get install tmux Execute: tmux
Ctrl + b seguido por Ctr +%: divide sua janela de terminal em duas metades verticais.
Ctrl + "seta para a esquerda | seta para a direita": move entre os terminais.
fonte