我的vimrc中有以下几行:
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
不能?
答案 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