如何在函数中执行包含`<c - ..>`的搜索和命​​令?</c - ..>

时间:2014-08-15 13:49:25

标签: regex search vim special-characters wrapper

我仍然很难在函数中执行命令:

功能

 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"')

如何在函数调用中执行特殊键和搜索项目?

1 个答案:

答案 0 :(得分:1)

RE 1.您必须以最终形式将特殊键传递给您的功能,例如

:call MyFunc("normal \<C-w>t\<C-w>H")

RE 2.内部功能,最后使用的搜索模式不会改变(cp。:h function-search-undo)。这是一个功能,而不是一个bug。要解决这个问题,你必须在函数外部执行命令(即直接在命令或映射中);但是,您仍然可以调用函数来生成搜索模式。

相关问题