私は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
に警告するだけです。
ありがとう!
アンパサンドの前に引数を渡すためにbash
関数を試すことができます。
np ()
{
/cygdrive/c/Program\ Files/Notepad++/notepad++.exe $* &
}
[〜#〜] but [〜#〜]より大きな問題は、ではないNotepad ++が終了するまで待機します。 $EDITOR
を使用するシェルコマンドは、通常、で設計されており、エディターが編集の完了を示す通知を返すまで待機します。これは通常、エディターが終了したことを意味します(例:vi
またはnano
)。
EmacsにはEDITOR
をemacsclient
に設定する方法があり、編集が完了したら、魔法のキーストローク(C-x #
)を押して編集が完了したことを示します。 Notepad ++にcygwinユーザー向けの同様のものがあった場合、これがどのように機能するかを確認できます。
もう1つの代替方法は、プレーンで退屈なシンプルなメモ帳を編集者として使用し、Notepad ++を頻繁に使用するために予約することです(私は このブログ投稿 からアイデアを得ました)
簡単なシンボリックリンクで解決しました。
ln -s /cygdrive/c/Program\ Files\ \(x86\)/Notepad++/notepad++.exe ~/bin/npp
もちろん〜/ binは$ PATHにあります。
ファイルを開くには、cygwinプロンプトから「npp filename.txt」と入力します。コマンドの最後に&を使用する必要はありませんでした。
これにより、別のウィンドウを開くのではなく、現在実行中のNotepad ++ウィンドウにタブがスローされます。さらに、ファイルが既に開いている場合は、再度開かれません。
export EDITOR = "/ cygdrive/c/Program\Files\'(x86)'/Notepad ++/notepad ++。exe"
エイリアスnp = "/ cygdrive/c/Program\Files\'(x86)'/Notepad ++/notepad ++。exe"
x86でも動作します
コマンドの最後にスペースとアンパサンド(&)を追加するだけで、Notepad ++を開いたまま、シェルはすぐに入力モードに戻ります。
編集時:
エイリアスに追加することについては話していません。次のように、コマンドの最後に追加します。
np whatever &
エイリアスは補間された引数を取りません。代わりに関数を使用してください。
function np() { /cygdrive/c/Program\ Files/Notepad++/notepad++.exe $1 & }
#!/bin/sh
/cygdrive/c/Program\ Files/Notepad++/notepad++.exe $@ &
このスクリプトはNotepad ++をバックグラウンドで起動し、「&」の前にコマンドライン引数を渡します
Dougの助言 のように、デフォルト$EDITOR
ブロックしないと問題が発生する可能性があります。
これを達成するためにcygwinには特定のコマンドがあります。 run.exeをダウンロードし、それがPATHにあることを確認してください(またはPATHに実行可能ファイルが含まれています)。
alias np="run.exe /cygdrive/c/Program\ Files/Notepad++/notepad++.exe"