Eu uso o vim para scripts bash. às vezes, não quero criar um novo arquivo, torná-lo executável, executá-lo e removê-lo. Quero dizer os scripts que serão usados apenas uma vez.
Por exemplo, eu abro o vim e digito isto:
#!/bin/bash
ll | while read line
do
echo $line
done
Não salvei este arquivo, apenas uso o vim para simplificar o bash-scripting. Eu sei que posso executar um comando bash via !
no vim. Mas e quanto a executar tudo o que está no buffer?
command-line
external-command
bash
St.Antario
fonte
fonte
<C-x><C-e>
e executá-la na gravação, certo?set -o vi
, poderá pressionarEsc-v
para editar a linha de comando no vi. EntãoEsc-:wq
para executar.Respostas:
Eu escrevi uma resposta bastante extensa sobre isso no estouro de pilha . A idéia básica é que, como o comando write trata de gravar e não salvar , é possível gravar o texto no buffer em um programa externo, como python ou bash. No seu caso, você gostaria de fazer algo como:
ou
Esses comandos literalmente apenas escrevem o texto no seu buffer diretamente no programa especificado
!
, o que é conveniente, pois você não precisa salvar um arquivo. Obviamente, você também pode fazer algo como:que salva seu arquivo e o executa como um script bash. Você pode escolher o que fizer mais sentido para você.
fonte
:w !bash -a test
, mas tem "não pode executar o arquivo binário"test
arquivo vazio , ele funciona bem para mim. O que o comando deve fazer e o que devetest
conter?test
conter?test
é apenas um argumento para-a
.test
deveria ser um arquivo. Não tenho muita certeza do que fazer. Se você está tentando algo complexo, pode ser melhor salvá-lo em um arquivo. Pode valer a pena fazer uma pergunta separada, para que você possa fornecer mais detalhes. Provavelmente, também seria uma boa pergunta para Unix e Linux.Cenário: você está trabalhando no shell bash. Primeiro, verifique se o modo de edição local é vi:
Agora, quando você estiver trabalhando em um comando longo como o seguinte, pressione Esc+ v.
Isso carregará seu comando em uma
vi
sessão temporária . Agora você pode editá-lo como quiser e até adicionar outro comando ...Quando você terminar de editar, digite Esc
:wq
e os comandos serão executados, por exemplo:fonte
Esc
chave;)Esc
chaves !? Como eles podem usar o Vim então?Esc
chave ao executar Vim em um terminal.