我记录了一个简单的宏,并在随后的几行中对其进行了重播,但似乎重播速度非常慢(每秒处理几行)。这是预期的,并且有办法提高这种速度吗?

评论

尝试:set lazyredraw(:h lazyredraw)

确实lazyredraw可能是最好的解决方案。您还可以提供宏和示例文件,以便我们查看是否可以对其进行优化。

#1 楼

lazyredraw设置为:set lazyredraw将通过在执行宏或键入命令以外的命令时不重绘屏幕来大大提高宏执行速度,有关更多信息,请参见:help 'lazyredraw'

另一种减少浪费的方法是确保您没有时间浪费autocmds或映射。如果宏在运行后仍然很慢,请检查您的vimrc文件是否存在慢速或不必要的映射,并删除不需要的插件。在我的情况下,我有一个可以运行autocmd的程序,并且在退出插入模式时可以运行外部程序关闭CapsLock,这很方便并且通常不引人注意,但是这会大大降低插入宏的速度。

如果您的宏进入插入状态模式(如果您有很多映射),可能有个键来设置粘贴模式并暂时禁用插入映射可能会有所帮助,请参阅:help 'paste':help 'pastetoggle'。请记住,这可能会使插入变得更加困难。

最后,通过最小化移动,模式切换等,使宏尽可能简单。

祝你好运。