Vim config для определенных типов файлов - PullRequest
0 голосов
/ 22 апреля 2011

Я борюсь с использованием .vimrc для применения определенных конфигураций, основанных на типе файла.Следуя предложению autocmd FileType здесь , я попытался применить конфигурацию на основе типа файла.Вот что у меня есть в моем .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).Спасибо.

Ответы [ 2 ]

5 голосов
/ 01 июня 2011

Не используйте .vimrc для конкретных типов файлов, есть невероятно точный механизм, который Линч описал для настроек типов файлов или ситуационных 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», чтобы дать мне man-страницу для 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
au BufNewFile,BufRead Portfile  set filetype=portfile
au FileType portfile compiler portfile

Я должен вытащить этот порт-компилятор и поместить его в ftplugins, потому что вы можете видеть, как эта система может стать довольно сумасшедшей, но для этого нужны ctags и git.

2 голосов
/ 23 апреля 2011

Вы можете добавить свою конкретную команду в .vim / ftplugin / tex.vim. Затем Vim автоматически распознает, что tex является типом файла, и загрузит его поведение из вашего tex.vim.

Например, я использую это для man-страниц .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/'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...