Vim宏转带快捷键绑定的Emacs键盘宏函数及JSON行处理咨询
Emacs键盘宏使用指南(含Vim用户迁移参考)
一、Vim宏转换为带快捷键的Emacs键盘宏函数
首先澄清认知偏差:Emacs的「键盘宏」和Vim宏本质完全一致,都是录制用户的键盘操作序列并回放,和用于代码生成的Elisp defmacro 宏是完全不同的两个概念,你此前的混淆是把两种定义完全不同的「宏」混为一谈了。
操作逻辑和Vim高度对应,步骤如下:
- 录制阶段:
F3对应Vim的q<寄存器号>启动录制,完成所有操作后按F4对应Vim的q结束录制 - 临时回放:直接按
F4即可,对应Vim的@<寄存器号>;要指定回放次数的话按C-u <次数> F4 - 永久保存并绑定快捷键:
- 录制完成后执行
M-x name-last-kbd-macro,为刚录制的宏起一个自定义名称,比如my-vim-migrated-macro - 执行
M-x insert-kbd-macro,选择刚才定义的名称,Emacs会自动生成可直接写入配置的Elisp代码 - 在你的
init.el配置中添加快捷键绑定:(global-set-key (kbd "C-c m") 'my-vim-migrated-macro),把C-c m替换为你想用的快捷键即可
- 录制完成后执行
二、用Emacs键盘宏批量处理JSON行URL
你给出的JSON行主要问题是部分行末尾缺失闭合引号与逗号,按以下步骤录制键盘宏即可批量处理:
- 按
F3启动录制 - 按
C-a跳到当前行首,按C-s "url":定位到URL值的起始引号位置,按C-f跳过引号移动到URL内容开头 - 按
C-e跳到行尾,检查末尾字符:如果没有闭合引号就输入",如果没有末尾逗号就输入, - 按
C-n跳到下一行,按F4结束录制 - 将光标移动到第一个需要处理的行,执行
C-u 0 F4,宏会自动重复执行直到文件末尾,完成全部行的处理
如果你的JSON格式更复杂,也可以先切换到json-mode,配合宏做更精准的字段定位处理
内容的提问来源于stack exchange,提问作者Andre
相关产品推荐
相关产品推荐

