Henry Henry
  • JavaScript
  • TypeScript
  • Vue
  • ElementUI
  • React
  • HTML
  • CSS
  • 技术文档
  • GitHub 技巧
  • Nodejs
  • Chrome
  • VSCode
  • Other
  • Mac
  • Windows
  • Linux
  • Vim
  • VSCode
  • Chrome
  • iTerm
  • Mac
  • Obsidian
  • lazygit
  • Vim 技巧
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue 资源
GitHub (opens new window)

Henry

小学生中的前端大佬
  • JavaScript
  • TypeScript
  • Vue
  • ElementUI
  • React
  • HTML
  • CSS
  • 技术文档
  • GitHub 技巧
  • Nodejs
  • Chrome
  • VSCode
  • Other
  • Mac
  • Windows
  • Linux
  • Vim
  • VSCode
  • Chrome
  • iTerm
  • Mac
  • Obsidian
  • lazygit
  • Vim 技巧
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue 资源
GitHub (opens new window)
  • 说明
  • Vim

  • VSCode

  • Chrome

  • iTerm

  • mac

  • Obsidian

  • lazygit

  • 学习双拼
  • Vim 技巧

    • Vim 技巧 - 说明
    • Vim 技巧 - 以退为进
    • Vim 技巧 - 点范式
    • Vim 技巧 - 把撤销单元切成块
    • Vim 技巧 - 构造可重复的修改
    • Vim 技巧 - 用次数做简单的算术运算
    • Vim 技巧 - 能够重复,就别用次数
    • Vim 技巧 - 在插入模式中可即时更正错误
    • Vim 技巧 - 结识插入 - 普通模式
    • Vim 技巧 - 不离开插入模式,粘贴寄存器中的文本
    • Vim 技巧 - 重复执行面向行的可视命令
    • Vim 技巧 - 只要可能,最好用操作符命令,而不是可视命令
    • Vim 技巧 - 结识 Vim 的命令行模式
    • Vim 技巧 - 在一行或多个连续行上执行命令
    • Vim 技巧 - 使用‘:t’和‘:m’命令复制和移动行
    • Vim 技巧 - 在指定范围上执行普通模式命令
    • Vim 技巧 - 重复上次的 Ex 命令
    • Vim 技巧 - 把当前单词插入到命令行
    • Vim 技巧 - 回溯历史命令
    • Vim 技巧 - 运行 Shell 命令
    • Vim 技巧 - 将工作区切分成窗
    • Vim 技巧 - 区分实际行与屏幕行
    • Vim 技巧 - 通过查找进行移动
    • Vim 技巧 - 遍历改变列表
    • Vim 技巧 - 用无名寄存器实现删除、复制与粘贴操作
    • Vim 技巧 - 深入理解 Vim 寄存器
    • Vim 技巧 - 用寄存器中的内容替换高亮选区的文本
    • Vim 技巧 - 把寄存器的内容粘贴出来
    • Vim 技巧 - 宏的读取与执行
    • Vim 技巧 - 规范光标位置、直达目标以及中止宏
    • Vim 技巧 - 加次数回放宏
    • Vim 技巧 - 在连续的文本行上重复修改
    • Vim 技巧 - 给宏追加命令
    • Vim 技巧 - 编辑宏的内容
    • Vim 技巧 - 调整查找模式的大小写敏感性
    • Vim 技巧 - 查找使用 v 或 V 模式
    • Vim 技巧 - 界定单词的边界
    • Vim 技巧 - 转义问题字符
    • Vim 技巧 - 结识查找命令
      • 执行一次查找
      • 指定查找的方向
      • 重复上一次查找
      • 回溯之前的查找
    • Vim 技巧 - 在执行查找前预览第一处匹配
    • Vim 技巧 - 将光标偏移到查找匹配的结尾
    • Vim 技巧 - 利用查找历史,迭代完成复杂的模式
    • Vim 技巧 - 结识 substitute 命令
    • Vim 技巧 - 在文件范围内查找并替换每一处匹配
    • Vim 技巧 - 手动控制每一次替换操作
    • Vim 技巧 - 重用上次的查找模式
    • Vim 技巧 - 用寄存器的内容替换
    • Vim 技巧 - 重复上一次 substitute 命令
    • Vim 技巧 - 使用子匹配重排 CSV 文件的字段
    • Vim 技巧 - 自动补全整行文本
    • Vim 技巧 - 以 g 开头的命令
    • Vim 技巧 - 以 z 开头的命令
    • Vim 技巧-ctrl 命令
    • Vim 技巧
    • 每日一 Vim 笔记
  • 键盘侠
  • Vim 技巧
