【问题标题】:How to create multiple .vimrc for several languages?如何为多种语言创建多个 .vimrc?
【发布时间】:2016-09-15 03:41:35
【问题描述】:

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

我已经尝试过 ~/.vim/ftplugin/java.vim 但我无法创建新的 .vim 文件

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

【问题讨论】:

  • 使用插件管理器让事情变得更容易,我个人使用病原体,安装新插件变得像克隆 git repo 一样简单。试一试。

标签: vim vim-plugin


【解决方案1】:

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

因此,我建议将设置和映射放入~/.vim/after/ftplugin/{filetype}.vim,而不是像@pdoherty926 的回答所建议的那样定义大量:autocmd FileType {filetype}。这是正确的机制,它不会让您的 ~/.vimrc 与特定语言的内容混淆。

【讨论】:

    【解决方案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>
    

    【讨论】:

    • 这就是ftplugin 文件的用途(参见:h ftplugin)。
    猜你喜欢
    • 2017-05-08
    • 2021-12-06
    • 1970-01-01
    • 2016-06-20
    • 2011-09-09
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    相关资源
    最近更新 更多