跳到主要内容

07 字符定位与 Search:快速抵达下一个目标

当目标就在当前行的某个字符附近时,ft 通常比连续按 l 更直接;当目标出现在别处时,Search 让你先到达目标,再执行熟悉的 Operator 或 Text Object。

当前行:ft

命令落点
f{char}跳到右侧目标字符上。
F{char}跳到左侧目标字符上。
t{char}跳到右侧目标字符前。
T{char}跳到左侧目标字符后。
; / ,重复上一次 ftFT / 反向重复。
Before — Normal Mode

const total = left + right;
^

Keys

f+

After — Normal Mode

const total = left + right;
^

f+ 落在 + 上;t+ 会停在 + 前一个字符。这个差异在和 Operator 组合时很重要。

df+

读作“删除到 +,并包含 +”。若只想删除到 + 前,尝试 dt+

配对符号:%

% 会跳到当前或右侧配对项的匹配位置,基础情况下适合括号、方括号和花括号。它可以和 Operator 组合, 例如 d%。插件可能扩展 % 的匹配规则;本教程只承诺基础配对语义。

Search 是跨行导航

命令作用
/pattern向后搜索。
?pattern向前搜索。
n / N同方向 / 反方向重复最近搜索。
* / #向后 / 向前搜索光标附近的完整单词。
Keys

/profile<Enter>

找到目标后,你不需要临时换一套编辑方式:仍然可以使用 ciwdi(d$ 等已经学过的组合。

练习

const user = getUser();
const profile = user.profile;
const displayName = profile.name;
  1. 从第一行快速到达第二行的 profile
  2. 在第三行定位到 .,比较 f.t.
  3. 搜索 profile,用 nN 在两处之间往返。
  4. 在一个括号或方括号上尝试 %

本章必须记住

f/t 描述当前行的精确目标。
;/, 重复字符定位。
Search 是先抵达目标、再复用编辑语言的导航能力。

暂时不用记

暂时不用记复杂正则、替换命令和搜索偏移。先让普通搜索成为导航习惯。

评论