Расширенная версия ответа от Samad Lotia и ZyX
Поместите это в ваш ~/.vim/after/ftplugin/tex.vim
function! AddItem()
let [end_lnum, end_col] = searchpairpos('\\begin{', '', '\\end{', 'nW')
if match(getline(end_lnum), '\(itemize\|enumerate\|description\)') != -1
return "\\item "
else
return ""
endif
endfunction
inoremap <expr><buffer> <CR> getline('.') =~ '\item $'
\ ? '<c-w><c-w>'
\ : (col(".") < col("$") ? '<CR>' : '<CR>'.AddItem() )
nnoremap <expr><buffer> o "o".AddItem()
nnoremap <expr><buffer> O "O".AddItem()
Улучшения
- автоматическая вставка
\item
также происходит для сред enumerate
и description
- Автоматическая вставка
\item
происходит только в том случае, если окружающая среда является одной из трех (itemize/enumerate/description
). Этого не происходит при следующих обстоятельствах
\begin{itemize}
\item
\begin{minipage}
<CURSOR>
\end{minipage}
\end{itemize}
- автоматическая вставка
\item
происходит только в том случае, если вы находитесь в конце строки
- удаление автоматически вставленного
\item
, нажав <CR>
во второй раз. Если вы хотите добавить отступ в этом случае, измените '<c-w><c-w>'
на '<c-w><c-w><c-t>'
.