我仍然很难在函数中执行命令:
功能:
function! MyFunc(key)
let r = a:key
exe r
endfun
a:key
可以是任何内容,但当它是搜索或包含<C-..>
的命令时,它不起作用
1)
特殊键示例
当a:key
= 'normal \<C-w>t\<C-w>H'
时
它在上面的功能中exe 'normal \<C-w>t\<C-w>H'
它必须是exe "normal \<C-w>t\<C-w>H"
(双引号)
如何从变量(a:键)/函数调用中执行特殊键?
2)
突出显示示例
当我从命令行:call MyFunc('/\s')
中调用此函数时
即使突出显示,我也必须按n
键才能看到突出显示的项目
或另一种方法是在r
以/
开头,然后执行return normal! n
时在功能范围内进行检查
我怎么能避免这种情况呢?
这具有相同的效果:
:call MyFunc('let @/ = "\\s"')
如何在函数调用中执行特殊键和搜索项目?
答案 0 :(得分:1)
RE 1.您必须以最终形式将特殊键传递给您的功能,例如
:call MyFunc("normal \<C-w>t\<C-w>H")
RE 2.内部功能,最后使用的搜索模式不会改变(cp。:h function-search-undo
)。这是一个功能,而不是一个bug。要解决这个问题,你必须在函数外部执行命令(即直接在命令或映射中);但是,您仍然可以调用函数来生成搜索模式。