在很多情况下,我有一些vim脚本,只在不在宏中运行时才要执行。例如,在某些情况下,我会闪烁光标以提醒自己现在的位置(在宏中运行时毫无意义,只会使宏占用10倍的时间)。
因此,对于这些情况,我想检查它是否作为宏运行,并避免在这种情况下进行不必要的操作。我搜索了一下帮助,但找不到标志来检测到这一点。这可能吗?
没有像mode()
或特殊v:macro_running
变量这样的函数,许多人认为这些函数只会鼓励不良做法。
您可以使用的行为feedkeys()
,其传递的键通常在命令/映射之后立即执行,但仅在宏执行的最后执行。如果将长时间运行的命令放在其中,它们将像往常一样直接降低正常命令的速度,但是仅(累计)降低了宏执行后的速度(通常可以使用来中止该命令<C-C>
)。
let @q = ',a,b'
代替:
nnoremap ,a aHello<Esc>2gs
nnoremap ,b aWorld<Esc>2gs
使用
nnoremap ,a aHello<Esc>:call feedkeys('2gs', 'n')<CR>
nnoremap ,b aWorld<Esc>:call feedkeys('2gs', 'n')<CR>
这将立即将整个HelloWorld
文本插入宏中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句