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

    • 环境准备
    • vim normal 模式中文输入法切换问题
    • vim-01-存活下来
    • vim-02-掌握行相关的命令
    • vim-03-掌握 vim 的语法
    • vim-04-更有效率的处理单字符&undo&redo
    • vim-复习 -1
    • vim-05-掌握可视化模式
    • vim-06-文本对象
    • vim-07-在单文件中移动的更快
    • vim-08-掌握搜索命令
    • vim-复习 -2
    • vim-09-更高效的移动 - 想去哪里就去哪里
    • vim-10-认识数字&点的威力
    • vim-11-掌握多文件之间的跳转
    • vim-12-处理包裹字符的符号
    • vim-复习 -3
    • vim-13-替换字符
    • vim-14-掌握悬浮显示&大小写&注释
    • vim-15-掌握窗口的管理
    • vim-16-删除函数
    • vim-复习 -4
    • vim-17-掌握宏
      • 任务点
      • 社群讨论
    • vim-18-调用 vscode 的命令
    • vim-复习 -5
  • VSCode

  • Chrome

  • iTerm

  • mac

  • Obsidian

  • lazygit

  • 学习双拼
  • Vim 技巧

  • 键盘侠
  • Vim
Henry
2022-06-21
目录

vim-17-掌握宏

# 任务点

宏:可以录制一系列动作

  • 开始录制:q + 寄存器名称 (比如 a)
  • 结束录制:q
  • 查看录制好的宏::reg + 寄存器名称
  • 使用宏: @ + 寄存器名称
  • 调用最后一次执行的宏 (必须有才能执行): @@
  • 重复执行:次数 + @ + 寄存器名称
  • 追加:q + 大写的已存在的寄存器名称 (比如 A)
  • 修改宏:修改寄存器的内容,取出来——" + 寄存器名称 + p 或 :put + 寄存器名称 将寄存中的动作复制到编辑器中;修改后的动作使用 " + 寄存器名称 + yy 或者 yw 复制进寄存器完成修改,在 vscode 中不生效
  • 安全机制:当宏执行报错后就会停止,降低了心智负担;比如我可能要执行大约 10 次相同的宏,但我不能挨个去数吧,我可以把数字设置的大一点,比如设置为 30,而宏执行到 13 次后发现报错了(因为需要的修改都完成了,没有再需要修改的了),就停止了,省去了我们需要精确次数的烦恼

注意光标位置,建议使用相对位置进行定位

hjkl 属于绝对位置,一次就只能移动固定的范围,比如 5l 就是往右移动 5 个字符的距离;w、e、textobject 这种属于相对位置,可以根据后面的字符类型动态调整移动范围,比如 5w 就是往右移动 5 个单词的距离,而最后到底移动多少距离是根据这 5 个单词有几个字符决定的

# 社群讨论

改完寄存器后多了一个 ^J

用 "ayy 的话 会有这个情况,可以用 "ayiw

"ayiw 仅适用寄存器里都是字母的情况,不能有特殊符号,那个 ^J 应该是个换行符,所以得用类似 ^vg_"ay 的方法排除最后的换行符,改个寄存器真心累

我也这么觉得,我用的很少


为什么 "ayw 没有用

在 vscode 中改无效,命令行可以


当我想全项目删除一些相同代码时,我先全局搜索,在第一个文件那里录制并删除后,F4 跳转到下一个文件,发现并不能跨文件录制,但可以跨文件使用已录制好的宏,所以最后就是我手动按 F4,跳转到下一个搜索,然后执行宏,再 F4,再宏… 而且在一个新文件并不能先使用 @@,只能先使用 @a,然后才可以使用 @@


我发现宏好像记录不好,每次我记录了关了 vscode 再打开就没了。

当然了,不是永久的

编辑 (opens new window)
#Vim
上次更新: 5/27/2023, 1:02:05 PM
vim-复习 -4
vim-18-调用 vscode 的命令

← vim-复习 -4 vim-18-调用 vscode 的命令→

最近更新
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
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式