Нажатие клавиши<Tab> в буфер из функции

Я работаю над созданием функции, которая будет:

  • Проверьте текущий файл, над которым я работаю
  • Создать новый буфер в моей тестовой директории на основе моего имени файла
  • Отредактируйте этот файл и запустите мой тестовый шаблон "snipmate"

Пока у меня все работает, кроме запуска snipmate. Что я хотел бы сделать, это вставить <Tab> персонаж, как я был в режиме вставки, чтобы запустить снайпер

" 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 для этого, но я не слишком заинтересован в том, что я должен использовать вместо этого.

Какие-нибудь мысли?

Есть ли способ войти в режим вставки из функции?

1 ответ

Решение

Все после :normal трактуется буквально; чтобы вставить специальные символы, вам нужно использовать двойные кавычки и :execute оценить их:

execute "norm i test\<Tab>"

Для клавиши табуляции вы могли бы написать "\t"; :help key-notation тем не менее, является более распространенным и общим.

Другие вопросы по тегам