Como executar o arquivo que estou editando no Vi (m) e obter a saída na janela dividida (como no SciTE)?
Claro que eu poderia executá-lo assim:
:!scriptname
Mas é possível evitar escrever o nome do script e como obter a saída na janela dividida em vez de apenas na parte inferior da tela?
:!"%:p"
para lidar com espaços em branco.Respostas:
Aí está o
make
comando. Ele executa o comando definido namakeprg
opção. Use%
como um espaço reservado para o nome do arquivo atual. Por exemplo, se você estava editando um script Python:Sim, você precisa escapar do espaço. Depois disso, você pode simplesmente executar:
Se desejar, você pode definir a
autowrite
opção e ela será salva automaticamente antes de executarmakeprg
:Isso resolve a parte de execução. Não conheço nenhuma maneira de obter essa saída em uma janela dividida que não envolva o redirecionamento para o arquivo.
fonte
:copen
para abrir a "lista de erros" produzida ao executar:make
.em sua própria janela. Infelizmente, para que a saída seja formatada de maneira adequada, alguns detalhes sobre aerrorformat
opção são necessários. Caso contrário, a saída será presumida no formato gcc puts out.:let f=expand("%")|vnew|execute '.!ruby "' . f . '"'
) embora pareça enigmática, funciona exatamente como perguntado pelo autor da pergunta.Para acessar o nome do arquivo do buffer atual, use
%
. Para colocá-lo em uma variável, você pode usar aexpand()
função. Para abrir uma nova janela com um novo buffer, use:new
ou:vnew
. Para canalizar a saída de um comando para o buffer atual, use:.!
. Juntando tudo:obviamente substituindo
ruby
com qualquer comando que você deseja. Useiexecute
para colocar o nome do arquivo entre aspas, então funcionará se o nome do arquivo contiver espaços.fonte
:command! R let f=expand("%")|vnew|execute '.!ruby "' . f . '"'
para ser capaz de usar apenas:R
para executar seu comandoO Vim tem um
!
comando ("bang") que executa o comando shell diretamente da janela do VIM. Além disso, permite lançar uma sequência de comandos que estão conectados com o pipe e lêem stdout.Por exemplo:
equivale a abrir a janela do prompt de comando e iniciar comandos:
Consulte "Dicas do Vim: Trabalhando com comandos externos" para obter detalhes.
fonte
Tenho um atalho para isso no meu vimrc:
Isso grava o buffer atual, torna o arquivo atual executável (somente unix), executa-o (somente unix) e redireciona a saída para .tmp.xyz, em seguida, cria uma nova guia, lê o arquivo e o exclui.
Dividindo:
fonte
:w<CR>:silent !chmod +x %:p<CR>:silent !%:p 2>&1 | tee ~/.vim/output<CR>:split ~/.vim/output<CR>:redraw!<CR>
- isso redireciona o stdout e o stderr para o arquivo temporário e, antes de fazer isso, imprime tudo no stdout, portanto, se um script demorar para ser executado, você o verá funcionando. Além disso, é independente do diretório (recebia erros ao abrir arquivos pelo caminho absoluto). No entanto, ele não executa scripts de forma interativa e não encontrei uma maneira de fazê-lo.Para o script Shell que usei
fonte
O Vim 8 tem um terminal interativo integrado. Para executar o script bash atual em um painel dividido:
ou para breve
%
expande para o nome do arquivo atual.De
:help terminal
:fonte
Eu uso um mecanismo um pouco mais intrusivo por meio de mapas:
Apenas faz com que eu não precise salvar e depois vá. Apenas vá.
fonte
Você pode usar o plugin bexec do vim . Pelo que sei, a última versão é 0,5.
Então:
Dentro do próprio vim, ao editar o arquivo .vba, faça:
Alguma saída aparecerá informando que bexec.vim foi escrito, bem como a documentação, etc.
Agora, você pode testá-lo abrindo seu (qualquer script de idioma que tenha um #! Intérprete funcionando corretamente) no vim e execute
Observação: eu queria que a divisão fosse vertical em vez de horizontal, então fiz:
e alterei o valor de "hor" para "ver" ..
Eu sei que é uma pergunta antiga, mas espero que isso possa ajudar alguém aí. Tenho enfrentado o mesmo problema durante o curso de Engenharia de Inicialização do Coursera, onde o professor Palaji usa o Emacs e eu não gosto do Emacs.
fonte
Com base nas respostas de @SethKriticos e @Cyril, agora uso o seguinte:
Use F9 para configurar a nova janela e F2 para executar seu script e iniciar seu arquivo de saída.
Também adicionei o nome do script ao nome do arquivo de saída, para que você possa usá-lo para vários scripts ao mesmo tempo.
fonte
No seu
.vimrc
você pode colar esta funçãoDepois disso, em
vim
run command:shell python ~/p.py
como exemplo. E você obterá a saída em janela dividida. + Após as alterações nop.py
exemplo você executará o mesmo comando novamente, esta função não criará uma nova janela novamente, ela exibirá o resultado na janela dividida anterior (mesma).fonte
@xorpaul
Eu estava procurando por este script (python / Windows) há algum tempo. Como não há "tee" no Windows, mudei para:
fonte
Basta usar dois pontos e ponto de exclamação como mostrado abaixo
fonte
Eu recomendo o Quickrun do plugin . É rápido e simples de configurar. Aqui está uma pequena demonstração:
fonte