ファイルで検索 - 置換ダイアログボックスを使用して、正規表現を使用してファイルを検索して置き換えようとします。開発5.x。これに関する文書はどこにありますか?
検索/置換のためのユーザーインターフェイスは、私が使用した他のIDE(Eclipseなど)とはかなり異なります。
- 正規表現を入力できる検索テキストボックスの代わりに、パターンテキストボックスとテンプレートテキストボックスがあります。テンプレートテキストボックスに
printf
-styleフォーマットオプションがあるようです。 - 「置換」テキストボックスの代わりに「テンプレートに置き換える」テキストボックスがありますが、ここでも
printf
-style 書式設定オプションがあるようです。
KDevelopのドキュメントは次のリンクでリンクされています。KDevelop Wiki、私が見逃していない場合は、それとは何の関係もありません。
文書がない場合は、関連するソースコードへのリンクとその部分の要約で十分です。
ベストアンサー1
%sは、テンプレートと代替テンプレートフィールドの2つの異なるフィールドを表します。テンプレートフィールドの%sは、パターンフィールドに入力した文字列を表します。 「テンプレートの置換」フィールドの場合は、「テキストの置換:」フィールドに入力した文字列を意味します。これは、検索ボタンをクリックするとIDEの下部に表示される「ファイル内の検索/置換」に表示されます。 「桟橋で。
この領域でさまざまなパターンを作成できます。たとえば、ドキュメントで(ベクトル)を「foobar」に置き換えたいとします。 「パターン」フィールドには引用符なしで「ベクトル」を入力し、「テンプレート」フィールドに引用符なしで「(%s)」を入力し、「代替テンプレート」フィールドに引用符なしで「[」を入力できます。 [検索]をクリックし、拡張機能の[置換テキスト]フィールドに引用符なしで「foobar」と入力し、[置換]ボタンをクリックします。
編集する:
以下はいくつかの追加例/説明です。しかし、私はKdevelop開発者ではなく、ソースコードを見たことがなく、試行錯誤で学んだことを報告するだけです。残念ながら、検索 - 置換機能を完全に理解できませんでした。ファイル機能から。
[検索 - 置換]ダイアログボックス(上記)には、次のフィールドがあります。
Pattern
:この文字列はあなたが探している文字列です。正規表現をサポートできますが、Regular expression
チェックボックスを選択した場合にのみ可能です。Template
: 検索文字列を変更するために使用される正規表現です。 "%s"は入力した文字列への参照ですPattern
。%s
複数回使用できます。Pattern
設定が「foo」の場合、Template
「%s%s」パターンは「foofoo」に展開されます。その後、KDevelopは左の関連「foofoo」に一致するテキストを検索します。 「%s」を使用する必要はありませんが、使用できる他の特別な「%」参照があるかどうかはわかりません。フィールドの右側には、さまざまな事前定義されたテンプレートを含むドロップダウンメニューがあります。自分で定義できるかどうかわかりません。Replacement template
:代替文字列を装飾するために使用されるパターン(正規表現はアクティブではありません)。疑いなく、KDevelopチームはReplacement text
フィールドを別のドックに配置することにしました(下の写真を参照)。このフィールドReplacement text
に入力する内容は「%s」に展開されます。同様に、「%s」を複数回使用できます。 「%s」を使用する必要はありませんが、使用できる他の特別な「%」参照があるかどうかはわかりません。Regular expression
:Pattern
正規表現が使用可能かどうかを決定します。Case sensitive
:大文字と小文字を区別する検索を切り替えます。Location(s)
:検索と置換が行われる場所を具体化します。右側では、実行したい特定のディレクトリを参照するか、事前定義されたオプションのドロップダウンメニューから選択できます。独自の事前定義が可能かどうかはわかりません。Depth
:これが何をしているのか完全にはわかりませんが、Find-Replaceプロジェクトディレクトリの深さを制限するようです。Limit to project files
:メニューバーまたは右クリックメニューからファイルから検索/置換にアクセスすると、このオプションは永久に無効になっているように見えます。これは、以下にリストされているパターンを使用してフィルタファイルを検索できるようにするようです。Files
。私の考えでは、これがバグである可能性があるため、有効/無効にする必要があります。これを切り替えるには、ファイル内の検索/置換ドックの虫眼鏡を介してファイル内の検索/置換にアクセスする必要があります。画像をご覧ください。Files
:検索と置換を実行するファイル形式のカンマ区切りリスト。Exclude
:検索と置換を実行するときに無視するディレクトリ(プロジェクトルートベース)とファイルのカンマ区切りリスト。
上の画像では、「iomanip」の特定のインスタンスを検索しています。このTemplate
モードでは、 '<>'で囲まれ、 'iomanip'の 'i'文字の左側に可変桁数があるインスタンスのみを検索します。では、Replacement template
「%s」参照の2つのインスタンスを含む愚かな角括弧パターンを入力しました。各「%s」はDockのフィールドに入力した内容に展開され、Replacement text
ファイル内の検索 - 置換ダイアログボックスのボタンをクリックするとIDEの下部に表示されます。Search
以下を参照してください。
ご覧のとおり、ファイル内の検索/置換ドックがIDEの下部に表示されます。ここでは、フィールドに「IamTheBest」と入力しましたReplacement text
。この文字列は、Replacement template
前のダイアログボックスのフィールドの「%s」の拡張文字列です。
Template
ツリーには、前のダイアログボックスで提供された拡張パターンに一致するヒットリストがあります。<29837489237482374iomanip>
とは<iomanip>
正しいですが、そうではありません"iomanip"
。ツリーで検索および置換プロトコルに含める項目を選択できます。それでは、すべて選択したままにします。ドロップダウンメニューでは、前の検索 - 置換手順から選択できます。ボタンをクリックすると、Replace
次のようになります。
以下は、いくつかの追加例/使用例です。
- 複数の "%s" を使用する方法を示します。 簡単に言うと、左の関連である「foo」の2つのインスタンスを検索し、それをさまざまな愚かな単語で区切られた「Bar」の4つのインスタンスに置き換えます。 12行の単一の「foo」と11行の3番目の「foo」は変更されていません。
Template
事前定義された「配布」モードの1つを実演します。 割り当てコンテキストでは「thisNumber」を「0」にのみ変更しますが、同等コンテキストでは変更しません。
役に立ったことを願っています!
編集2:
文書または少なくともソースコードへのリンクを要求した方法を考慮して、ソースコードにリンクすることにしました。または、KDevelopチームがgithubに投稿した内容は次のとおりです。
ファイルの検索/置換機能は、上記のgrepviewプラグインにカプセル化されています。具体的には、grputil.hとgrputil.cppを見てください。ここではTemplate
、フィールドに '%s'拡張の代替ロジックを見つけることができますReplacement template
。
編集3:
このオプションの私の表現はLimit to Project Files
正確ではなく、現在のソースコードを調べて、これが何をすべきかを調べています。
編集4:まだプロジェクトの制限を特定していませんが、この検索/置換メニュー(ウィンドウの右上隅にある疑問符)に「これは何ですか?」機能があることに気づきました。クリックすると?その後、いくつかのフィールドをクリックすると、特に検索モードフィールドに関するより有用な情報が表示されます。表示される「これは何ですか?」というテキストです。
下の「正規表現」を選択解除すると、生の文字列として扱われます。これは、すべてのメタ文字がエスケープされることを意味します。
可能なメタ文字は次のとおりです。
。 - すべての文字と一致
^ - 行の先頭に一致します。
$ - 行末と一致
\b - 単語の境界と一致
\ s - 空白文字と一致します。
次の繰り返し演算子があります。
? - 前の項目は最大1回一致します。
* - 前の項目と0回以上一致します。
+ - 前の項目と複数回一致します。
{n} - 前のエントリと正確にn回一致します。
{n,} - 前のエントリとn回以上一致します。
{、n} - 前のエントリと最大n回一致
{n,m} - 前のエントリは最小 n 回、最大 m 回一致します。
また、\n記号を使用して、括弧内のサブ式を逆参照することもできます。
詳細については、www.pcre.orgまたはman pcresyntaxをご覧ください。