【问题标题】:Vim remap only if source file is in LaTeX [duplicate]仅当源文件在 LaTeX 中时,Vim 才重新映射 [重复]
【发布时间】:2013-11-14 18:38:50
【问题描述】:

我的键盘上有一个 ½ 键,有时我想在 Vim 中编辑 LaTeX 时使用它以扩展为正确的表达式,即\frac{1}{2}

我知道我应该这样做:

inoremap ½ \frac{1}{2}

现在,我怎样才能使它只适用于 LaTeX 文件?

【问题讨论】:

    标签: vim keymapping


    【解决方案1】:

    您将通过<buffer> 修饰符获得映射的缓冲区本地变体。

    要定义所有Tex 缓冲区的映射,您可以在FileType 事件上使用:autocmd:setlocal filetype? 会告诉您实际的文件类型):

    :autocmd Filetype tex inoremap <buffer> ½ \frac{1}{2}
    

    但是当您为各种文件类型添加映射和其他设置时,这会变得很笨拙。最好将命令放入~/.vim/ftplugin/tex_mappings.vim。 (这要求您拥有:filetype plugin on。)

    【讨论】:

    • 此答案正确使用缓冲区本地映射 (&lt;buffer&gt;) 并提供有关使用 ftplugin 目录的组织提示。我个人更喜欢使用after 目录。对于texFileType,使用以下模式之一:~/.vim/after/ftplugin/tex.vim~/.vim/after/ftplugin/tex_*.vim~/.vim/bundle/ftplugin/tex/*.vim。如需更多帮助,请参阅 :h after-directory:h ftplugin-name
    • 谢谢@PeterRincker!严格来说,after 目录仅在您需要覆盖 文件类型默认值时才是必需的。个人定制可以放在任何一个中。您更喜欢将所有自定义设置保存在 after 目录中。没关系。我更喜欢只在那里放置覆盖,以便我可以快速查看我的配置与默认设置的不同之处。
    【解决方案2】:

    您想要 Fietype 特定的自动命令:

    autocmd Filetype tex,latex inoremap ½ \frac{1}{2}
    

    尝试类似的方法。这取决于Filetype 选项是否打开(请参阅here)。你可以用set Filetype on设置它

    您还可以在读取或创建新文件时使用自动命令来检查文件名:

    autocmd BufNewFile,BufRead *.latex inoremap ½ \frac{1}{2}
    

    另外,您应该确认按下键盘上的 1/2 键实际上输入了 1/2 符号,否则显然这不起作用。无论如何,您可以通过(在插入模式下)按 ctrl-v 然后按物理键来确定 1/2 键实际插入的代码。

    【讨论】:

    • 添加到文件类型,vim 通常将 .tex 文件视为“plaintex”。好答案!
    • 好点,我添加了一些关于 Filetype 选项如何工作的说明
    • 谢谢你,正是我需要的。
    • 这仍然定义了一个全局映射,它也会影响之后在同一个 Vim 会话中编辑的其他缓冲区。最好加&lt;buffer&gt;,如我的回答所示。
    猜你喜欢
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    • 2015-01-14
    相关资源
    最近更新 更多