Git para Windows: executa o vim em segundo plano sem "e" comercial (&)

4

Na minha máquina Windows, a execução do gVim parece amarrar o git do shell do Windows, enquanto que, se eu executar a partir do prompt de comando, esse não é o caso.

Como posso executar o gVim (ou qualquer outro programa, na verdade) sem amarrar o shell e ter que adicionar um '&' ao final de cada comando?

Qualquer ajuda sobre esta questão seria muito apreciada.

Git Bash:

$ gvim hello.txt
[Terminal is now blocked]
[Hit ctrl+c or close gvim, terminal takes input]
$ 

Prompt de comando do Windows:

> gvim hello.txt
> [ Can still access cursor and execute commands]
    
por funseiki 20.03.2013 / 19:52

3 respostas

2

A solução mais rápida (e possivelmente mais suja) que eu encontrei para usar o gvim da maneira que eu estou acostumado é modificar o arquivo .bashrc.

Eu adicionei a seguinte função ao final:

gvim()
{
    /path/to/gvim.exe "$@" &
}

O "$@" recebe argumentos passados do shell, e o & força o gvim a ser executado em segundo plano.

Eu gostaria de não marcar essa resposta como aceita, pois pode haver uma solução melhor (por exemplo, eu estraguei as configurações do meu msys / vim em algum lugar).

    
por 27.03.2013 / 18:42
1

A resposta que descobri que funciona mais como na minha caixa de Linux é definir um alias em seu .bashrc:

alias gvim='start gvim'

Esta ainda não é a solução mais ideal, mas parece um pouco mais limpa para mim do que criar uma função. Também não imprime a linha de identificação do processo (exemplo: "[1] 6840") quando você o executa ou quando você fecha a janela externa.

Isso ainda tem o problema da correção de função que só funciona para as coisas para as quais você cria um alias. Então o bloco de notas , por exemplo, ainda bloqueia seu bash, a menos que você crie um alias start notepad . Com base em esta postagem no blog do MSDN , parece que os executáveis do Windows têm um sinalizador que diz ao console se é ou não um aplicativo GUI, mas pelo que eu posso ver, o git bash não diferencia com base nesse sinalizador da mesma maneira que o cmd.exe faz. Se você pudesse anexar algo a cada comando digitado que verificaria o .exe para o sinalizador da GUI e prefixar iniciar com base no seu resultado, então seria bom ir.

    
por 13.01.2015 / 23:18
0

Você pode executar qualquer programa em segundo plano do bash usando & :

gvim &

O Gvim é diferente da maioria dos programas e normalmente se coloca em segundo plano sem a necessidade do & . Para executá-lo em primeiro plano, você normalmente precisa iniciá-lo com a opção -f . Eu não sei porque o gvim não está se comportando assim do bash no Windows.

    
por 20.03.2013 / 22:40