我正在用vim编辑一个LaTeX文件。当我在\begin{itemize}
环境中时,有没有办法告诉vim每当我打开一个新行时自动插入\item
?
答案 0 :(得分:4)
function CR()
if searchpair('\\begin{itemize}', '', '\\end{itemize}', '')
return "\r\\item"
endif
return "\r"
endfunction
inoremap <expr><buffer> <CR> CR()
将其放入.vim/ftplugins/tex.vim
文件(或.vim
目录中的任何.vim/ftplugins/tex
内。
答案 1 :(得分:2)
我会推荐http://vim-latex.sourceforge.net。该软件包定义了几个对乳胶有用的地图。
特别是对于插入\ item,请按<ATL-I>
答案 2 :(得分:1)
答案 3 :(得分:1)
我可以点击Cntl-I,它会在正常模式或插入模式下为我提供。这就是我放在.vimrc中的内容:
:imap <C-i> \item
:nmap <C-i> o\item
请注意,\item
末尾有一个空格。
答案 4 :(得分:1)
我攻击了ZyX提供的脚本并提出了这个问题。它增加了对o
和O
命令的支持。 不需要LaTeX-VIM。
function AddItem()
if searchpair('\\begin{itemize}', '', '\\end{itemize}', '')
return "\\item "
else
return ""
endif
endfunction
inoremap <expr><buffer> <CR> "\r".AddItem()
nnoremap <expr><buffer> o "o".AddItem()
nnoremap <expr><buffer> O "O".AddItem()
答案 5 :(得分:0)
将其放在test_image
~/.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>'
。