用于设置选项但不用于映射的文件类型的自动命令

时间:2014-01-28 13:37:30

标签: vim

我的中有以下几行:

set shiftwidth=4
autocmd FileType tex setlocal shiftwidth=2
autocmd FileType tex map xyz doSomething

如果我打开一个文本文件(文件类型设置正确),然后执行set sw,我会得到4。 如果我打开tex文件(文件类型设置正确),我set sw得2。那部分有效!

现在对于映射我输入map xyz,我看到映射是针对两种文件类型完成的。我做错了什么?

起初我认为映射的内容是错误的,所以我尝试了:

set history=100
autocmd FileType tex setlocal history=123

但是,对于所有文件类型,历史记录设置为123 ... shiftwidth如何工作,但history不能?

1 个答案:

答案 0 :(得分:3)

:setlocal:set的{​​{1}}是:map <buffer>的{​​{1}} {(1}}):

:map

另外,you should use :noremap;它使映射不受重映射和递归的影响。

我建议将设置和映射放入:h :map-local,而不是定义大量autocmd FileType tex map <buffer> xyz doSomething ;这要求您拥有~/.vim/after/ftplugin/tex.vim

选项范围

:autocmd FileType提供了哪些选项仅为全局(如:filetype plugin on)以及哪些支持(缓冲窗口)的提示 - 本地值;比较第二行:

:help