vim寄存器和宏

目录

  • 1.寄存器
    • 1.1.寄存器相关命令
  • 2.宏
    • 2.1.宏的录制和回放
      • 2.1.1.避免宏回放回到开头重做
      • 2.1.2.先搜索
    • 2.2.宏的编辑
      • 2.2.1.特殊字符
    • 3.递归的宏
    • 4.跨文件运行宏

1.寄存器

寄存器 说明 注释
a-z 手动复制数据 "+寄存器
" 无名寄存器 ""p等效为p
0-9 最后10次删除操作的历史记录
% 存储当前文件名 只读存储器
# 上次打开的文件名 只读存储器
. 最后插入的文本 只读存储器
: 最后执行的命令 只读存储器
* 系统的主粘贴板(Linux中为终端的鼠标选择内容) 不起作用
+ 粘贴板选择器(Clipboard selection),用于ctrl+c和ctrl+v 不起作用

1.1.寄存器相关命令

命令 说明 注释
" 访问寄存器
ctrl+r 允许在插入模式或命令行模式下粘贴某个寄存器的内容
:reg[isters] a b 查看寄存器a和b的内容
:reg[isters] 列出所有寄存器的内容
A-Z 附加寄存器内容

2.宏

2.1.宏的录制和回放

命令 说明 注释
qa 进入宏录制模式,后面接寄存器 状态栏显示recording @a
q 再次按q录制完成
@a 回放宏
@@ 回放最后一次运行的宏
3@a 多次回放宏
#光标移动到文件开头
gg
#使用寄存器a进入宏录制模式
#之后移动和编辑都会在宏模式下记录起来
qa
#搜索"animal.act"
/animal.act
#光标移动到target上
4w
#将target删除,存储到寄存器b中
"bdw
#删除后面的,和空格
xx
#跳转到字符串末尾
f'
#添加,和空格
a,
#粘贴寄存器b
"bp
#录制完成
q
#回放宏
@a

2.1.1.避免宏回放回到开头重做

  • 宏执行错误会停下来
  • 默认搜索不到光标会回到开头
  • 让搜索到末尾产生错误
:set nowrapscan

2.1.2.先搜索

在录制宏之前先搜索,录制宏后,先跳转到需要的位置,经过确认后再运行回放

@a
@@

2.2.宏的编辑

和寄存器操作相同

#查看每个寄存器内容
:reg
#查看寄存器内容
:echo @a
#打开一个新缓冲区
:new
#将寄存器的内容粘贴出来
"ap
#编辑
#复制到原来的寄存器
_"ay$

2.2.1.特殊字符

在哪里找到参考

字符 说明 注释
^[ ESC键
^M enter键

3.递归的宏

#1.首先确保宏是空的
qaq
#2.按照正常方式录制宏
#3.在录制过程中调用@a

例子

#1.光标位于'bark'
#2.寄存器清空,然后进入宏录制
qbqqb
#3.将'内容存于寄存器c
"cdi'
#4.移动到'dog'
W
#5.dog保存到默认寄存器中
di'
#6.光标左移一个字符
h或b
#7.插入bark
"cp
#8.光标移到行首
_
#9.默认寄存器插入
p
#10.将光标移到下一行首
j_
#11.重新执行宏
#但什么也不会发生,因为寄存器是空的
@b
#12.完成录制
q
#13.递归回放
@b
"cdi'Wdi'h"cp_pj_@b
#对已有的宏附加递归
qB@bq

4.跨文件运行宏

:arg **/*.py
#参数列表用:normal命令执行正常模式下的命令
:argdo execute ":normal @a" | update

你可能感兴趣的:(vim,vim)