Нажатие клавиши<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
тем не менее, является более распространенным и общим.