【Vim Masterclass 笔记09】S06L22:Vim 核心操作训练之 —— 文本的搜索、 ...

打印 上一主题 下一主题

主题 1003|帖子 1003|积分 3009

写在前面
开年这几天利用假期和难过的空闲时间,突击翻完了李笑来的《自学是门手艺》,劳绩很大。书中末了也提到了 Vim 的学习,觉得很有必要把这个专栏笔记整理完,夺取在春节前顺利收官。本篇为第 6 章第 22 课的自学笔记,也是全套课程最为核心的几节操作课,主要先容文本的检索、单词单字的匹配以及常用的替换技巧,因时长限制,Jason 讲师特地分为两部分先容。本课为第一部分,第 23 课为第二部分。知识点不光麋集而且应用灵活性极强,需要结合示例文件用心领会、反复训练,形成肌肉影象。如果 Vim 真的有捷径,那肯定是大量实践、反复琢磨这条路。
  
S06L22 Search, Find, and Replace - Part One

1 从光标位置起,正向定位到当前行的首个字符 b

按 FB(即 F + {char})
查找该行首个大写字母 A:按 F + ShiftA
留意:f 键查找是 区分大小写 的。
2 从光标位置起,反向查找某个字符

反向查找:ShiftF + {char}。例如,反向定位到光标左边近来一个 z,按:ShiftF + Z。
正向查找:forward search
反向查找:backward search / reverse search
3 重复上一次字符查找操作

正向重复查找,按 ;
反向重复查找,按 ,
4 定位到目标字符的前一个字符

正向:按 T + {char}
反向:按 ShiftT + {char}
例如,正向定位下一个 i 左边(前一个)的字符:TI
再如,反向定位上一个 i 右边(即反向的前一个)的字符:ShiftT + I
同理,可使用 ; 和 , 分别重复定位到下一个 {char}、且在它前面(正向为左边,反向为右边)的谁人字符。
留意,无论是 f 查找还是 t 查找,; 始终与上一次查找的方向保持同等;而 , 始终与上一次的方向相反。
别的,这两类查找也支持数量词 {count}。例如,从当前位置开始,正向查找当前行的第 2 个空格字符,需键入:2FSpace
   【复习】
  重复上一次 Vim 下令,用的是 .;而这里的 f 查找和 t 查找对应的是动作 motion,而且可能存在多个匹配项,以是只能按 ; 或 , 进行正反向浏览。
  与此同时,也正由于这些查找属于 motion 动作,而非 command 下令,它们也可以和前面学过的别的 command 下令组合使用(如 c / d / y 下令等)
  5 单字符查找与 Vim 下令的组合

对于下列文本内容:
  1. Delete THIS<<--- word.
复制代码
按 F + ShiftT 将光标定位到大写字母 T 后,需要删除字符 T(包罗)到字符 w(不包罗)之间的内容,至少有三种解决方案:


  • 用 D + TW
  • 用 D + FSpace
  • 还可以用前面先容的 D + ShiftW
6 跨行查找某字符串

使用 / + {target_string}
例如:正向跨行查找字符串 and:/ + and
正向快速匹配下一个目标,按:N
反向快速匹配,则按:ShiftN
一直按 N 匹配到当前文件的末了一个目标字符串后,再次按 N,Vim 会提示 search HIT BOTTOM, continuing at TOP,并将光标定位到文件第一处匹配项(反之亦然):

【图 22-1 跨行查找到末了一处关键字后,Vim 提示继续查找将从文件开头重新开始】

想要重新检索其他字符串,键入 / + {new_string} 即可。
7 Vim 的增量查找

增量查找(incsearch,即 incremental search) 是 Vim 中的一个设置项,启用该设置项后,Vim 会在输入搜索关键字的过程中,实时表现最新的匹配结果。也就是说,可以看到搜索结果的 即时反馈,而不必等到输完搜索字符串后再进行查找。
相关操作增量搜索下令查看:set is? / :set incsearch?开启:set is / :set incsearch关闭:set nois / :set noincsearch切换:set is! / :set incsearch! 8 Vim 搜索的高亮表现

搜索高亮表现(hls,全称 hlsearch,即 highlight search),默认关闭。开启后,当前文件所有的匹配项都将高亮表现,直到换成其他关键词大概关闭高亮。相关设置下令如下:
相关操作高亮表现下令查看:set hls? / :set hlsearch?开启:set hls / :set hlsearch关闭:set nohls / :set nohlsearch切换:set hls! / :set hlsearch!临时关闭:nohls / :nohlsearch 留意:临时关闭只对当前匹配结果见效;只要用 / 重新检索,Vim 就会重新恢复高亮表现。
关于 Vim 偏好的具体设置,后续还会重点先容,这里暂不睁开。
9 全局搜索与替换的快速瓜代操作

先用 /{keyword} 搜索,然后用 cw 等下令替换为其他关键词;后续再通过 N 和 . 快速定位、快速替换,实现快速瓜代操作。
例如:全文检索 and 后,替换为 &,并利用 N 和 . 实现快速瓜代执行。
10 反向全局搜索

反向搜索(backward search,大概 reverse search),使用:? + {keyword}。
例如,从当前光标位置开始,反向检索关键词 is:? + is
同理,重复下一个匹配项(即向上查找),使用 N;逆向操作使用 ShiftN(即向下查找)。
11 查找光标所在的下一个单词

使用星号键 *。
例如:光标定位到单词 is 的任一字符上,键入 * 可以全局匹配到下一个单词 is,继续按 * 大概 N 可匹配下一处;上一处用 ShiftN。
   留意
  * 只能匹配单词 is,无法匹配像 episode、sister 这样关键词出现在中间的环境,由于 * 表示匹配完备单词(matching an entire word)。
  12 查找光标所在的上一个单词

使用 $,重复该操作,使用 $ 或 N;逆向操作仍旧使用 ShiftN。
13 全局搜索 motion 与 D 下令的组合应用

全局搜索本质上也属于 motion 操作,因此同样可以与 command 下令组合使用。例如,删除当前光标到下一处 This(不含)之间的文本内容:

【图 2:全局搜索与下令的组合示例:删除当前光标到 This 间的内容(操作前)】

键入 D/ + This + Enter,得到如下结果:

【图 3:执行 D/This + Enter 后的最终结果】

14 全局搜索 motion 与 Y 下令及寄存器的组合应用

别的,也可以将组合操作的内容放入某个寄存器。
例如:将文件初始位置到下一个 z 之间的内容,存入寄存器 "a。
操作前(光标位于起初位置):

【图 4:Y 下令 + 全局搜索 + 寄存器操作示例(操作前)】

依次键入 "AY/ + z + Enter,并查看寄存器 "a 的内容,得到如下结果:

【图 5:执行 "ay/z + Enter 操作后,查看寄存器 a 中的内容(操作乐成)】

   跋文
Vim 的使用我觉得是计算机领域少有的 “先易后难” 技能,为了以后的流通体验,现在苦一点累一点黑白常值得的。能否熟练使用 Vim 也是评价一个人计算机综合素养的紧张指标之一。
  (第一部分完)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

农妇山泉一亩田

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表