Executando scripts com bash do vim

2

Estou tentando fazer o vim executar o script que estou editando com um mapeamento de teclas, digamos ctrl + x , então usei isso em vimrc

:map <C-x> :!exec_file %<CR>

Para passar o nome do arquivo para um script que eu escrevi que analisa a extensão e chama o intérprete apropriado, isso funciona muito bem até agora.

No entanto, eu queria saber se eu posso chamar bash diretamente com o nome do script e executá-lo já que a maioria dos scripts que eu edito tem uma linha shebang , então tentei este mapeamento:

:map <C-x> :!bash %<CR>

Mas isso não funciona, é possível executar um script passando seu nome para bash?

    
por mux 05.02.2013 / 11:36

2 respostas

7

O Vim já usa um shell (veja :set shell? ) para executar o comando externo; scripts com linhas shebang devem funcionar bem. A maneira canônica de executar o buffer atual é

:!./%

(Prepending ./ para lidar com o diretório atual não sendo parte de PATH . Isso pressupõe que o script já é executável ( :!chmod +x % , talvez feito em um mapeamento / ftplugin.)

Você pode executar novamente com apenas :!! . Além disso, existem soluções mais sofisticadas para a execução de conteúdo de buffer (parcial, não salvo, etc.) em intérpretes externos; verifique a seção de plug-ins do vim.org .

    
por 05.02.2013 / 12:07
0

seems that I have to chmod

não, você não. se o seu executável é da forma

#! /bin/bash
ls -l

o mapeamento

:map <C-x> :! sh ./% <CR>

fará o que quiser, mesmo que o arquivo não seja executável.

    
por 10.08.2018 / 20:23

Tags