如何为多种语言创建多个.vimrc?

时间:2016-09-15 03:41:36

标签: vim vim-plugin

我正在学习Vim并很快发现它有多棒。我为.thon设置了我的.vimrc,但现在我希望将我的生活与vim完全融合。那么如何为每种语言创建一个单独的.vimrc呢? 我已下载emmet for html并将其放入我的.vim中,我现在也无法使用emmet。

我试过〜/ .vim / ftplugin / java.vim但我无法创建新的.vim文件

我有emmet我只是不知道如何让它工作。 http://mattn.github.io/emmet-vim/我找到的最好的东西是

2 个答案:

答案 0 :(得分:3)

Vim有 filetype plugins 的概念。您可以通过:filetype plugin on(在~/.vimrc中)启用它们。然后,无论何时编辑Python / Java /任何文件,Vim都会为该特定编程语言加载相应的设置。您可以使用自己的设置调整/覆盖/扩展这些设置,并根据需要添加(缓冲区本地)映射和命令。阅读更多:help ftplugin

因此,我建议将设置和映射放入~/.vim/after/ftplugin/{filetype}.vim而不是定义大量:autocmd FileType {filetype},如@ pdoherty926的答案所示。这是正确的机制,它不会使你的~/.vimrc混淆语言特定的东西。

答案 1 :(得分:2)

如果您对使用不同的设置,键映射等感兴趣,可以使用autocmd在单个.vimrc中实现此目的。 (您的语言特定插件自行处理。例如,Python插件只有在编辑Python文件时才会生效。)

来自the docs

  

您可以指定在读取或写入时自动执行的命令   进入或离开缓冲区或窗口时,以及退出Vim时的文件。

例如,这是我的.vimrc的一部分:

" set shiftwidth and softtabstops to 2 when working with Clojure, Ruby, HAML, etc.
autocmd FileType clojure,ruby,haml,eruby,yaml,cucumber set ai sw=2 sts=2 et

" map ctrl-e to vim-fireplace's Eval function when working with Clojure files
autocmd FileType clojure nnoremap <C-e> :Eval<CR>