Posso abrir um shell usando o comando: shell no Vim, porém não posso editar um arquivo e ao mesmo tempo usar o shell.
Existe alguma maneira de dividir o Vim em várias janelas (ou guias) e ter um shell aberto em uma delas?
Posso abrir um shell usando o comando: shell no Vim, porém não posso editar um arquivo e ao mesmo tempo usar o shell.
Existe alguma maneira de dividir o Vim em várias janelas (ou guias) e ter um shell aberto em uma delas?
Respostas:
Neovim e Vim 8.2
suportam isso nativamente por meio do :ter[minal]
comando.
Veja terminal-window
na documentação para detalhes.
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.
: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 com Ctrl - 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
.
vim
magia caminho assim::!./%
Ctrl
-qualquer coisa, suponho que sua resposta assume gnome-terminal ou um emulador semelhante.
Você pode usar tmux
ou 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.
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 :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 sua vim
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.
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.
Você pode querer abrir um programa de "tela", dividir a tela, abrir o shell em um e o vim em outro. Funciona para mim.
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.