恼人的vim标签行标签

问题描述:

这不是一个缩进问题。恼人的vim标签行标签

Vim的窗口导航行为真的让我很烦恼。假设有打开的窗口当前的这种配置,文件wp-config-sample.php是当前的一个:

enter image description here

所有其他文件在不同的目录,如果我着重于任何人做一个<ESC>gt,所有的他们得到他们的内容改变,标签得到调整大小,以及:

enter image description here

这是一个简单的例子,但是当有很多的标签打开,我不能找出哪里出了问题真的出现我因为t他关注的标签显着地改变了原来的位置。

我期望的良好行为是Firefox上的同一个系统,其中聚焦和未聚焦的选项卡永远不会改变它们的位置,而聚焦的选项只会略微强调。

有什么办法让它停止?

+0

调整标题去掉_'That不是question'_键入歧义的压痕 – sehe 2012-03-25 20:36:03

tappi在Freenode的#vim上澄清说我打开了autochdir。要快速解决此问题:

:set noautochdir 

而笨人向我指出一个不错vim's wiki link,一个漂亮的片段,作品真的很好在.vimrc,保存autochdir行为,并保持定期分页标题透过窗户切换时。

现在我的标签很漂亮!

是的,你可以在Vim中只显示自己的文件名。见:h tabline:h filename-modifiers

是的,当你打开autochdir时,默认的选项卡标签会让选项卡真的很烦人。基本上,如果您的:pwd不是文件位置,它们会向您显示完整路径(略),如果您的:pwd与文件相同,则只是文件名。当您启动autochdir时,每次加载缓冲区时(包括切换制表符时),您的:pwd都会更改。我碰巧喜欢autochdir,因为:ls和任何文件操作都是自动相对于活动缓冲区的cwd。我总是知道那个位置,因为我的状态栏中有完整的路径。

我有gui选项卡设置为向我展示一些不同的东西......选项卡号,修改的指示符,如果选项卡中有多个窗口(显示计数),并且始终只显示缓冲区的文件名(如果有多个窗口,则使用活动窗口中的窗口)。

" GUI Tab label full path 
function! GuiTabLabeler() 
    let tabno = tabpagenr() 
    let label = '' 
    let bufnrlist = tabpagebuflist(v:lnum) 

    " Add '+' if one of the buffers in the tab page is modified 
    for bufnr in bufnrlist 
    if getbufvar(bufnr, "&modified") 
     let label = '[+]' 
     break 
    endif 
    endfor 

    " Append the number of windows in the tab page if more than one 
    let wincount = tabpagewinnr(v:lnum, '$') 
    if wincount > 1 
    let label .= ' [' . wincount . ']' 
    endif 

    " Append the buffer name 
    return tabno . " " . 
     \ fnamemodify(bufname(bufnrlist[tabpagewinnr(v:lnum) - 1]), ":t") 
     \ . label 
endfunction 

set guitablabel=%!GuiTabLabeler() 

在选项卡标签数字是不错的,特别是如果你这样做图的ALT-数字键对他们说:

" Tab navigation in with alt-# 
noremap <A-1> :tabnext 1<CR> 
noremap <A-2> :tabnext 2<CR> 
noremap <A-3> :tabnext 3<CR> 
noremap <A-4> :tabnext 4<CR> 
noremap <A-5> :tabnext 5<CR> 
noremap <A-6> :tabnext 6<CR> 
noremap <A-7> :tabnext 7<CR> 
noremap <A-8> :tabnext 8<CR> 
noremap <A-9> :tabnext 9<CR> 
noremap <A-0> :tabnext 0<CR> 

这样一来,我的GUI标签留相当窄,干净。我喜欢与我的状态行的完整路径的文件名(除其他事项外):

" Statusline 
set laststatus=2 
let &statusline='%F %r%m [%{&fileformat}]%y[%{strlen(&fenc)?&fenc:&enc}]' 
      \ . '%= --%3p%% -- l:%3l, c:%3c (%03b 0x%02B)'