[VIM] 搜索可视化选中(Visually Selected)的文本

陪她去流浪 桃子 阅读次数:25257

在VIM中,我们通过在命令模式(正常模式)下输入序列/pattern?pattern的模式来搜索文本。跟VIM编辑界面合为一体,不会弹出新窗口来干扰用户的操作,已经很方便了。 但是,待搜索的文本必须得手动输入。简单两三个字母还好,如果长了,还就不方便了。

如果你用的是GVIM版本,那么可以选择使用鼠标来选中复制粘贴并搜索,但这样的话,手会在键盘与鼠标之间来回移动,不方便,且动作偏慢。而且,如果是VIM的话,很可能你是不能使用鼠标的。 那,有没有更好的办法?当然有!那就是:使用可视化选中命令“v”或“V”。(可视化选中跟用鼠标选中有点不一样。可视化选中时对文本所作的操作是与VIM内部的寄存器交互,而使用鼠标时,是与操作系统的剪贴板交互。)

可以按如下操作来达到任意选中并搜索:

  1. 按下v之后,可以任意移动光标来使光标经过的区域的文本处于可视化选中状态;
  2. 按下y,把选中的内容复制到VIM内部的默认寄存器"中;
  3. 按下/?,进入搜索状态;
  4. 按下^R(即:Ctrl+R),然后按下",把寄存器"中的内容粘贴到搜索栏中。Ctrl+R?
  5. 最后,按下回车,执行搜索。

以上就是整个步骤。当然,由于搜索使用得非常频繁,如若每次都这样操作的话,肯定是很麻烦的。怎么办?自定义按键映射即可(放到 .vimrc 中)。

映射命令: vnoremap // y/<c-r>"<cr>

经这样一映射,在选中文本后,按下//就可以快速搜索了。非常方便。 赶快试试吧,必备命令。

参考:

标签:vim

文章评论 12 发表评论
  1. 小何

    正好解决问题,点赞。我将//换成了n,直接n到底

    1. 桃子

      可以可以,小心正则表达式哦。

    2. keke

      感谢分享!看了看你的博客,好牛啊(;´༎ຶД༎ຶ`),让人突然有好好生活的动力了!

      1. 桃子

        谢谢你,非常开心能听到你这么说,希望你好好生活~

      2. libieyu

        我想问一下 为什么不管怎么样都无法替换带“_”的字符串 搜不出来 比如X_data

        1. 桃子

          我试了一下是可以的,你具体描述下你的操作?

          1. 李悲臾

            感谢你的回复 我发现了不是下划线的问题 是中括号没转译 应该是[]我写成了[]

            1. 桃子

              你在这篇帮助里面搜索一下 \[,第一处就是 magicnomagic 的对比。

        2. Stephen2252

          非常有用。 如此擅长vim 的女孩子,真的厉害

          1. 桃子

            好用好用,谢谢谢谢👻

          2. Klaus
            normal模式下, 直接在当前单词上按*即可
            1. 桃子
              嗯。但是,*只能按照词法意义的「单词」来选噢,不能随便选择文本(比如包含空格)。。
            还没有用户发表过评论,我要发表评论
            ×
            编辑评论