如何禁用所有 Vim-LaTeX 映射?

如何禁用所有 Vim-LaTeX 映射?

我喜欢 Vim-LaTeX 套件提供的一些功能,但不是全部。

尤其是,我不喜欢所有的映射,例如[[ = \left[ \right]和 的自动占位符<++>。我打字很快,但随之而来的是更多的打字错误,我几乎可以立即通过按退格键来纠正这些错误。不幸的是,如果某些东西自动添加了一堆占位符或扩展了某些表达式,那么我就必须在文档中移动并删除不必要的字符。例如,如果我不小心按了[两次,那么我不仅要删除一个字符,而且还要删除 10 个字符。

在浏览过文档和部分源代码后,我设法禁用了其中的一些“功能”,但不是全部:

尤其:

let g:Tex_SmartKeyBS = 0
let g:Tex_SmartKeyQuote = 0
let g:Tex_SmartKeyDot = 0

(关闭退格键、双引号和三点键的地图。)

let g:Imap_UsePlaceHolders = 0

(关闭<++>占位符插入。)

但我似乎找不到关闭其他东西的方法。有人有什么建议吗?

编辑:我可以通过设置来“禁用”更多功能:

let g:Tex_Leader = '`tex'
let g:Tex_Leader2 = ',tex'

(这会停止一些扩展,但仍然不是全部。它并没有真正禁用它,而只是使您输入的可能性更小,`texa而不是像可能更常见的那样`a。)

PS:就我个人而言,我认为制作一个可选包是一种非常糟糕的做法,因为安装后会极大地改变系统的默认处理方式。我不介意一些智能源突出显示等,或者一些新命令(不会破坏任何旧命令),但默认启用这种激烈的键重新映射似乎毫无帮助。

答案1

对于和我一样在这里寻找同样东西的人,请注意:

要禁用特定的IMAPs,请IMAP向文件添加一些简单的命令~/.vim/after/ftplugin/tex.vim(如果不存在,则可能需要创建它)。例如,

" Undo some latex-suite macros
call IMAP('()', '()', 'tex')
call IMAP('{}', '{}', 'tex')
call IMAP('[]', '[]', 'tex')
call IMAP('::', '::', 'tex')
call IMAP('{{', '{{', 'tex')
call IMAP('((', '((', 'tex')
call IMAP('[[', '[[', 'tex')
call IMAP('$$', '$$', 'tex')

答案2

我输入let g:Imap_FreezeImap=1了我的.vimrc。它应该可以禁用所有这些烦人的“魔法”。

答案3

Latex-Suite 参考章节中的状态3 个 Latex-Suite 宏在部分覆盖 Latex-Suite 宏

要删除映射,您可以使用
call IUNMAP('FEM', 'tex')
~/.vim/after/ftplugin/tex_macros.vim。

例如

call IUNMAP('{}', 'tex')

键入时将取消扩展映射{}


IUNMAP命令于 2016 年 12 月 28 日星期三 21:57:54 +0100 添加

答案4

事实上,不应该tex为所有文件启用映射。因此,您需要更新vim-latex或更改那里的配置选项。

我在扩展方面遇到了同样的问题[[ ~> \left[ <++> \right]<++>。总是需要很长时间才能撤消任何错误,因为正常的撤消会删除太多内容。所以我发现你可以插入撤消标记在替换之前加上^Gu(literal Ctrl-G u)。这样,无论何时我输入[[错误或者想要一个 literal [[,我只需按下<undo>键,然后就只剩[[下 了。

另请参阅我的问题所以<undo>,我在那里询问了在插入模式下获取密钥的方法。

要自动插入撤消标记,您需要更改文件imap.vimvim-latex在函数末尾LookupCharacter将返回行更改为

return a:char . "^Gu\<bs>" . bs . IMAP_PutTextWithMovement(rhs, phs, phe)

请注意,为了书写^G您必须键入Ctrl-V Ctrl-G,仅复制粘贴在这里是不够的。

我将此更改作为建议发送到vim-latex邮件列表,但不幸的是似乎没有活跃的维护者......

相关内容