防止vim脚本应用于自身

时间:2017-06-16 08:06:19

标签: vim macros

我有一个带替换的vim脚本:

:%s/|I\(cc\|ee\|CC\|EE\)|/|$I_{\1}$|/
:%s/|UOmax\([+-]\)|/|$U_{Omax\1}$|/
:%s/|KcmR|/|$K_{cmR}$|/
:%s/|KsvR|/|$K_{svR}$|/
:%s/Uoffset/$U_{offset}$/
..............

有时我忘了这个脚本当前已被编辑,因此我执行so ~/.vim/macros/script.vim并且它正在修改自己。如何让脚本知道它当前已被编辑?

2 个答案:

答案 0 :(得分:2)

您可以在继续之前检查expand('%:p') != expand('<sfile>:p')

老实说,我不确定我是否会为此烦恼,因为u ndo会快速解决问题,而且因为我经常打开很多缓冲区,所以我很可能在任何缓冲区上犯错误。 / p> BTW,另一种方法是定义一个tex ftplugin,你可以定义一个执行替换的功能,以及一个在当前缓冲区上执行该功能的缓冲区本地映射。这样,您就无法在不是LaTeX的缓冲区上运行替换。

答案 1 :(得分:0)

尝试安装vim-quickrun并输入class ProjectTableViewController: SuperTViewController, UINavigationBarDelegate { override func viewDidLoad() { super.viewDidLoad() delegate = self } .... } 。 vim-quickrun如果修改了脚本,则从缓冲区而不是文件运行脚本。