如何使用命令或本地vimrc文件在多个vim配置之间切换?

前端之家收集整理的这篇文章主要介绍了如何使用命令或本地vimrc文件在多个vim配置之间切换?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在几个小组,每个都有自己的选项卡/缩进/间距标准在C.

有一种方法可以为每个单独的可选VIM配置,因此,当我编辑文件,要么:

>我做类似set group = 1来选择一个配置
>位于工作目录中的本地.vimrc用于自动设置配置

综上所述

有几种方法可以做到这一点,其中大多数已经建议,但我想我会总结他们两个额外的:

>每个目录vimrc – 缺点是Vim必须在正确的目录中启动:如果你的项目在〜/ project1,你有〜/ project1 / .vim.custom和做cd〜 vim project1 / file.c,将无法找到自定义设置。
> Modelines – 非常有效,但缺点是需要将它们添加到所有文件(并记住将它们添加到新文件)
>目录特定的自动命令 – 这是非常有效的
>扫描文件中的特定标题(见下文) – 这是我在过去最常使用的,为不同公司或明确命名的项目工作
>打开文件时选中的每个目录vimrc(请参阅下文)。另一个相当容易实现,特别是如果你的项目代码都在一个地方。

扫描标题

在许多组织中,在每个源文件的顶部都有一个标准头(带有版权声明和项目名称等)。如果是这种情况,您可以让Vim自动扫描查找关键字的文件的第一行(例如10行)。如果找到它,它可以更改您的设置。我修改了它,使它比我使用的形式(它做很多其他事情)更简单,但创建一个〜/ .vim / after / filetype.vim(如果你还没有),并添加类似这个:

au FileType * call <SID>ConfigureFiletypes(expand("<amatch>"))

" List of file types to customise
let s:GROUPNAMETypes = ['c','cpp','vhdl','c.doxygen']

func! <SID>CheckForGROUPNAMECode()
    " Check if any of the first ten lines contain "GROUPNAME".

    " Read the first ten lines into a variable
    let header = getline(1)
    for i in range(2,10)
        let header = header . getline(i)
    endfor

    if header =~ '\<GROUPNAME\>'
        " Change the status line to make it clear which
        " group we're using
        setlocal statusline=%<%f\ (GROUPNAME)\ %h%m%r%=%-14.(%l,%c%V%)\ %P
        " Do other customisation here
        setlocal et
        " etc
    endif
endfunc

func! <SID>ConfigureFiletypes(filetype)
    if index(s:GROUPNAMETypes,a:filetype) != -1
        call <SID>CheckForGROUPNAMECode()
    endif
endfunc

每当打开任何类型的文件并设置文件类型(au FileType *行)时,将调用ConfigureFiletypes函数。这将检查文件类型是否在与当前组(GROUPNAME)相关联的文件类型列表中,在本例中为’c’,’cpp’,’vhdl’或’c.doxygen’。如果是,它调用CheckForGROUPNAMECode(),它读取文件的前10行,如果它们包含GROUPNAME,它做一些自定义。除了设置expandtabs或其他,这也改变状态栏以显示名称,所以你知道它的工作一目了然。

打开时检查配置

很像JS Bangs的建议,有一个自定义配置文件可能是有用的。然而,不是加载它在vimrc,考虑类似这样,这将检查.c文件是否为与.c文件相同的目录中的.vim.custom打开。

au BufNewFile,BufRead *.c call CheckForCustomConfiguration()

function! CheckForCustomConfiguration()
    " Check for .vim.custom in the directory containing the newly opened file
    let custom_config_file = expand('%:p:h') . '/.vim.custom'
    if filereadable(custom_config_file)
        exe 'source' custom_config_file
    endif
endfunction

猜你在找的Bash相关文章