本系列教程针对对Vim编辑器感兴趣,并使用过一些时间,想自己开发Vim插件的小伙伴。有任何问题(无论您是新手还是老手)都可以留言私信我,一定尽力帮忙,如果您觉得有用请帮忙点个赞。我会不定时发一些技术文章,您可以关注我,查看我的更新状态。
Vim 的设计哲学是:如果用户曾经为某件事物写过一次,那就不需要再写第二次。
修改标签页
- vim
:set tabline tabline-layout
- gvim
:set guitablabel
用户要时刻注意标签页是否处于 活跃状态 。
例子:只显示缓冲区文件名的前6个字母,而且当前活跃的标签名以红底白字的方式呈现。
function! ShortTabLine() let ret = '' for i in range(tabpagenr('$')) " select the color group for highlighting active tab if i + 1 == tabpagenr() let ret .= '%#errorMsg#' else let ret .= '%#TabLine#' endif " find the buffername for the tablabel let buflist = tabpagebuflist(i+1) let winnr = tabpagewinnr(i+1) let buffername = bufname(buflist[winnr - 1]) let filename = fnamemodify(buffername, ':t') " check if there is no name if filename == '' let filename = 'noname' endif " only show the first 6 letters of the name and .. if the filename is more than 8 letters long if strlen(filename) >= 8 let ret .= '['. filename[0:5] . '..]' else let ret .= '[' . filename . ']' endif endfor " after the last tab fill with TabLineFill and reset tab page # let ret .= '%#TabLineFill#%T' return retendfunction
在 vimrc 中添加函数,并设置一个命令:
:set tabline=%!ShortTabLine()
命令执行结果如下:
在Gvim中实现以上的效果:
function! ShortTabLine() let bufnrlist = tabpagebuflist(v:lnum) " show only the first 6 letters of the name + .. let label = bufname(bufnrlist[tabpagewinnr(v:lnum) - 1]) let filename = fnamemodify(label, ':h') " only add .. if string is more than 8 letters if strlen(filename) >= 8 let ret = filename[0:5].'..' else let ret = filename endif return retendfunction
设置 guitablabel属性:
:set guitablabel=%{shortTabLine()}
效果:
给标签栏添加提示信息:
function! InfoGuiTooltip() " get window count let wincount = tabpagewinnr(tabpagenr(), '$') let bufferlist = '' " get name of active buffers in windows for i in tabpagebuflist() let bufferlist .= '[' . fnamemodify(bufname(i), ':t') . ']' endfor return bufname($) . ' windows: ' . wincount . ' ' . bufferlist ' 'endfunction
设置命令:
:set guitabtooltip=%!InfoGuiTooltip()
显示效果:
每次学一点,脚踏实地每一步。