我正在创建一个函数,将:
- 检查我正在处理的当前文件
- 在我的test目录中基于我的文件名 创建一个新的缓冲区
- 编辑该文件并启动我的snipmate "test"模板
到目前为止,我有一切工作,除了触发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
,但我不太热衷于我应该用什么代替。
任何想法吗?
是否有办法从函数进入插入模式?
:normal
之后的全部按字面处理;要插入特殊字符,需要使用双引号和:execute
对它们求值:
execute "norm i test<Tab>"
对于tab键,您可以选择写"t"
;然而,:help key-notation
是更常见和通用的。