Kabuk bir çıkış kodu beklemeden Cygwin'den Notepad ++ kullanın


19

Cygwin kullanıyorum ve ana kabuk düzenleyicisi olarak Notepad ++ kullanmak istiyorum, bir tür mate whateverTextMate örneğini açmak için yazabileceğim Mac'imde olduğu gibi. Benim içinde ~/.bashrcCygwin dosyasında aşağıdaki takma ve ortam değişkeni ayarlanmamış:

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

Çoğunlukla çalışır: yazdığımda np whateverveya bir Cygwin programı $ EDITOR'u çağırdığında, Notepad ++ açılır.

Ancak, kabuk Notepad ++ kapanana kadar bekler ve o zamana kadar herhangi bir girdiye izin vermez. Bu bash özgü olabilir, ama nasıl Cygwin dan ++ Defteri'ni açmak ve kabuk söyleyebilir değil devam etmek için bir çıkış kodu için beklemek? Diğer &ad komutunun sonuna a eklemek düzgün çalışmaz; yalnızca başlıksız bir dosya açar filename: command not foundve dosyayı açmak yerine uyarır .

Teşekkürler!

Yanıtlar:


16

bashVe işareti, argümandan önce iletmek için bir işlev deneyebilirsiniz :

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

AMA büyük bir sorun fikrine olabilir değil Notepad ++ çıkar dek bekleyen. $EDITORGenellikle kullanılan kabuk komutları , düzenleyici düzenlemenin tamamlandığına dair bir gösterge gönderene kadar beklemek üzere tasarlanmıştır . Bu genellikle editörün çıkmış olduğu anlamına gelir (örneğin viveya ile nano).

Emacs ayarlamak için bir yol var senin EDITORiçin emacsclientve tamam olarak düzenleme olduğunuzda sonra, bir büyülü tuş (vurmak C-x #o düzenleme tamamlandığında belirtmek için). Notepad ++, cygwin kullanıcıları için benzer bir şeye sahipse, bunun nasıl çalıştığını görebilirim.

Başka bir alternatif, EDITOR olarak düz, sıkıcı, basit Not Defteri kullanmak ve ağır kullanım için Notepad ++ 'ı ayırmaktır ( Bu blog yazısından fikri aldım )


Harika - işe yaradı. EDITOR olarak vanilya Not Defteri ve np () olarak Notepad ++ ile gideceğim
Andrew

Not Defteri ayrıca düzenlemenin tamamlanmasını bekliyor
codezombie

8

Basit bir symlink ile çözdüm.

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

Tabii ki ~ / bin benim $ PATH içinde.

Şimdi bir dosyayı açmak için sadece cygwin komut isteminden "npp dosyaadı.txt" yazıyorum. Komutun sonunda & kullanmak zorunda kalmadım.

Bu, başka bir sekmeyi açmak yerine şu anda çalışan Notepad ++ penceresine bir sekme atar - VE dosya zaten açıksa, tekrar açmaz.


~ PAT / $ PATH dosyasına nasıl eklersiniz?
eric f

3

dışa aktarma EDITOR = "/ cygdrive / c / Program \ Files \ '(x86)' / Notepad ++ / notepad ++. exe"

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

x86 için de çalışır


2

Komutunuzun sonuna bir boşluk ve bir ve işareti (&) ekleyin, kabuk notepad ++ açık bırakılırken hemen giriş moduna dönecektir.

düzenleme sırasında:

Takma adınıza eklemekten bahsetmiyorum. Bunu komutunuzun sonuna şu şekilde ekleyin:

np whatever &


1
Ooh. Bu şimdiye kadar iyi görünüyor. Bunu koymak için bir yolu var mı, .bash_profilebu yüzden her zaman yazmaya gerek yok?
Andrew

Ben bash uzmanı değilim ama takma adınızın argüman olan bir değişken almasını sağlayabileceğinizi ve sonunda işareti de ekleyebileceğinizi varsayıyorum. Bash ile daha akıllı biri size muhtemelen tam sözdizimini verebilir. Sadece sorunuzu nasıl cevaplayacağımı biliyordum çünkü bir windows dev ortamında çalışırken aynı şeyi
yapardım

Bash'ta bir takma adın değişken almasını sağlayamazsınız. Bir işlev veya komut dosyası kullanmanız gerekir.
sonraki duyuruya kadar duraklatıldı.

1

Takma adlar enterpolasyonlu argümanlar almaz. Bunun yerine bir işlev kullanın.

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

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

Bu komut dosyası, Not Defteri ++ uygulamasını arka planda başlatır ve komut satırı bağımsız değişkenlerini '&'

As Doug tavsiye varsayılan sahip $EDITORsorunlara neden olabilir engellemez.


0

Cygwin'de bunu başarmak için özel bir komut var. Run.exe dosyasını indirdiğinizden ve PATH'nizde (veya PATH'nizin yürütülebilir dosyayı içerdiğinden) emin olun

alias np="run.exe /cygdrive/c/Program\ Files/Notepad++/notepad++.exe"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.