我在几个小组工作,每个小组在C中都有自己的制表符/缩进/间距标准.
有没有办法为每个配置单独的可选VIM配置,所以当我编辑文件时,要么:
set group=1选择配置JSB*_*ոգչ 63
我有这个$HOME/.vimrc:
if filereadable(".vim.custom")
so .vim.custom
endif
Run Code Online (Sandbox Code Playgroud)
这允许我.vim.custom在每个目录中放置一个文件来加载特定于该目录的命令和选项.如果您正在处理具有深层目录结构的多个项目,则可能需要更复杂的东西(例如,在找到目录树之前,直到.vim.custom找到它),但是相同的基本思想将起作用.
更新:
我现在做这样的事情,以便.vim从与我正在编辑的文件相同的目录中读取文件,而不管当前目录是什么.
let b:thisdir=expand("%:p:h")
let b:vim=b:thisdir."/.vim"
if (filereadable(b:vim))
execute "source ".b:vim
endif
Run Code Online (Sandbox Code Playgroud)
DrA*_*rAl 40
有几种方法可以做到这一点,其中大多数已被提出,但我想我会用两个额外的方法总结它们:
~/project1并且您已经拥有~/project1/.vim.custom和执行cd ~ ; vim project1/file.c,则无法找到自定义设置.在许多组织中,每个源文件的顶部都有一个标准标题(带有版权声明和项目名称等).如果是这种情况,您可以让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
Run Code Online (Sandbox Code Playgroud)
每当打开任何类型的文件并设置文件类型(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
Run Code Online (Sandbox Code Playgroud)
jam*_*san 33
您还可以在每个路径的基础上将自动命令放入.vimrc哪些特定选项集中.
au BufRead,BufNewFile /path/to/project1/* setl sw=4 et
au BufRead,BufNewFile /path/to/project2/* setl sw=3 noet
Run Code Online (Sandbox Code Playgroud)
小智 17
插件做正确的事:http://www.vim.org/scripts/script.php? script_id = 441
"此插件在当前打开的文件的文件系统树中搜索本地vimrc文件.默认情况下,它会搜索文件目录中直到根目录的所有".lvimrc"文件,并以相反的顺序加载它们.加载文件的文件名和数量可通过全局变量自定义."
Jim*_*ner 12
假设您的开发人员不会抱怨它,您可以随时在评论中为每个文件添加vim设置.
/*
* vim:ts=4:sw=4:expandtab:...
*/
int main(int argc, char **argv)
{
...
Run Code Online (Sandbox Code Playgroud)
我为此创建了一个开源工具.忘记标题,扫描,配置和本地vimrc文件.
试试游泳.
swim是一个快速工具,用于切换vimrc文件和创建方便的别名.这是一个简短的用法列表.有关演练gif和下载说明,请参阅Github仓库:
swim add ~/dotfiles/myVimrc favorite #Add new swim alias
swim ls #Show available swim aliases
swim add https://raw.githubusercontent.com/dawsonbotsford/swim/master/exampleVimrcs/vimrcWikia.vim example
swim with favorite #Set alias favorite as primary .vimrc
swim with main #Set alias main as primary .vimrc
Run Code Online (Sandbox Code Playgroud)
https://github.com/dawsonbotsford/swim
| 归档时间: |
|
| 查看次数: |
23351 次 |
| 最近记录: |