Utilizzare Notepad ++ da Cygwin senza che la shell attenda un codice di uscita


19

Sto usando Cygwin e vorrei usare Notepad ++ come l'editor principale della shell, un po 'come quello che ho sul mio Mac, dove posso digitare mate whateverper aprire un'istanza di TextMate. Nel mio ~/.bashrcfile in Cygwin ho il seguente alias e set di variabili d'ambiente:

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

Funziona principalmente: quando scrivo np whatevero quando un programma Cygwin richiede $ EDITOR, si apre Notepad ++.

Tuttavia, la shell attende che Notepad ++ sia chiuso e non consentirà alcun input fino ad allora. Questo può essere specifico per bash, ma come posso aprire Notepad ++ da Cygwin e dire alla shell di non aspettare che un codice di uscita continui? L'aggiunta di &a alla fine del comando alias non funziona correttamente: apre solo un file senza titolo e avvisa filename: command not foundinvece di aprire il file.

Grazie!

Risposte:


16

Potresti provare una bashfunzione per passare gli argomenti prima della e commerciale:

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

MA il problema più grande potrebbe essere l'idea di non aspettare fino alla chiusura di Notepad ++. I comandi di Shell che utilizzano in $EDITORgenere sono progettati per attendere fino a quando l'editor non restituisce un'indicazione che la modifica è stata completata. Questo di solito significa che l'editor è uscito (ad es. Con vio nano).

Emacs ha un modo per impostare il vostro EDITORa emacscliente poi quando sei Fine modifica, si colpisce un tasto magica ( C-x #) per indicare che la modifica è stata completata. Se Notepad ++ avesse qualcosa di simile per gli utenti di Cygwin, posso vedere come funzionerebbe.

Un'altra alternativa è usare Notepad semplice, noioso e semplice come EDITOR e riservare Notepad ++ per un uso intenso (ho preso l'idea da questo post sul blog )


Fantastico, ha funzionato. Vado con il Blocco note alla vaniglia come EDITOR e Notepad ++ come np ()
Andrew

Il blocco note richiede anche l'attesa del completamento della modifica
codezombie,

8

L'ho risolto con un semplice link simbolico.

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

Ovviamente ~ / bin è nel mio $ PATH.

Ora per aprire un file basta digitare "npp nomefile.txt" dal prompt di cygwin. Non ho dovuto usare il & alla fine del comando.

Ciò genererà anche una scheda nella finestra di Notepad ++ attualmente in esecuzione anziché aprirne un'altra - E se il file è già aperto, non lo riaprirà.


Come si aggiunge ~ / bin a $ PATH?
eric f

3

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

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

funziona anche per x86


2

Basta aggiungere uno spazio e una e commerciale (&) alla fine del comando e la shell tornerà immediatamente alla modalità di input lasciando aperto Notepad ++.

in modifica:

Non sto parlando di aggiungerlo al tuo alias. Aggiungilo alla fine del tuo comando in questo modo:

np whatever &


1
Ooh. Questo sembra buono finora. C'è un modo per inserirlo in .bash_profilecosì non ho bisogno di digitarlo tutto il tempo?
Andrew,

Non sono un esperto di bash ma presumo che potresti fare in modo che il tuo alias prenda una variabile che è l'argomento, e alla fine include anche la e commerciale. Qualcuno più intelligente con bash potrebbe probabilmente darti la sintassi esatta. Sapevo solo rispondere alla tua domanda perché ero solito fare esattamente la stessa cosa mentre lavoravo in un ambiente Windows dev :)
Robert S Ciaccio,

Non puoi fare in modo che un alias prenda una variabile in Bash. Devi usare una funzione o uno script.
In pausa fino a nuovo avviso.

1

Gli alias non accettano argomenti interpolati. Utilizzare invece una funzione.

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

1
#!/bin/sh
/cygdrive/c/Program\ Files/Notepad++/notepad++.exe $@ &

Questo script avvia Notepad ++ in background, passando gli argomenti della riga di comando prima del '&'

Come ha consigliato Doug , avere un valore predefinito $EDITORche non si blocca può causare problemi.


0

C'è un comando specifico in Cygwin per ottenere questo risultato. Assicurati di scaricare run.exe e assicurati che sia nel PERCORSO (o che il PERCORSO contenga l'eseguibile)

alias np="run.exe /cygdrive/c/Program\ Files/Notepad++/notepad++.exe"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.