本文所用命令的帮助入口:
:help q :help @ :help :let-@
再请教一下:我想在.vimrc中设置一个宏,请vi启动的时候就有这个宏,应该怎么办?
其实在vim中所谓的宏就是把一串命令放到了指定的寄存器里。所以要实现Karl的需求,可以这样做:先录制好宏后,然后在vimrc里把这个宏中的命令放到指定寄存器里,这样vim启动后就可以直接使用这个宏了。
具体的做法如下:
第一步:首先录制宏,Easwy以插入三行文字做为一个简单的例子。这三行文字是:
================================ I love vim. Happy vimming! ================================
按qu开始录制,录制完成后再按一个q命令结束,这样就把宏录制到寄存器u中了。
现在我们可以查看一下u寄存器的内容,用命令“up,把u寄存器的内容粘贴出来:
32i=^[oI love vim. Happy vimming!^M^[32i=^[
注意,上面的^[实际上是<ESC>键的键码,同样,^M是换行键<CR>的键码,在vim中它们以特殊的颜色被显示出来,如果你把光标在它们上面移过,你会发现它们虽被显示成两个字符,但实际上只是一个。
第二步:现在我们用下面的命令在.vimrc中输入一行:
<ESC>olet @m = "<ESC>"upa"<ESC>
这行命令实际上在.vimrc加入了这行话:
let @m = “32i=^[oI love vim. Happy vimming!^M^[32i=^[”
第三步:现在你重启vi,然后直接输出下面的命令:
@m
怎么样,宏是不是生效了?!
要想了解更多细节,请阅读文章开始处给出的帮助手册。
更多关于vi/vim的内容,请阅读易水博客上的其它文章。
用命令“up,把u寄存器的内容粘贴出来?请问这个是什么意思?不懂up是什么命令。
不是up,是在命令模式下输入 ” u p 这三个键。
1. ” 是指操作寄存器
2. u 是指定名称为u的寄存器,也可以是a,b,c
3. p 是打印该寄存器中的值。
@zach
你随便打开一个buffer,按文章做一次即可
注意,<ESC>需要你输入ESC键
现在我们用下面的命令在.vimrc中输入一行:
olet @m = “”upa”
这个没看懂怎么操作 (*_*)
反倒是之后的直接let好操作
回1楼,应该不会,录制宏可以自定义寄存器名称. qa 和qb是不同的2个宏,使用 @a 和@b 和@@ 都是会有不同的效果,手册里面说的很清楚…
好的 谢谢! 原来录制宏会覆盖掉原有的寄存器的内容的 呵