web-dev-qa-db-ja.com

EmacsバッファーでWordのすべての出現を強調表示する方法は?

Notepad ++には便利な機能があります。テキスト内のWord(必ずしもキーワードではない)を選択すると、Wordはテキスト全体で強調表示されます。これはEmacsでも実行できますか?もしそうなら、どのように?

Notepad ++とまったく同じように機能する必要はありません(つまり、選択を介して)。理想的には、カーソルの下にあるすべてのWordが強調表示されるようにするキーバインドを設定したいと思います。

ハイライトが永続的な場合、つまり、ハイライトされたWordからポイントを移動するとnotになり、ハイライトが削除されるのは素晴らしいことです。

また、(カスタムキーバインドを使用して)ハイライト間を移動できるソリューションがあれば便利です。

73
Headcrab

多分 http://nschum.de/src/emacs/highlight-symbol/ のhighlight-symbol.elはあなたが探しているものです:

alt text

38
polyglot

hi-lock提案は良いです。私はそれを使用する方が簡単だと思います M-x ただし、バージョン:

M-x highlight-regexp RET <REGEXP>

M-x highlight-phrase RET <REGEXP>

highlight-phraseは、highlight-regexp大文字小文字を無視し、正規表現内のスペースを任意の空白に一致するように変換します。ハンディ。

76
jrockway

タイプC-s、次に現在のWordを入力するか、C-w。ボーナスとして、C-sもう一度Wordを検索します。

これはインクリメンタル検索と呼ばれます。

36
ShreevatsaR

私が使用しているのはアイドルハイライトです

http://www.emacswiki.org/emacs/IdleHighlight

M-x idle-highlightは、ポイントの下にあるWordのバッファー内のすべての発生を強調表示するアイドルタイマーを設定します。

すべてのプログラミングモードで有効にするには、~/.emacs.d/init.el

;; highlight words
(add-hook 'prog-mode-hook (lambda () (idle-highlight-mode t)))
13
Johnny

Light-symbol は、シンボルポイントが上にあるものを強調表示します。

または、 occur を使用して、正規表現に一致するすべての行をリストできます。クラス内のすべての関数をすばやく表示すると便利です。

10
ieure

試してください http://www.emacswiki.org/emacs/msearch.el カーソルで選択されたテキストのすべての出現箇所が強調表示されます。強調表示する文字列をドラッグする必要があります。これにより、ハイライトを変更せずに選択を簡単に変更できます。

文字列の強調表示を保持する場合は、それをフリーズできます。

バッファを別のバッファにスレーブ化できます。マスターバッファーで選択されたテキストは、スレーブバッファーでも強調表示されます。これは、バッファの比較に役立ちます。また、あるバッファのテキストを調べながら別のバッファのメモを取るのにも役立ちます。ノートバッファにキーワードのコレクションを含めることができます。そのようなキーワードの上にドラッグすると、調査されたテキスト内でのその出現が強調表示されます。

私は何年もこのものを使用しています。つい最近、フリーズを追加しました。したがって、何かが壊れている可能性があります。この場合は、 http://www.emacswiki.org/emacs/msearch またはここにメモを残してください。

6
Tobias

これはあなたが望んでいたものほど素敵ではないかもしれませんが、

(global-hi-lock-mode 1)

あなたの.emacsファイルを入力すると、C-x w h REGEX <RET> <RET>REGEXのすべての出現を強調表示し、C-x w r REGEX <RET>再びハイライトを解除します。繰り返しますが、おそらくあなたが望むほどエレガントではありませんが、それは動作します。

5
dancavallaro

チェック インタラクティブな強調表示

する必要があります:

C-xwh 語 <RET><RET>

5
CMS

ライブラリ内のコマンド highlight.el オーバーレイまたはテキストプロパティを使用して、正規表現(この場合はシンボル)に一致するテキストを(非)ハイライトできます。オカレンス間を循環できます。ハイライトは一時的または永続的です。 (詳細)

2
Drew

iedit を試してください。 Wordをポイントで強調表示し、出現する箇所をすべて簡単に編集できます。追加のキーストローク(C- ')を使用すると、そのWordを含まないすべての行が非表示になります。とても便利な!

2
Phob

これはおそらくハイライト表示されませんが、入力する必要なくWordを検索します...

検索したい単語C-Sに到達したら、C-WでWord全体を読んでからC-Sを実行すると、検索されます。 Emacsでは、ドキュメント内のすべてのインスタンスも強調表示します。

0
George

Melpaで利用可能なこのパッケージは、ハイライトスタイルもカスタマイズできます。

https://github.com/ignacy/idle-highlight-in-visible-buffers-mode

0
Pharaoh

誰も言及していません symbol-overlay mode 。基本的にはhighlight-symbol-modeのより良い書き直しです。 「良い」のように、元のハイライトシンボルのバグがありません(一時的なハイライトがスタックしたり、ハイライトされたWord内で移動するために一時的なハイライトが消えたり; *など、より良く統合され、維持されています。 READMEの「利点」の段落を参照してください。

いつものようにインストールできます M-xpackage-install (事前にパッケージリストをpackage-list-packagesで更新してください)。参考のために、投稿の下部にはモードを有効にするための私の設定からのコードがあります。

Notepad ++には便利な機能があります。テキスト内のWord(必ずしもキーワードではない)を選択すると、Wordはテキスト全体で強調表示されます。これはEmacsでも実行できますか?もしそうなら、どのように?

overlay-symbolを有効にすると、タイムアウト後にカーソルを置くすべてのWordの画面上の出現が表示されます(デフォルトではタイムアウトは0.5秒で、symbol-overlay-idle-time変数)。 Wordが強調表示されない場合、これは画面上に一致するものが1つだけであることを意味します(カーソルを置いたもの)。したがって、必要はありません。それを強調表示します。

ハイライトが永続的である場合、つまり、ハイライトされたWordからポイントを遠ざけてもハイライトが削除されないようにすれば素晴らしいでしょう。

カーソルの下にあるWordを永続的に強調表示するには、symbol-overlay-putという関数があります。ハイライトを解除するには、もう一度呼び出します。

私の設定例では、にバインドされています Logo+` キー。


(require 'symbol-overlay)
(defun enable-symbol-overlay-mode ()
  (unless (or (minibufferp)
              (derived-mode-p 'magit-mode)
              (derived-mode-p 'xref--xref-buffer-mode))
    (symbol-overlay-mode t)))
(define-global-minor-mode global-symbol-overlay-mode ;; name of the new global mode
  symbol-overlay-mode                                ;; name of the minor mode
  enable-symbol-overlay-mode)
(global-symbol-overlay-mode)                         ;; enable it
(global-set-key (kbd "s-`") 'symbol-overlay-put)
(setq symbol-overlay-map (make-sparse-keymap))       ;; disable special cmds on overlays
0
Hi-Angel