Notepad ++のGrepのような機能?


52

Notepad ++でgrepのような機能を使いたい。

最も単純なバージョンでは、ワードfooを含む現在のバッファーから新しいバッファーにすべての行をコピーできるようにしたいと思います。TextFXプラグインを使用して、なしfooですべての行を非表示にすることができますが、それは私が望むすべてを行いません(失われますAlt- Tab、一致する行のみをコピーすることはできません)。

回答:


79

Ctrl+ F-> [ マーク ]タブに移動-> ブックマーク行を切り替え-> [ すべてマーク ]をクリックします。

選択メニュー検索 - > ブックマーク - > コピーブックマークし行


5
よかった、ありがとう。貧しい人のために「ブックマークされた行をカット」することgrep -vもできます。
ARRG

2
5.4.5などの新しいバージョンでは、「マーク」タブはありません。代わりに、「検索」タブに「マーク行」チェックボックスがあります。また、「Bookmarded Linesをコピー」は「検索」メニューに直接あります。
ピーターモーテンセン

@ARRG現在のバージョンでは、カットされたブックマークされた行が見つからないか、ブックマークされた行がコピーされますが、どこにありますか?
ニコラスセリー16

チャームのように働く:-)
スンダララージゴビンダサミー

12

私はちょうどこの同じ質問を見ていた。あなたが知っているかどうかはわかりません。[検索]ダイアログで、[ 現在のドキュメントすべて検索] を選択すると、下部に一致する行を示すウィンドウがポップアップ表示されます。その後、それを新しいドキュメントにコピーできます。

残念ながら、結果には無関係な情報(行番号など)が含まれていますが、列モードを使用してそれを除外できます。


1
追加された行番号は機能である可能性もあります:)
フランクミュレナー

2
このプラグインは便利ですcode.google.com/p/searchplus
Amarghosh

@Amarghosh素敵なプラグインですが、少し人間工学に欠けています(なぜボタンがあり、キーボードショートカットがないのですか?)。いいキャッチ:)
ベンジュ

@Benji Alt-Qはプラグインを起動します。プラグインウィンドウ内にショートカットキーはありませんが、基本的なタブナビゲーションは有効になっています。プラグインに十分な関心がある場合は、時間が経つにつれて機能を追加していきます。フィードバックをありがとう:)
アマルゴシュ

2

別の優れたソリューションは、NppExecプラグインを使用して、Notepad ++用のgrepコマンドを追加することです。

「ブックマーク」ソリューションに対する主な利点は、特に大きなファイルの場合にはるかに高速に実行され、元のファイルを変更する必要がないことです。Notepad ++でこの機能を使用するには、一度小さなスクリプトを作成する必要があることに注意してください。

私のソリューションの例はWindows向けであり、findstrを使用します。これは、すべてのWindowsマシンで使用可能なgrepのようなコマンドツールです。ただし、もちろん他の任意のgrepクローンを使用することもできます。

ステップ1:NppExecプラグインをインストールする

に移動しPlugins / Plugin Manager / Show Plugin Manager、NppExecまでスクロールダウンし、このプラグインを選択して、[インストール]をクリックします。インストールプロセスを完了するには、Notepad ++を再起動する必要がある場合があります。

ステップ2:NppExec用の小さなスクリプトを作成する

に移動しPlugins / NppExec / Execute、次のスクリプトを入力して「grep」として保存します。

SET local OUTFILE = "c:\temp\$(FILE_NAME).temp"
INPUTBOX "Input filter string"
cmd /c findstr $(INPUT) "$(FULL_CURRENT_PATH)" >$(OUTFILE)
NPP_OPEN $(OUTFILE)

(ご使用の環境でOUTFILEのパスが機能するかどうかを再確認してください)

ステップ3:スクリプトのメニュー項目を追加する(オプション)

に移動しPlugins / NppExec / Advanced Options、下のスクリプト「grep」を選択し、Associated script[OK]をクリックして保存します。NppExecの要求に従ってメモ帳を再起動して、新しいメニュー項目の追加を完了します。

ステップ4:スクリプトのショートカットを追加する(オプション)

