" 标签样式 " TabLineFill tab pages line, where there are no labels hi TabLineFill term=none hi TabLineFill ctermfg=DarkGrey hi TabLineFill guifg=#777777 " TabLineSel tab pages line, active tab page label hi TabLineSel term=inverse hi TabLineSel cterm=none ctermfg=yellow ctermbg=Black hi TabLineSel gui=none guifg=yellow guibg=Black set laststatus=2 " 显示状态栏(默认值为 1,无法显示状态栏) set statusline=%f%m%r%h%w\ >\ %{ShowGit()}%=\ <\ %{&ff},\ %{&fenc}\ <\ %y\ <\ %l,%v\ <\ %p%%\ <\ lines=%L set guitablabel=%{ShortTabLabel()} set tabline=%!MyTabLine() function ShortTabLabel () let bufnrlist = tabpagebuflist (v:lnum) let label = bufname (bufnrlist[tabpagewinnr (v:lnum) -1]) let filename = fnamemodify (label, ':t') return filename endfunction function MyTabLine() let s = '' for i in range(tabpagenr('$')) " 选择高亮 if i + 1 == tabpagenr() let s .= '%#TabLineSel#' else let s .= '%#TabLine#' endif " 设置标签页号 (用于鼠标点击) let s .= '%' . (i + 1) . 'T' " MyTabLabel() 提供完整路径标签 MyShortTabLabel 提供文件名标签 let s .= ' %{MyShortTabLabel(' . (i + 1) . ')} ' endfor " 最后一个标签页之后用 TabLineFill 填充并复位标签页号 let s .= '%#TabLineFill#%T' " 右对齐用于关闭当前标签页的标签 if tabpagenr('$') > 1 let s .= '%=%#TabLine#%999Xclose' endif return s endfunction " 文件名标签 function MyShortTabLabel(n) let buflist = tabpagebuflist(a:n) let label = bufname (buflist[tabpagewinnr (a:n) -1]) let filename = fnamemodify (label, ':t') return filename endfunction " 完整路径标签 function MyTabLabel(n) let buflist = tabpagebuflist(a:n) let winnr = tabpagewinnr(a:n) return bufname(buflist[winnr - 1]) endfunction " 状态栏显示git分支 function! ShowGit() let l:path = expand('%:p:h') let l:git = "git -C " . l:path let l:is_git_repo = system(l:git . " rev-parse --is-inside-work-tree 2>/dev/null") if match(l:is_git_repo, "true") == -1 return '' endif " 查看当前所在分支 let s:branch = system(l:git . " branch --no-color 2>/dev/null | sed -e '/^[^*]/d' -e 's/* \\(.*\\)/\\1/' | tr -d '\n' | tr -d ' '") " 字符串匹配,匹配不到"HEAD detached at"或者”头指针在xxx分离“则返回branch if match(s:branch, 'HEADdetachedat') == -1 && match(s:branch, '分离') == -1 return strlen(s:branch) ? 'b: '.s:branch.'> ' : '' endif " 查看当前是否在tag上,如果是则返回tag名 let s:tag = system(l:git . " describe --tags --exact-match 2>/dev/null | tr -d '\n'") if strlen(s:tag) return 't: '.s:tag.'> ' endif " 既不是分支也不是tag,返回当前的commit id let s:commit = system(l:git . " rev-parse --short HEAD 2>/dev/null | tr -d '\n'") return strlen(s:commit) ? 'c: '.s:commit.'> ' : '' endfunction function! CurDir() let curdir = substitute(getcwd(), '/Users/amir/', "~/", "g") return curdir endfunction