3

我已经vim-latex通过 Vundle 安装,我正在尝试禁用它默认设置的一些烦人的映射。从我知道的文档中,例如,我可以使用以下命令取消映射FEM

call IUNMAP('FEM','tex')

但是当我输入时,我得到了错误E117: Unknown function: IUNMAP

我已经通过包含在我的中安装vim-latex了 Vundle,并且我刚刚使用该命令更新了所有内容,它运行没有错误,所以我应该拥有最新版本的软件包。Plugin 'LaTeX-Suite-aka-Vim-LaTeX'vimrcPluginUpdate

我在这里错过了什么吗?

4

2 回答 2

2

实际上,您遇到的问题与您从哪里获取 vim-latex 有关。

和:

Plug 'LaTeX-Suite-aka-Vim-LaTeX'

你从这里得到它,你会注意到它自 2010 年以来没有更新。查看plugin/imaps.vim该存储库中的文件,你会看到有一个 function 的定义IMAP(),但没有 for IUNMAP(),这可能是在最后一个之后引入的存储库同步的日期...

请改用此来源:

Plug 'vim-latex/vim-latex'

将从此处获取它,这是此插件的官方维护位置。

如果您查看plugin/imaps.vim该源代码树,您会注意到function! IUNMAP那里已定义。

更新到正确的插件位置应该可以为您解决这个问题(连同过去 10 年中的许多修复程序一起!)

于 2020-02-23T01:45:35.813 回答
1

只有在处理完您的 vimrc,vim-latex 插件才会加载函数IMAP()和。因此,您需要从它们可用的上下文中执行它们。IUNMAP()

此外,为了使您的取消映射成功,您需要在创建映射实际执行它,并且通常在设置文件类型时创建映射。

文档提到这些覆盖规则应该在特定文件中完成:

需要注意的重要一点是,如果您希望覆盖由 Latex-Suite 创建的宏,而不仅仅是创建新的宏,您应该将 IMAP()(or IUNMAP()) 调用放在一个脚本中,该脚本在 Latex-Suite 中的文件之后获取源代码。

一个好的地方通常是目录中的文件类型插件文件 ~/.vim/after/ftplugin/ 。[...]

例如,要删除映射,您可以使用

call IUNMAP('FEM', 'tex')

在 ~/.vim/after/ftplugin/tex_macros.vim.

文档提到您应该在使用的文件ftplugin类型之后使用文件。检查:set ft?以确认您的确实是tex,在这种情况下,您可以使用tex.vim, tex_something.vim(如建议的tex_macros.vim)或tex/something.vim(子目录。)

于 2020-02-23T01:32:30.183 回答