【发布时间】:2013-11-14 18:38:50
【问题描述】:
我的键盘上有一个 ½ 键,有时我想在 Vim 中编辑 LaTeX 时使用它以扩展为正确的表达式,即\frac{1}{2}。
我知道我应该这样做:
inoremap ½ \frac{1}{2}
现在,我怎样才能使它只适用于 LaTeX 文件?
【问题讨论】:
标签: vim keymapping
我的键盘上有一个 ½ 键,有时我想在 Vim 中编辑 LaTeX 时使用它以扩展为正确的表达式,即\frac{1}{2}。
我知道我应该这样做:
inoremap ½ \frac{1}{2}
现在,我怎样才能使它只适用于 LaTeX 文件?
【问题讨论】:
标签: vim keymapping
您将通过<buffer> 修饰符获得映射的缓冲区本地变体。
要定义所有Tex 缓冲区的映射,您可以在FileType 事件上使用:autocmd(:setlocal filetype? 会告诉您实际的文件类型):
:autocmd Filetype tex inoremap <buffer> ½ \frac{1}{2}
但是当您为各种文件类型添加映射和其他设置时,这会变得很笨拙。最好将命令放入~/.vim/ftplugin/tex_mappings.vim。 (这要求您拥有:filetype plugin on。)
【讨论】:
<buffer>) 并提供有关使用 ftplugin 目录的组织提示。我个人更喜欢使用after 目录。对于texFileType,使用以下模式之一:~/.vim/after/ftplugin/tex.vim、~/.vim/after/ftplugin/tex_*.vim 或~/.vim/bundle/ftplugin/tex/*.vim。如需更多帮助,请参阅 :h after-directory 和 :h ftplugin-name
after 目录仅在您需要覆盖 文件类型默认值时才是必需的。个人定制可以放在任何一个中。您更喜欢将所有自定义设置保存在 after 目录中。没关系。我更喜欢只在那里放置覆盖,以便我可以快速查看我的配置与默认设置的不同之处。
您想要 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 键实际插入的代码。
【讨论】:
<buffer>,如我的回答所示。