我正在努力使用.vimrc根据文件类型应用特定配置。在autocmd FileType
建议here之后,我尝试根据文件类型应用配置。这是我在.vimrc中的内容:
autocmd FileType tex call Tex_config()
function Tex_config()
let g:LatexBox_viewer = 'skim'
let g:LatexBox_latexmk_options = '-pvc'
let g:tex_flavor = "latex"
setlocal spell spelllang=en_ca
endfunction
我可以用以下函数调用函数Tex_config():debug Tex_config:Vim愉快地通过该函数。所以,一切似乎都应该有效。
但是,当我发出:set filetype=tex
时会发生奇怪的事情:拼写检查会关闭。当我发出:set filetype=foo
拼写检查时。与我希望从此配置代码段发生的情况相反!
非常感谢任何帮助。这是完整的vimrc(函数在44-50)。感谢。
答案 0 :(得分:5)
不要将.vimrc用于特定于文件类型的东西,Lynch为文件类型或情境vimrc设置描述了一种非常精确的机制。
例如:我的.vim中的一些东西
.vim/ftdetect:
haml.vim macports.vim puppet.vim
hiveminder.vim markdown.vim ruby.vim
.vim/ftplugin:
haml.vim portfile.vim sshconfig.vim
html_snip_helper.vim python.vim tmux.vim
javascript.vim python_match.vim zsh.vim
markdown.vim sass.vim
plist.vim scss.vim
,比方说,我的sshconfig.vim文件(我设置了“K”,为我提供了sshconfig的联机帮助页面,其中包含我的光标所在的标题。好的,这个技巧。)
" sshconfig ftplugin.
" At this point, only want to set man as the keywordprg
if exists("b:did_ftplugin")
finish
endif
let b:did_ftplugin = 1
" Customizations for sshconfig files
" what I _want_ is to jump to the heading
set keywordprg=man\ ssh_config\ -P\ \'less\ -p\ <cword>\'
现在,在.vim / ftdetect / macports.vim中,我有代码来确定这个文件是否是一个Portfile
" Portfile
au BufNewFile,BufRead Portfile set filetype=portfile
au FileType portfile compiler portfile
我应该把那个编译器端口文件拉出来并放到ftplugins中,因为你可以看到这个系统会变得多么疯狂,但这就是ctags和git的用途。
答案 1 :(得分:2)
您可以将特定命令添加到.vim / ftplugin / tex.vim。然后,Vim会自动识别tex是一种文件类型,并从tex.vim加载其行为。
例如,我将此用于手册页.vim / ftplugin / man.vim:
setlocal nolist
setlocal nomod
setlocal nonumber
" Set scratch buffer"
setlocal buftype=nofile
setlocal bufhidden=hide
setlocal noswapfile
确保你的vimrc中有这一行来设置你的vim文件夹:
let $VIM='~/.vim/'