一键vim宏/交互搜索-运行-宏

One-key vim macro / search-and-run-macro interactively

我知道我可以用 q<char> 录制宏,用 @<char> 运行 录制宏。我也知道我可以 运行 最后使用的宏 @@.

但是@@是两次完整的击键!那太多了!特别是如果我运行宁那个宏很多次。我知道 <num>@<char> 但如果我事先不知道 <num> 怎么办?

实际上,我正在寻找的是类似于 运行 宏的交互式搜索和替换(请参阅 Interactive search/replace regex in Vim?)。这能做到吗?

在普通模式下一键应用宏a:

:nnoremap , @a

您可以在要应用宏时使用“,”,或者在您想跳到下一个搜索事件时使用 "n"

以交互方式将宏应用于搜索匹配项:

  1. 用"qa"
  2. 定义宏
  3. 用“/”搜索
  4. 应用宏来匹配“,”
  5. 跳过与 "n"
  6. 的匹配

我的~/.vimrc中有这个:

" <A-@>         Repeat last macro with a single key combination.
nnoremap <A-2> @@

所以,首先我像往常一样用注册名重播,例如@a。然后我用 @@ 重复。然后我意识到我需要再重复几次(但不能使用 [count]),所以我切换到 Alt + @ (@ 在 US-English 键盘布局上的 2 上方。