emacsxemacs

Emacs Search exact word


I'm working in verilog most of the time, and my favorite editor is emacs.

There a feature in vi (vim) I like but I don't know how to do it in emacs

I would like to do an exact word search, for example - let's say I have this text:

1. wire                   axi_bvalid = bvalid;
2. wire                   axi_bready; // assigned later
3. assign                 axi_cross_fifo_pop = axi_bvalid & axi_bready 
4. wire                   axi = 1'b1;

when searching for axi i would like to get match only on line 4. Today Ctrl-S search will match every instance of axi.

In vim the way to do it is press * on the word or /\.

Is there something similar in emacs?

Thanks allot, Jony


Solution

  • Needs a regular-expression based search, for example

    M-x isearch-forward-regexp RET \_<axi\_> RET

    See Emacs Lisp Info-file, node 34.3.1.3: Backslash Constructs in Regular Expressions

    Running as command:

    (defun my-re-search-forward (&optional word)
      "Searches for the last copied solitary WORD, unless WORD is given. "
      (interactive)
      (let ((word (or word (car kill-ring))))
        (re-search-forward (concat "\\_<" word "\\_>") nil t 1)
        (set-mark (point))
        (goto-char (match-beginning 0))
        (exchange-point-and-mark)))
    

    Bind it to C-c : for example:

    (global-set-key [(control c) (\:)] 'my-re-search-forward)