2012-03-24 68 views
3

這不是一個縮進問題。惱人的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

回答

3

tappi在Freenode的#vim上澄清說我打開了autochdir。要快速解決此問題:

:set noautochdir 

而笨人向我指出一個不錯vim's wiki link,一個漂亮的片段,作品真的很好在.vimrc,保存autochdir行爲,並保持定期分頁標題透過窗戶切換時。

現在我的標籤很漂亮!

1

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

1

是的,當你打開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)'