diff options
Diffstat (limited to 'vim/init/basic.vim')
-rw-r--r-- | vim/init/basic.vim | 59 |
1 files changed, 15 insertions, 44 deletions
diff --git a/vim/init/basic.vim b/vim/init/basic.vim index e18d51f..751b3ac 100644 --- a/vim/init/basic.vim +++ b/vim/init/basic.vim | |||
@@ -17,57 +17,28 @@ augroup END | |||
17 | " For Buffer and Tab {{{ | 17 | " For Buffer and Tab {{{ |
18 | augroup tabinfo | 18 | augroup tabinfo |
19 | au! | 19 | au! |
20 | let g:tab_group = {} | ||
21 | " BufEnter {{{ | ||
22 | function! AddBufToTabGroup(tab_group) | ||
23 | let l:tabId = tabpagenr() | ||
24 | let l:bufnr = bufnr() | ||
25 | |||
26 | if has_key(a:tab_group, l:tabId) | ||
27 | for v in a:tab_group[l:tabId] | ||
28 | if v == l:bufnr | ||
29 | return | ||
30 | endif | ||
31 | endfor | ||
32 | call add(a:tab_group[l:tabId], l:bufnr) | ||
33 | else | ||
34 | let a:tab_group[l:tabId] = [l:bufnr] | ||
35 | endif | ||
36 | 20 | ||
37 | endfunc | 21 | " t:bufs holds buffer numbers |
38 | autocmd BufWinEnter * if &buflisted | call AddBufToTabGroup(g:tab_group) | endif | 22 | autocmd BufWinEnter * if &buflisted | call AddBufToTab() | endif |
39 | " }}} | 23 | autocmd BufDelete * call RemoveBufFromTabs() |
40 | " BufDelete {{{ | ||
41 | function! RemoveBufFromTabGroup(tab_group) | ||
42 | let l:tabId = tabpagenr() | ||
43 | |||
44 | if has_key(a:tab_group, l:tabId) | ||
45 | let l:new_tab_group = {} | ||
46 | |||
47 | for [k, tab_list] in items(a:tab_group) | ||
48 | let l:list = [] | ||
49 | for buf in tab_list | ||
50 | if buflisted(buf) > 0 && buf != expand('<abuf>') | ||
51 | call add(l:list, buf) | ||
52 | end | ||
53 | endfor | ||
54 | if !empty(l:list) | ||
55 | let l:new_tab_group[k] = l:list | ||
56 | endif | ||
57 | endfor | ||
58 | let g:tab_group = l:new_tab_group | ||
59 | |||
60 | endif | ||
61 | 24 | ||
25 | function! AddBufToTab() | ||
26 | if !has_key(t:, 'bufs') | let t:['bufs'] = [] | endif | ||
27 | call add(t:bufs, bufnr()) | call sort(t:bufs) | call uniq(t:bufs) | ||
28 | endfunc | ||
29 | function! RemoveBufFromTabs() | ||
30 | for tab in gettabinfo() | ||
31 | call filter(tab.variables.bufs, "v:val != "..expand('<abuf>')) | ||
32 | endfor | ||
62 | endfunc | 33 | endfunc |
63 | autocmd BufDelete * call RemoveBufFromTabGroup(g:tab_group) | 34 | |
64 | "}}} | 35 | nnoremap T :echo t:bufs<CR> |
65 | augroup END | 36 | augroup END |
66 | "}}} | 37 | "}}} |
67 | " GERERNAL {{{ | 38 | " GERERNAL {{{ |
68 | 39 | ||
69 | let mapleader = "," " Always use comma as leader key | 40 | let mapleader = "," " Always use comma as leader key |
70 | set nocompatible " Disable vi compatible, today is 20XX | 41 | set nocompatible " Disable vi compatible, today is 2RemoveBufFromTabXX |
71 | set path=.,** " Allow :find with completion | 42 | set path=.,** " Allow :find with completion |
72 | set mouse= " Disable mouse selection | 43 | set mouse= " Disable mouse selection |
73 | set winaltkeys=no " Allow alt key for mapping | 44 | set winaltkeys=no " Allow alt key for mapping |
@@ -194,7 +165,7 @@ augroup END | |||
194 | set foldenable " Allow fold | 165 | set foldenable " Allow fold |
195 | set foldmethod=indent " Fold contents by indent | 166 | set foldmethod=indent " Fold contents by indent |
196 | set foldlevel=2 | 167 | set foldlevel=2 |
197 | set fillchars+=foldopen:▽,foldsep:│,foldclose:▶ | 168 | set fillchars=fold:\ ,foldopen:▽,foldsep:│,foldclose:▶ |
198 | let g:defaut_foldcolumn = "" | 169 | let g:defaut_foldcolumn = "" |
199 | if has('nvim') | 170 | if has('nvim') |
200 | let g:defaut_foldcolumn = "auto:3" | 171 | let g:defaut_foldcolumn = "auto:3" |