#vim #latex #vi #keymapping
#vim #Латекс #vi #отображение клавиш
Вопрос:
Я хотел бы создать привязку клавиш, которая позволит пользователю вводить что-либо в режиме вставки, затем переходит к другой строке и помещает то, что пользователь ввел там. Цель этого для LaTeX begin
и end
. Это то, что у меня есть до сих пор:
autocmd Filetype tex inoremap `d begin{}<CR>< ><CR>end{}<esc>2kf{a
В конце a
позволяет пользователю вводить в begin
поле, и я хочу сделать так, чтобы при выходе из режима вставки то, что я ввел, помещалось в end
поле. Я, честно говоря, понятия не имею, как это сделать. Любая помощь приветствуется.
Комментарии:
1. Рассмотрите стек Vi и Vim для вопросов по Vim!
2. @filbranden Нет. Это по теме здесь.
Ответ №1:
Это довольно сложно сделать для одного сопоставления.
Если вы действительно хотите создать свой собственный, я думаю, что самый простой подход, который я могу предложить здесь, — это запросить у пользователя тип среды (с input()
), а затем использовать это имя дважды при вставке блока.
Это должно сработать:
function! LatexEnvironment()
let name = input('Environment name: ')
return "\begin{".name."}r\end{".name."}<C-o>O"
endfunction
autocmd Filetype tex inoremap <expr> `d LatexEnvironment()
Гораздо лучшим подходом здесь является использование движка сниппетов.
Обычно очень легко поддерживать несколько полей с повторениями, и вы даже можете установить значения по умолчанию для полей в движке фрагментов.
Например, в UltiSnips вы можете использовать следующий фрагмент:
snippet "\?b(egin)?" "begin{} / end{}" br
begin{${1:something}}
${0:${VISUAL}}
end{$1}
endsnippet
Который на самом деле является стандартным фрагментом, который вы можете найти в библиотеке honza / vim-snippets.
Ответ №2:
Остановите это безумие и используйте все это ниже:
- vim-фрагменты
- UltiSnips
- самое главное, VimTex.
Комментарии:
1. Отличный совет по использованию vimtex в файлах TeX LaTeX! Это один из лучших плагинов в Vim!