に移動しSettings / Shortcut Mapper / Plugin commands、下にスクロールしてスクリプトコマンド「grep」を見つけ、ショートカットを定義します。例えばALT-G


まず第一に、何年も支持されていた素晴らしい答えに感謝します...:-)スクリプトに問題があると思ったのですが、うまくいきませんでした。その後、パスなどを調整することになっていることに気付きましたが、明示的に言及しなかったため、盲目的にコピーアンドペーストするだけです!私は非常に速く働くので、遅くなります:-)
pgr

フィードバックをありがとう。それを答えに追加します。
エリックカルコケン

別の小さなメモ:$(FULL_CURRENT_PATH)ファイルがまだ保存されていない場合、パスは返されません。あなたはそれがどこかに存在することを期待するかもしれません(一時ディレクトリ?)、しかし実際にはそうではありません。この保存されていないファイルの状況は非常に一般的で、ログから何かを貼り付けてgrepするだけです...ファイルがまだ保存されていない場合は、このスクリプトを完璧に保存することができます。 grepする前に手動で。ありがとう。
-pgr

検索文字列にスペースが含まれている場合、これは機能しますか?または他の特殊文字?
G-Manが「Reinstate Monica」と言う

はい、動作します
エリックカルコケン

-1

ステップ5:ドキュメントをすばやく保存してgrepするためのスクリプトを作成する

Plugins / NppExec / Executeに移動し、次のスクリプトを入力して「grep」として保存します。

SET local AUTOSAVEFILE = "%tmp%\ NpPPautosave.tmp"
SET local OUTFILE = "%tmp%\ NpPPautosaveToGrep.temp"
NPP_SAVEAS "%tmp%\ NpPPfile.tmp"
INPUTBOX "GREPの入力文字列"
cmd / c findstr $(INPUT )$(
AUTOSAVEFILE )> $(OUTFILE)NPP_OPEN $(OUTFILE)


ステップ1、2、3、4はどこにありますか?
-Pierre.Vriens

(1)可能な限り、回答はスタンドアロンであることが望ましいです。誰かがあなたの答えを使用する前に(少なくとも)1つのステップを実行する必要があるようです(ヒント:ステップ1)。あなたの答えにそれを含めてください。(2)あなたの答えは、エリック・カルコケンの答えの肩に立っているようです。それを行う場合は、明示的にそうする必要があります。…(続き)
G-Manは「Reinstate Monica」と言います

(続き)…(3)あなたの答えはエリックよりも良いですか?その場合、その方法と理由を説明してください。(実際、答えが何をするのか、それをどのように使用するのかを説明していただければ嬉しいです。)そうでない場合、なぜそれを投稿したのですか?(4)現在のファイル名に基づいたファイル名ではなく、ハードコードされた出力ファイル名を使用する方が優れていると思いますか?(5)findstr現在のファイルではなく、自動保存ファイルで実行することにはいくつかの利点がありますか?(6)なぜあなたの答えはとの両方 C:\tempを使うのC:\tmpですか?……コメントに返信しないでください。回答を編集して、より明確で完全なものにします。
G-Manが「Reinstate Monica」と言う

(1)「誰かの前に行わなければならない1つのステップ」-すべてのErikは1から4に変化します。(2)コメントするには50の評判が必要です。(Erikの投稿をコメントするため)(3)はい、私の答えは小さい方が良いです。なぜならErikの答えは、ドキュメントがハードディスクに保存される前に機能しないからです。grepのためだけに一時ファイルを保存したくありません。「答えとその使用方法」-私のコードは、開いたテキストをnotepad ++で保存し、hddの一時ファイルに保存するだけです。これは「NPP_SAVEAS」という行で、hddにテキストを自動的に保存するだけです。(4)違います!正確ではありません。(5)はい!Erikコアは動作しません。ハードドライブに保存する前に、私の(3)の答えを見てください。
かすみる

(6)Sory、私は急いで間違いを犯しました。私のウィンドウcygwinにはtmpとtemp dirsがあります。「コメントに返信しないでください」-申し訳ありませんが、このコメントを読む前に答えを書きました
カスミール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.