Use o Notepad ++ do Cygwin sem que o shell espere por um código de saída

19

Estou executando o Cygwin e gostaria de usar o Notepad ++ como editor de shell principal, como o que eu tenho no meu Mac, onde eu posso digitar mate whatever para abrir uma instância do TextMate. No meu arquivo ~/.bashrc no Cygwin eu tenho o seguinte alias e conjunto de variáveis de ambiente:

export EDITOR="/cygdrive/c/Program\ Files/Notepad++/notepad++.exe"
alias np="/cygdrive/c/Program\ Files/Notepad++/notepad++.exe"

Funciona principalmente: quando digito np whatever ou quando um programa Cygwin chama $ EDITOR, o Notepad ++ é aberto.

No entanto, o shell aguarda até que o Notepad ++ seja fechado e não permitirá entrada até então. Isso pode ser específico para o bash, mas como posso abrir o Notepad ++ do Cygwin e dizer ao shell para não esperar que um código de saída continue? Adicionar um & ao final do comando alias não funciona corretamente - ele apenas abre um arquivo sem título e avisa filename: command not found em vez de abrir o arquivo.

Obrigado!

    
por Andrew 28.07.2010 / 20:26

7 respostas

16

Você pode tentar uma função bash para passar os argumentos antes do "e" comercial:

np ()
{
    /cygdrive/c/Program\ Files/Notepad++/notepad++.exe $* &
}

MAS o maior problema pode ser a ideia de não aguardar até o Notepad ++ sair. Os comandos do shell que usam $EDITOR normalmente são projetados para aguardar até que o editor retorne uma indicação de que a edição foi concluída. Isso geralmente significa que o editor saiu (por exemplo, com vi ou nano ).

O Emacs tem uma maneira de definir seu EDITOR para emacsclient e quando você terminar de editar, você pressiona um pressionamento de tecla mágico ( C-x # ) para indicar que a edição está completa. Se o Notepad ++ tivesse algo semelhante para os usuários do cygwin, eu posso ver como isso funcionaria.

Outra alternativa é usar o Notepad simples, chato e simples como seu EDITOR e reservar o Notepad ++ para uso pesado (eu tive a idéia de esta postagem no blog )

    
por 28.07.2010 / 21:10
8

Eu resolvi isso com um simples link simbólico.

ln -s /cygdrive/c/Program\ Files\ \(x86\)/Notepad++/notepad++.exe ~/bin/npp

Claro que o ~ / bin está no meu $ PATH.

Agora, para abrir um arquivo, basta digitar "npp filename.txt" no prompt do cygwin. Eu não tive que usar o & no final do comando.

Isso também lançará uma tabulação na janela do Notepad ++ em execução no momento, em vez de abrir outra - E se o arquivo já estiver aberto, ele não será aberto novamente.

    
por 25.02.2011 / 18:20
3

export EDITOR="/cygdrive/c/Program\ Files\ '(x86)'/Notepad++/notepad++.exe"

alias np="/cygdrive/c/Program\ Files\ '(x86)'/Notepad++/notepad++.exe"

também funciona para x86

    
por 02.10.2013 / 00:16
2

Basta adicionar um espaço e um e comercial (&) ao final do comando e o shell retornará imediatamente ao modo de entrada enquanto deixa o notepad ++ aberto.

em edição:

Não estou falando em adicioná-lo ao seu alias. Adicione-o ao final do seu comando da seguinte forma:

np whatever &

    
por 28.07.2010 / 20:28
1

Os aliases não aceitam argumentos interpolados. Use uma função em vez disso.

function np() { /cygdrive/c/Program\ Files/Notepad++/notepad++.exe $1 & }
    
por 28.07.2010 / 21:17
1
#!/bin/sh
/cygdrive/c/Program\ Files/Notepad++/notepad++.exe $@ &

Este script inicia o Notepad ++ em segundo plano, passando os argumentos da linha de comando antes do '&'

Como Doug aconselhado , ter um $EDITOR padrão que não bloqueia pode causar problemas.

    
por 28.07.2010 / 21:27
0

Existe um comando específico no cygwin para conseguir isso. Certifique-se de baixar o arquivo run.exe e certificar-se de que ele esteja em seu PATH (ou o seu PATH contém o executável)

alias np="run.exe /cygdrive/c/Program\ Files/Notepad++/notepad++.exe"
    
por 04.08.2010 / 19:02