2

我正在创建一个函数,它将:

  • 检查我正在处理的当前文件
  • 根据我的文件名在我的测试目录中创建一个新缓冲区
  • 编辑该文件并启动我的 snipmate“测试”模板

到目前为止,除了触发 snipmate 之外,我一切正常。我想做的是插入一个<Tab>角色,就像我在插入模式下一样触发 snipmate 开始

" Only works for modules and models right now
function! MakeTest()
  " sub out any prefix
  let base_test_path = substitute(expand('%:r'), '\(lib/\|app/models/\)', '', 'g')
  execute 'edit ' . 'test/unit/' . base_test_path . '_test.rb'
  norm i test<Tab>
endfunction

相反,它实际上是映射test<Tab>到我的模板中。我的猜测是我不想使用norm这个,但我不太热衷于我应该使用什么。

有什么想法吗?

有没有办法从函数进入插入模式?

4

1 回答 1

1

之后的一切都:normal按字面意思对待;要插入特殊字符,您需要使用双引号:execute评估它们:

execute "norm i test\<Tab>"

对于制表键,您也可以编写"\t"; 不过,这:help key-notation是更常见和普遍的一种。

于 2015-06-02T08:15:45.667 回答