Search for selection in vim

2019-01-04 07:05发布

I use vim and vim plugins for visual studio when writing C++. Often, I find myself wanting to search for a string within a function, for example every call to object->public_member.memberfunc().

I know vim offers a convenient way to search for a single word, by pressing * and #, and it can also search for typed strings using the ubiquitous slash / command. When trying to search for all the instances of a longer string like the one above, it takes a while to re-type after /.

Is there a way to search for selection? For example, highlight with v, then copy with y, is there a way to paste after /? Is there an easier shortcut?

5条回答
在下西门庆
2楼-- · 2019-01-04 07:27

You can actually select text visually and press * and # to search for the next occurrence... It will work the same, the only caveat is that:

Whitespace in the selection matches any whitespace, when searching (searching for "hello world" will also find "hello" at the end of a line, with "world" at the start of the next line).

http://vim.wikia.com/wiki/Search_for_visually_selected_text

查看更多
Emotional °昔
3楼-- · 2019-01-04 07:32

Check this Vim tip: Search for visually selected text

Or you can simply yank the selected text with y and go to search mode /, then you can paste the last yanked text with Ctrl+R 0

查看更多
劫难
4楼-- · 2019-01-04 07:33

I just learned (through the excellent book Practical Vim) that there is a plugin for that. You can find the plugin on GitHub.

The plugin lets you search for a visual selection with * and #.

查看更多
姐就是有狂的资本
5楼-- · 2019-01-04 07:36

Building on arcanex's answer, here is yet another way to do what you want.

  1. Yank the text you want to search for
  2. q/p
  3. Enter

Explanation

q/ works similarly to vanilla search / except you're in command mode so p actually does "paste" instead of typing the character p. So the above will yank the characters you're searching for, then paste them into a search.

(see :help q/)

查看更多
Luminary・发光体
6楼-- · 2019-01-04 07:47

Use q / instead of just /. (Same with q :). Now you can VIM-edit through your command and search history! (Try Ctrl-N and Ctrl-P sometime).

查看更多
登录 后发表回答