用于在视觉模式下拉出的一段文本行的vim搜索模式

Sun*_*Wei 6 vi vim

我正在尝试搜索某些在视觉模式下被猛拉的线的一部分.

在VIM中最快捷的方式是什么?例如,

Hello, #{1} world.
Run Code Online (Sandbox Code Playgroud)

我按v进入视觉模式并llo, #{1} wor在第1行选择.然后我按下选中的文本y,然后,我试图按下搜索所选文本/.这导致了以下问题:

A:当我处于搜索模式时,如何通过一个被拉动的文本?

B:如何避免搜索模式转义字符的工作?

eph*_*ent 13

A:

Ctrl-r 0.

B:

除了Ctrl-r 0技巧之外,还有Ctrl-r =一个允许您输入要评估的表达式并扩展到结果的功能.

/(现在提示看起来像/)
Ctrl-R =(现在提示看起来像=)
escape(@0, '\^$*.~[') Enter(现在提示看起来像/llo, #{1} wor)
Enter

注意,这@reg意味着"寄存器的内容reg",并且寄存器0是最后一次拉出或删除.我认为逃脱了vi regexp中特殊的所有字符......无论如何,你可能更喜欢进行映射而不是输入全部.


eck*_*kes 6

当你抽出一些文本(并指定没有寄存器将其拉入)时,它会进入寄存器0.因此,如果你想搜索那个被拉动的文本,请按ESC进入正常模式,然后

/CTRL-r0
Run Code Online (Sandbox Code Playgroud)

(即按/,然后按CTRL+ r,然后0)将寄存器0的内容拉入搜索模式.

一些说明:

  • 要搜索存储在其他寄存器中的其他模式,您可以:reg在决定用于搜索的寄存器内容之前键入并查看寄存器内容.
  • 要抓到一个不同于0的寄存器(例如2),你可以输入"2y(:他v_y).
  • 要直接搜索所选文本,您可以使用此处描述的映射,这使您只能在可视模式下按X(大写字符X)来搜索该文本.
  • 对于一般的搜索,这个vimcast为您介绍了非常强大的命令行窗口以及搜索历史(两周前发现它并且非常喜欢它!).


Luc*_*tte 3

我已经覆盖了可视模式的 star 命令(注意:它需要 lh-vim-lib 中的一个文件)。它满足您的需求:

  1. 在可视模式下选择
  2. */#
  3. n使用/继续搜索N