2015-06-01 2 views
2

я работаю над созданием функции, которая будет:<Tab> нажатия в буфер из функции

  • Проверьте текущий файл я работаю
  • Создать новый буфер в моей тестовой директории на основе моего файла имя
  • Редактировать этот файл и начать свой 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 для этого, но я не слишком увлечен тем, что должен использовать вместо этого.

Любые мысли?

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

+2

Попробуйте «exec» norm i test \ t "'. – lcd047

+0

приятно, что сработало! благодаря! Я не понял, что vim рассматривает одиночные кавычки как литералы –

ответ

1

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

execute "norm i test\<Tab>" 

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

 Смежные вопросы

  • Нет связанных вопросов^_^