Чтобы расширить принятый ответ с реальным кодом, так как я попробовал предложение, и оно работало хорошо;
Вот пример того, как он работает, чтобы вставить небольшой фрагмент php:
`nnoremap <leader>php a<CR><ESC>:.-1read $SNIPPETS/php<CR>I<BS><ESC>j0i<BS><ESC>l`
Как правило, синтаксис
`nnoremap [KEY SEQUENCE] a<CR><ESC>:.-1read [FILE PATH]<CR>I<BS><ESC>j0i<BS><ESC>l`
Просто чтобы разобраться:
nnoremap
: я собираюсь определить новое отображение клавиш для нормального режима
<leader>php
: Я хотел бы запустить последовательность команд при нажатии этой комбинации клавиш. В моем случае <leader>
- это ,
, поэтому я набираю ,php
, чтобы вызвать команду.
Теперь по команде, побитно:
a<CR><ESC>
: перейти в режим вставки (после курсора), вставить разрыв строки, вернуться в обычный режим.
:.-1read <file><CR>
: вводит нужный файл в строку над текущей строкой.
I<BS><ESC>
: перейти к началу строки, удалить разрыв строки, вернуться в нормальный режим.
j0i<BS><ESC>l
: перейти вниз на одну строку (до оставшейся части строки, на которой вы изначально находились), перейти к началу, войти в режим вставки, удалить разрыв строки, вернуться в нормальный режим.
l
: поместите курсор справа от вставленного файла (это просто сделало команду более похожей на ожидаемую).
примечание
У вас есть выбор: вставлять до или после курсора. В этом примере я выбрал вставку после курсора, потому что именно так обычно работает команда p
для вставки вытянутого текста. Кроме того, чтобы вставить перед курсором, вы должны изменить a
в начале команды на i
. Вы можете использовать один из них исключительно или связать их с разными, но связанными последовательностями клавиш. Например:
`nnoremap <leader>php i<CR><ESC>:.-1read $SNIPPETS/php<CR>I<BS><ESC>j0i<BS><ESC>l`
Может вставить текст перед курсором,
и:
`nnoremap <leader><leader>php a<CR><ESC>:.-1read $SNIPPETS/php<CR>I<BS><ESC>j0i<BS><ESC>l`
может вставить текст после курсора. Или наоборот. Я сделал «перед курсором» более легким для запуска, потому что я использую его чаще при вставке в строку.
другое примечание
Это решение в основном полезно, если вы читаете из файла, который ожидаете использовать достаточно часто, и для этого стоит настроить сопоставление клавиш (т. Е. Читать фрагмент из файла). Это не очень помогает, если вы просто хотите читать случайные файлы всякий раз, когда у вас не будет готового сопоставления клавиш.
Так как это очень формульно, я уверен, что можно было бы определить функцию, которая бы принимала имя файла в качестве аргумента и делала бы то же самое. Я никогда не писал функции в vimscript, поэтому, если кому-то, кто знает больше, хочется отредактировать этот ответ, чтобы включить это решение - я призываю их сделать это!