AUCTeXのマルチファイルプロジェクトを検索して置換しますか?


8

私は、LaTeXドキュメントを含め、私が書いているすべてのもので使用する唯一のエディタとしてEmacsを採用しようとしています。私はその目的にかなり役立つWYSIWYGエディター、つまりTexStudioまたはTXSから来ました。TXSからEmacsへの移行について、TXSが大規模な正規表現クエリ検索を実行する方法と、プロジェクトに関連する.texファイルのみへの検索の一致と制限を強調表示に置き換える方法がまだありません。Emacsで今はそれがとても恋しいです。以下のTXSのスクリーンショットを参照してください。

マルチファイルLaTeXプロジェクトでのTeXStudioクエリ ここに画像の説明を入力してください

Emacsで実現するワークフローのポイントを強調したいと思います。

  1. RegExpクエリの検索と置換は、プロジェクト関連の.texファイルでのみ行われます。
  2. 試合のハイライト
  3. ハイライト表示された結果の概要をまとめて扱いやすいレイアウトで表示します(MagitEmacsでを押しlて別のキーを押すlC-x d、Diredモードと同じように 押すと、ログビューに似ています)
  4. 実行された、または残った置換または検査の一致の量を知る方法、およびクエリを停止する不器用なキーストロークによってクエリが壊れた場合にクエリを再開する方法
  5. すべての関連ファイルを閉じて保存し、このクエリを呼び出す前の状態に戻すことにより、この乱雑なクエリをクリーンな方法で解消します

私はこの投稿を読みましたが、私の意図はCW、誰もが彼の最良のワークフローを共有して、この一般的な仕事を成し遂げることができるようになることです。私の現在のアプローチは次のとおりです:

最初のワークフロー

  1. Diredモード% gは、その正規表現を含むすべてのファイルをマークします。短所:これには、非.texファイルを含む、プロジェクトに関係のないファイルも含まれます。
  2. C-x 3 新しいバッファで個別に照会する必要のあるマークされたファイルの方向の概要として最初のバッファを監視しながら、新しいバッファを開きます
  3. によるクエリの実行C-c q。確認!せずにすべてを置き換えるなどの非常に優れたスイッチがあり、開いているファイル内の一致を強調表示します。しかし、これはマークされたすべてのファイルに対して毎回同じクエリを実行する必要があることを意味します。
  4. マークされたすべてのファイルを実行した後C-x s !、1回のキーストロークですべてを保存するためにヒットしました。ふew!

ここに画像の説明を入力してください

2番目のワークフロー-推奨

  • .texファイル% mのみをマークするために、direxpモードでregexp を使用してすべてのファイルにマークを付けると.tex、基本的に実行\.texすると、そこに移動します。
  • C-x 3 上記と同じように、1つのバッファを概要用に、もう1つのバッファをクエリ用に保持します
  • QクエリであるDired内で実行すると、マークされたファイルでのみ正規表現を置き換えます。あるいはA、正規表現検索クエリのみです。本格的なクエリが実行され、ヘルプメニュー?が提供さ れます
  • C-x s !すべての混乱を保存して閉じます。そうしないと、開いているファイルを1つずつ閉じなければならず、面倒です。私たちが気になったものだけを閉じる方法があるといいのですが。

ここに画像の説明を入力してください

マルチファイルでTXSの正規表現検索/置換クエリを概算するにはどうすればよいですか?

注意

  • Windows 7上のEmacs 24.4