Henry
2022-10-06
目录

Vim 技巧 - 结识查找命令

本节将涵盖查找命令的基础知识,包括怎样指定查找的方向,如何重复(或反向重复)上一次查找,以及怎样使用查找历史。

# 执行一次查找

在普通模式下,按下 / 键会调出 Vim 的查找提示符,可在它的后面输入要查找的模式或者原义文本。另外,只有当我们按下 <CR> 键时,Vim 才会执行查找命令,而如果换用 <Esc> 键的话,查找提示符会消失,我们将重回普通模式。

当我们执行一次查找时,Vim 会从当前光标位置开始向下扫描,停在所找到的第一处匹配上。如果 Vim 扫描到文档结尾仍未找到目标,会提示“已查找到文件结尾,再从开头继续查找”,这意味着在某些情况下,一次正向查找反而把我们带到了查找起点之前。尽管听上去有点让人困惑,但只要记住查找命令抵达文档结尾处时会回绕至文档开头继续查找,这就说得通了。

如果你只想在当前光标位置至文档结尾的范围内查找,而不想绕回文档继续查找的话,可以关闭‘wrapscan’选项(参见:h 'wrapscan')。

# 指定查找的方向

当我们使用 / 键执行一次查找时,Vim 将进行正向扫描。而如果是用 ? 键调出查找提示符的话,Vim 则会进行反向查找。查找提示符始终以 / 或者 ? 字符开头,表明此次查找的扫描方向。

# 重复上一次查找

n 命令用于跳转到下一处匹配,而 N 命令则用于跳转到上一处匹配。通过 n 与 N 这两条命令,我们可以方便地在各个匹配之间往来穿梭。但“下一处匹配”的定义取决于上下文环境。

n 命令既会保证查找方向不变,又会使查找的偏移与上一次保持一致。因此,如果我们用 / 执行一次正向查找,n 将继续向下查找;而如果最初的查找命令是 ? 的话,n 将继续向上查找。同时,N 命令将始终与上一次查找的方向保持相反。

有时候,我们也许想重复查找同一个模式,但要改变查找的方向或偏移。在这种情况下,如果我们知道不提供模式而直接执行查找时,Vim 将重用上一次查找的模式的话,将会对我们大有裨益。下表总结了用于重复一次查找的选项:

假设我们使用 ? 开始一次查找,并已经跳到了上一处匹配,但是我们改主意了,决定向下跳转至其他匹配。当然,我们可以通过 N 键做到这一点,但这好像把一切都搞得上下颠倒了。除此之外,也可以执行 /<CR>,即用相同的模式执行一次正向查找。这样一来,我们就可以使用 n 键遍历文档中余下的匹配了。

# 回溯之前的查找

Vim 会一直记录我们执行过的查找模式,因此可以方便地重用它们。当查找提示符出现时,我们可以通过 <Up> 键,滚动浏览之前的查找记录。实际上,浏览查找历史与浏览命令行历史的接口完全一致。

编辑 (opens new window)
#Vim
上次更新: 5/27/2023, 1:02:05 PM
Vim 技巧 - 转义问题字符
Vim 技巧 - 在执行查找前预览第一处匹配

← Vim 技巧 - 转义问题字符 Vim 技巧 - 在执行查找前预览第一处匹配→

最近更新
01
version 1.15
07-01
02
version 1.14
06-27
03
version 1.13
06-27
更多文章>
Theme by Vdoing | Copyright © 2017-2023 HenryTSZ | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式