-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathvimrc
98 lines (83 loc) · 2.78 KB
/
vimrc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
" File: main
" Author: lymslive
" Description: $MYVIMRC: ln -s this file to ~/.vimrc
" Create: 2019-10-20
" Modify: 2019-10-20
" Vital Variable: {{{1
let $VIMHOME = $HOME . '/.vim'
if has('win32') || has ('win64')
let $VIMHOME = $HOME . '/vimfiles'
endif
let $STARTHOME = $VIMHOME . '/start'
let $PACKHOME = $VIMHOME . '/pack'
let $UNPACKHOME = $VIMHOME . '/unpack'
let g:START_NAME = v:progname
let g:RUN_NAME = []
let g:PLUGIN_LIST = $STARTHOME . '/install/plugins.md'
" Custom Config: {{{1
let s:dStartAlias = {}
let s:dStartAlias.view = 'vi'
let s:dStartAlias.evim = 'minied'
" Vimrc Tools: {{{1
" Command: source script relative current script file
command! -nargs=1 SOURCE execute 'source ' . expand('<sfile>:p:h') . '/' . <q-args>
" LoadVimrc: return true if load vimrc success
function! s:LoadVimrc(pVimrc) abort "{{{
if !empty(a:pVimrc) && filereadable(a:pVimrc)
execute 'source ' . a:pVimrc
call add(g:RUN_NAME, fnamemodify(a:pVimrc, ':p:t:r'))
return 1
else
return 0
endif
endfunction "}}}
" ExactVimrc: self-name.vim > name.vim > vim-name.vim
function! s:ExactVimrc(name) abort "{{{
let l:self = $STARTHOME . '/self-' . a:name . '.vim'
let l:name = $STARTHOME . '/' . a:name . '.vim'
let l:vim = $STARTHOME . '/vim-' . a:name . '.vim'
return s:LoadVimrc(l:self) || s:LoadVimrc(l:name) || s:LoadVimrc(l:vim)
endfunction "}}}
" FuzzyVimrc: self-name*.vim > name*.vim > vim-name*.vim
function! s:FuzzyVimrc(name) abort "{{{
let l:lpVimrc = glob($STARTHOME . '/self-' . a:name . '*.vim', '', 1)
if !empty(l:lpVimrc) && s:LoadVimrc(l:lpVimrc[0])
return 1
endif
let l:lpVimrc = glob($STARTHOME . '/' . a:name . '*.vim', '', 1)
if !empty(l:lpVimrc) && s:LoadVimrc(l:lpVimrc[0])
return 1
endif
let l:lpVimrc = glob($STARTHOME . '/vim-' . a:name . '*.vim', '', 1)
if !empty(l:lpVimrc) && s:LoadVimrc(l:lpVimrc[0])
return 1
endif
return 0
endfunction "}}}
" DefaultVimrc: self.vim > default.vim
function! s:DefaultVimrc() abort "{{{
let l:self = $STARTHOME . '/self.vim'
let l:default = $STARTHOME . '/vim.vim'
return s:LoadVimrc(l:self) || s:LoadVimrc(l:default)
endfunction "}}}
" StartVimrc:
function! s:StartVimrc(name) abort "{{{
if s:ExactVimrc(a:name)
return 1
endif
if a:name ==? 'vim' && s:DefaultVimrc()
return 1
endif
return s:FuzzyVimrc(a:name) || s:DefaultVimrc()
endfunction "}}}
" Search Vimrc: {{{1
if g:START_NAME =~? '^vim-.\+'
let g:START_NAME = substitute(g:START_NAME, '^vim-\c', '', '')
endif
if g:START_NAME =~? '.\+\.exe$'
let g:START_NAME = substitute(g:START_NAME, '\.exe$', '', '')
endif
if has_key(s:dStartAlias, g:START_NAME)
let g:START_NAME = s:dStartAlias[g:START_NAME]
endif
call s:StartVimrc(g:START_NAME)