この質問には現在、広すぎるという「近い」投票があり、私は同意する傾向があります。質問をより個別のバージョンに絞り込んでください(おそらく、「複数のファイルでTeXStudioの正規表現クエリ検索を概算するにはどうすればよいですか?」「あなたの最高のワークフローは何ですか?」非常に幅広く、意見に基づく長い回答が得られる可能性があります。
ダン

現在、完全な回答を書くことはできませんが、wgrepを調べてください。
マラバルバ2015年

@Malabarba、これが投稿で言及されている基準を満たすと思われる場合は、コメントを回答にア​​ップグレードすることを検討してください。
博士号

回答:


3

私が正しく理解している場合は、プロジェクトでテキストパターンを検索する必要があり、HelmとともにProjectileを使用することができます。

  • M-x helm-projectile-grep
  • テキストパターンまたは正規表現パターンを入力します。
  • 入力したすべての文字の更新された結果を表示します。

これはのデモですhelm-projectile-grep

helm-projectile-grep

別のバッファーに保存して、後でSave results in grep bufferアクションを使用して参照できます(TABデフォルトでは、を使用してアクションバッファーに切り替えます)。

Helmについて聞いたことがない場合は、Helmのチュートリアルを読むことができます。Helm Projectileのデモとガイダンスについては、Helm Projectileチュートリアルをご覧ください。

別の方法として、rgrep組み込みのを使用することもできます。

  • M-x rgrep
  • Search for:プロンプトにテキスト/正規表現のパターンを入力してください、つまり「テスト」
  • 内を検索するファイルの種類を入力しSearch for "test" in file:、すなわち*.tex
  • 再帰的に検索するディレクトリを入力してください(したがって、名前ですrgrep)。
  • を押しRETて結果を確認してください。

rgrepデモ:

ここに画像の説明を入力してください

あなたの基準に関して:

  1. RegExpクエリの検索と置換は、プロジェクト関連の.texファイルでのみ行われます。

Helm rgrepとこの機能の両方をサポートします。

  1. 試合のハイライト

同上。

  1. 強調表示された結果の概要をまとめて扱いやすいレイアウト

同上。

  1. 実行された、または残った置換または検査の一致の量を知る方法、およびクエリを停止する不器用なキーストロークによってクエリが壊れた場合にクエリを再開する方法

一致したものを置き換える場合は、wgrepを使用して*Grep*バッファーの置き換えを実行できます。終了して*Grep*バッファを同期すると、置き換えたテキストに従ってすべてが置き換えられます。

誤って停止した場合は、もう一度クエリを実行して「再開」します。しかし、Helmを使用すると、helm-resume誤ってキャンセルした場合に、実行中の操作を以前に戻すコマンドがあります。

  1. すべての関連ファイルを閉じて保存し、このクエリを呼び出す前の状態に戻すことにより、この乱雑なクエリをクリーンな方法で解消します

実際、helm-miniなどのツールを使用すれば、バッファーを強制終了する必要はありません。何千ものオープンバッファを管理するのは簡単です。短いテキストパターンで、希望するバッファに絞り込むことができます。必要に応じて、一度にすべてを殺すことができます。

これはのデモですhelm-mini

ヘルムミニ

Helm Githubページの「高度な使用法」セクションの詳細な説明を参照してください。


ヘルムで発射物を研究する必要があると思います。スクリーンショットが豊富なチュートリアルをありがとう!
博士号

何が、私はこれらのまともな機能を取得するためにインストールするために必要なパッケージ:projectilehelmかつhelm-projectile明白である、他に何?さらに、2つのMELPAパッケージhelm-pojectilehelm projectile-all推奨事項がありますか?
博士号

それでもう十分です。次に、私のガイドの構成に従います。InstallationHelmおよびHelm Projectileガイドのセクションを確認してください。
Tu Do

rgrep上位および下位のバッファで一致する発生(前方または後方)にアクセスするためにどのキーストロークを使用しますか?
博士号

1
helmとhelm-projectileに出会うことはEmacsを変える経験でした、ありがとう!しかし、grep検索は機能しません。あなたはこの投稿を見て気にしてもらえますか:emacs.stackexchange.com/q/7178/2443
doctorate

5

私があなたが望むものを理解しているなら、RefTeX ' reftex-isearch-minor-modeはあなたが求めているものであるべきです。マニュアルの説明から:

インクリメンタル検索がマルチファイルドキュメント全体でグローバルに機能できるようにするマイナーモードを切り替えます。ファイルは、ドキュメントに表示される順序で検索されます。

報告された T. Verron、同様に正規表現を使用してこの作品に。

すべての* TeXバッファーでこのマイナーモードを有効にするには、initファイルに次のいずれかの行を追加します。

(add-hook 'TeX-mode-hook (lambda () (reftex-isearch-minor-mode))) ; for AUCTeX
(add-hook 'tex-mode-hook (lambda () (reftex-isearch-minor-mode))) ; for the Emacs' bultin TeX mode.

reftexを使用しているため、知っておくと便利です。しかし、正規表現はサポートされていないので、このアプローチがもっと良いとは思えません!
博士号

2
どうやら、M-r検索バッファーを押すと、通常の場合と同様に、正規表現検索に切り替わりますisearch
T. Verron、2015年

1
また、正規表現isearch(C-M-s)の通常のショートカットも機能します。
T. Verron、2015年

@ T.Verronありがとうございます!実際、私はこの機能を広範囲に使用していません。前回試してみたところ、正規表現検索は機能しませんでした。そのとき私は何を試したかを知っています;-)
giordano

メニューバーの@ T.Verron-> ref->グローバルアクション->バージョン全体を検索してドキュメント全体を置換すると、ミニバッファーで式を編集できるので、より適切な正規表現が得られますが、これは何の機能なのかわかりませんキーバインド。
博士号

3

ご存知ない場合は、特定のファイルセット(任意のディレクトリの任意の場所)でのみDiredを開くことができます。IOW、Diredをプロジェクトのすべてのファイルのエントリポイントとして使用できます。通常のDired機能はこのコンテキストで機能します:マークされたファイルでの操作など。

ライブラリBookmark +を使用している場合は、Diredブックマークを使用して、さまざまなファイルセットやマーキングなどのさまざまな「ビュー」を提供できます。

(Emacs Wikiは現在メンテナンスのため停止しており、さらに数日間停止しているため、そのリンクには一時的にアクセスできません。)


EmacsのナローイングのようなものC-x n nですか?あなたはより多くの詳細であなたの答えを豊かにしていただけますか?ありがとう。
博士

番号; 関係ありませんC-x n n-ほんの少し知られたDired機能。C-h f dired引数として、ディレクトリ名の代わりに(絶対)ファイル(およびディレクトリ)名のリストを渡すことができることを示します。それが鍵です。Library Dired +は、これをインタラクティブに使用することを容易にします。(しかし、繰り返しになりますが、wikiは一時的にダウンしているため、現時点ではリンクも利用できません。)
Drew
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.