我最近在 gvim 7.4 中安装了 vim-latex 插件。我按照文档进行了设置。一切正常。但我遇到了一个问题。当我输入扩展键组合时,组合键也会保留扩展结果。例如,按下`^
应该会扩展为 \Hat{<++>}<++>
。但它却扩展为
`^\Hat{<++>}<++>
对所有人来说都是如此。以下是一些例子
`D\Delta
SSS\subsection{}<++>
SPG\paragraph{}<++>
SSP\subparagraph{}<++>
我该如何解决这个问题,以便在扩展时省略组合键?
答案1
290
对文件行进行的以下更改~/.vim/plugin/imaps.vim
对我来说很有帮助:
前:
return a:char . "\<c-g>u\<bs>" . bs . IMAP_PutTextWithMovement(rhs, phs, phe)
后:
return bs . "\<c-g>u\<bs>" . IMAP_PutTextWithMovement(rhs, phs, phe)
我以前从未使用过 vim-script,因此,该解决方案可能仅适用于我特定的 vim 编译。
另外,我还没有测试通过 vim-latex IMAP 完成的所有映射,但a:char
对于其中一些映射来说,这可能很重要。
答案2
只需添加set backspace=start
到.vimrc
即可解决此问题。因为未设置<bs>
撤消点时无法删除撤消点之前的字符。backspace
在文件中~/.vim/plugin/imaps.vim
,函数末尾s:LookupCharacter
有一些如下代码:
let bs = substitute(s:MultiByteStrpart(lhs, 1), ".", "\<bs>", "g")
" \<c-g>u inserts an undo point
return a:char . "\<c-g>u\<bs>" . bs . IMAP_PutTextWithMovement(rhs, phs, phe)
最后一行返回你输入的内容,然后使用 创建一个撤销点\<c-g>u
,然后使用<bs>
删除你输入的字符。但是,当backspace
没有设置 时,<bs>
无法删除撤销点之前输入的字符。
varbs
用于backspace
删除您输入的内容。