vim保存分享录制宏

vim中的宏是吸引我使用它的关键因素之一。确实方便,如果录制的宏可以很方便的跟朋友分享。岂不美哉!

录制宏

普通模式下:
q 字母 比如:qa
此时状态栏会显示正在录制中。
一顿操作猛如虎…

q 宏录制完成。

运行宏

@ 字母 比如:@a
就会运行你之前录制的宏。就是重复你之前的操作。

打印宏脚本

"字母p 比如: "ap
就会打印寄存器a中的宏信息。

宏分享方法一:手动复制

通过手动复制的方式,创建宏。

比如:我录制了一宏,用来输出java中的main方法。

public static void main(String[] args){
    
    
	
}

我的宏打印出来的结果如下:

opublic static void main()<80>klString[] args<80>kr{
    
    }<80>kl^M^M<80>ku   q<80>kb^[

只要把这段代码分享出去就可以了。

你可以把打印出来的代码编辑,然后在copy到寄存器,实现宏在编辑。
比如:我复制到p寄存器中。
选择这一行,然后执行"pyy实现复制到p寄存器。
这时在执行@p时就可以正常输出main()方法了。

如果只有一个宏分享,这种方法就够用了。但是如果要同时分享好多宏,这种方法难免有点也麻烦了。

宏分享方法二:vimrc配置文件加载

写在配置文件中,可以方便的分享多条宏。
语法如下:

:let @t="宏内容"

比如:把这段放到你的vim配置文件中,比如:$HOME/.vimrc
然后就可以自动给宏赋值了。
这也是我在网上搜索到的结果,但是我实际测试发现并不能实现我想要的效果,还是拿生成main()方法为例:

:let @t="opublic static void main()<80>klString[] args<80>kr{}<80>kl^M^M<80>ku   q<80>kb^["

@t实际运行结果如下:

public static void main()<80>klString[] args<80>kr{
    
    }<80>kl^M^M<80>ku   q<80>kb^[]

这显然不是我们想要的结果。

相关教程我也没有找到,后来就自己研究了一下,发现只需要转义一下就可以使用了。

^[		替换		\<Esc>		Esc
<80>kl	替换		\<Left>		⬅️
<80>kr	替换 	\<Right>	➡️
<80>ku	替换		\<Up>		⬆️
<80>kb 	替换		\<Down>		⬇️
^M		替换		\<CR>		回车键

如果你问我,为什么 <80>kl 代替<Left> 那是因为我录制宏的时候按的就是左键,一测试发现我的判断是没错的。

<80>kl猜测可能是keyLeft的缩写。
所以把public static void main()<80>klString[] args<80>kr{}<80>kl^M^M<80>ku q<80>kb^[]经过替换上面的字符串得到如下结果:

:let @t="opublic static void main()\<Left>String[] args\<Right>{}\<Left>\<CR>\<CR>\<Up>\<Down>\<Esc>"

这样 @t 就可以正常输出啦。

键表

总结如下,不足的欢迎评论补允。
<k0> - <k9> 小键盘 0 到 9
<S-...> Shift+键
<C-...> Control+键
<M-...> Alt+键meta+键
<A-...><M-...>
<Esc> Escape 键
<Up> 光标上移键
<Down> 光标下移键
<Left>光标左移键
<Right> 光标右移键
<Space> 插入空格
<Tab> 插入Tab
<CR> 等于<Enter>
<Backspace>或者<Bs> 退格删除键

替换表

在网上暂时没有找到全面的信息,慢慢摸索然后更新吧。

^[		替换		\<Esc>		Esc
<80>kl	替换		\<Left>		⬅️
<80>kr	替换 	\<Right>	➡️
<80>ku	替换		\<Up>		⬆️
<80>kd 	替换		\<Down>		⬇️
^M		替换		\<CR>		回车键
<80>kb  替换    <Backspace>或者\<Bs>  删除键

手动一个个替换难免麻烦,我写了宏专门用来替换这些按键。

"批量替换特殊字符                                             
:let @t=":%s/\\^\\[/\\\\<Esc>/ge\<CR>:%s/<80>kl/\\\\<Left>/ge\<CR>:%s/<80>kr/\\\\<Right>/ge\<CR>:%s/<80>ku/\\\\<Up>/ge\<CR>:%s/<80>kd/\\\\<Down>/ge\<CR>:%s/<80>kb/\\\\<Bs>/ge\<CR>:%s/\\^M/\\\\<CR>/ge\<CR>"

使用方法:
这个脚本会初始化@t宏,这个@t用来做字符串替换工作。这里有一点需要注意的。比如"ap打印出来的宏数据里面的类似于<80>这样的显示只是一个字符,而不是我们看到的4哥字符,所以打印出来的结果,需要单独复制(鼠标选中复制到剪切板,不是vim中的yy复制)出来放到新的文件中,在执行这个@t。

在这里插入图片描述

范例分享

:let @s="oSystem.out.println();\<Esc>hi"

执行结果:

System.out.println();

:let @c="opublic class Demo {\<CR>}\<Esc>ko\<Esc>jkk$hdb\<Esc>"

执行结果:

public class  {
    
    
}

:let @t="opublic static void main()\<Left>String[] args<80>kr{}\<Le    ft>\<CR>\<CR><80>ku   q<80>kb\<Esc>j"

执行结果:

public static void main(String[] args){
    
    
}

参考文献

《编辑器 - 保存vim宏》

猜你喜欢

转载自blog.csdn.net/lxyoucan/article/details/113942842
今日推荐