シェルが終了コードを待つことなく、CygwinのNotepad ++を使用する


19

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

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 ++を開き、シェルに終了コードの続行を待たないように指示するにはどうすればよいですか?&aliasコマンドの最後にa を追加しても正しく機能しませんfilename: command not found。ファイルを開く代わりに、無題のファイルを開いて警告するだけです。

ありがとう!

回答:


16

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

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

しかし、より大きな問題は、Notepad ++が終了するまで待たないという全体的な考えかもしれません$EDITOR通常、使用するシェルコマンドは、編集が完了したことをエディターが表示するまで待機するように設計されています。これは通常、エディタが終了した(例えばとしていることを意味vinano)。

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

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


素晴らしい-それは働いた。私はバニラのメモ帳をEDITORとして、Notepad ++をnp()として使用します
アンドリュー

また、メモ帳では編集が完了するのを待つ必要があります
-codezombie

8

私は、単純なシンボリックリンクでそれを解決しました。

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

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

ファイルを開くには、cygwinプロンプトから「npp filename.txt」と入力するだけです。私は、コマンドの最後に&を使用することがなかったしました。

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


〜/ binを$ PATHに追加するにはどうすればよいですか?
エリックf

3

輸出EDITOR = "/ cygdriveの/ C /プログラム\ファイル\ '(x86の)' /メモ帳++ /メモ帳++。exeファイル"

別名NP = "/ cygdriveの/ C /プログラム\ファイル\ '(x86の)' /メモ帳++ /メモ帳++。exeファイル"

x86でも動作します


2

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

編集時:

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

np whatever &


1
ああ これは今のところよさそうだ。それを入れる方法はあり.bash_profileますので、いつもタイプする必要はありませんか?
アンドリュー

私はbashの専門家ではありませんが、エイリアスに引数である変数を使用させ、最後にアンパサンドを含めることができると思います。bashを賢く使っている人なら、おそらく正確な構文を教えてくれるでしょう。:)窓DEV環境で作業している間、私はまったく同じことを行うために使用されるので、私は、あなたの質問に答えるために方法を知っていた
ロバート・S Ciaccioを

Bashでエイリアスに変数を使用させることはできません。関数またはスクリプトを使用する必要があります。
追って通知があるまで一時停止します。

1

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

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

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

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

ダグは助言デフォルト持つ、$EDITOR問題を引き起こす可能性がブロックされません。


0

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

alias np="run.exe /cygdrive/c/Program\ Files/Notepad++/notepad++.exe"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.