vi技巧: 宏的使用技巧

本文所用命令的帮助入口:

:help q
:help @
:help :let-@ 

网友Karl问

再请教一下:我想在.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的内容,请阅读易水博客上的其它文章。

“vi技巧: 宏的使用技巧”的6个回复

    1. 不是up,是在命令模式下输入 ” u p 这三个键。
      1. ” 是指操作寄存器
      2. u 是指定名称为u的寄存器,也可以是a,b,c
      3. p 是打印该寄存器中的值。

  1. 现在我们用下面的命令在.vimrc中输入一行:

    olet @m = “”upa”

    这个没看懂怎么操作 (*_*)
    反倒是之后的直接let好操作

  2. 回1楼,应该不会,录制宏可以自定义寄存器名称. qa 和qb是不同的2个宏,使用 @a 和@b 和@@ 都是会有不同的效果,手册里面说的很清楚…

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注