web-dev-qa-db-ja.com

シェルに終了コードを待たせずにCygwinからNotepad ++を使用する

私はCygwinを実行していて、Macにあるようなmate whateverを入力してTextMateのインスタンスを開くことができるような、シェルのメインエディターとしてNotepad ++を使用したいと考えています。 Cygwinの~/.bashrcファイルには、次のエイリアスと環境変数が設定されています。

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

これはほとんど機能します。np whateverと入力するか、Cygwinプログラムが$ EDITORを呼び出すと、Notepad ++が開きます。

ただし、シェルはNotepad ++が閉じるまで待機し、それまでは入力を許可しません。これはbashに固有の可能性がありますが、CygwinからNotepad ++を開いてシェルにnotに終了コードの続行を待機するように指示するにはどうすればよいですか?エイリアスコマンドの最後に&を追加しても正しく機能しません。無題のファイルを開き、ファイルを開く代わりにfilename: command not foundに警告するだけです。

ありがとう!

19
Andrew

アンパサンドの前に引数を渡すためにbash関数を試すことができます。

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

[〜#〜] but [〜#〜]より大きな問題は、ではないNotepad ++が終了するまで待機します。 $EDITORを使用するシェルコマンドは、通常、で設計されており、エディターが編集の完了を示す通知を返すまで待機します。これは通常、エディターが終了したことを意味します(例:viまたはnano)。

EmacsにはEDITORemacsclientに設定する方法があり、編集が完了したら、魔法のキーストローク(C-x #)を押して編集が完了したことを示します。 Notepad ++にcygwinユーザー向けの同様のものがあった場合、これがどのように機能するかを確認できます。

もう1つの代替方法は、プレーンで退屈なシンプルなメモ帳を編集者として使用し、Notepad ++を頻繁に使用するために予約することです(私は このブログ投稿 からアイデアを得ました)

16
Doug Harris

簡単なシンボリックリンクで解決しました。

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

もちろん〜/ binは$ PATHにあります。

ファイルを開くには、cygwinプロンプトから「npp filename.txt」と入力します。コマンドの最後に&を使用する必要はありませんでした。

これにより、別のウィンドウを開くのではなく、現在実行中のNotepad ++ウィンドウにタブがスローされます。さらに、ファイルが既に開いている場合は、再度開かれません。

8
Ethan Vaughn

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

エイリアスnp = "/ cygdrive/c/Program\Files\'(x86)'/Notepad ++/notepad ++。exe"

x86でも動作します

3
mlanzero

コマンドの最後にスペースとアンパサンド(&)を追加するだけで、Notepad ++を開いたまま、シェルはすぐに入力モードに戻ります。

編集時:

エイリアスに追加することについては話していません。次のように、コマンドの最後に追加します。

np whatever &

2

エイリアスは補間された引数を取りません。代わりに関数を使用してください。

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

このスクリプトはNotepad ++をバックグラウンドで起動し、「&」の前にコマンドライン引数を渡します

Dougの助言 のように、デフォルト$EDITORブロックしないと問題が発生する可能性があります。

1
Leftium

これを達成するためにcygwinには特定のコマンドがあります。 run.exeをダウンロードし、それがPATHにあることを確認してください(またはPATHに実行可能ファイルが含まれています)。

alias np="run.exe /cygdrive/c/Program\ Files/Notepad++/notepad++.exe"
0
Rich Homolka