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

时间:2011-01-31 06:38:31

标签: vim vi

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

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

Hello, #{1} world.

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

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

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

3 个答案:

答案 0 :(得分:13)

A:

Ctrl-r 0

B:

除了 Ctrl-r 0 技巧外,还有 Ctrl-r = ,键入要计算的表达式并扩展为结果。

  

/ (现在提示符如/
   Ctrl-R = (现在提示符如=
  escape(@0, '\^$*.~[') 输入(现在提示符如/llo, #{1} wor
  输入

请注意,@reg表示“注册reg的内容”,注册0是最后一次抽奖或删除。我认为逃脱了vi regexp中特殊的所有字符......无论如何,你可能更愿意进行映射而不是全部输入。

答案 1 :(得分:6)

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

/CTRL-r0

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

一些注意事项:

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

答案 2 :(得分:3)

我已经覆盖the star command for the visual mode(注意:它需要lh-vim-lib中的一个文件)。它满足了您的需求:

  1. 以视觉模式选择
  2. * /
  3. 继续搜索 n / N