2012-07-06 43 views
6

Vim là trình soạn thảo rất hiệu quả và tôi thích sử dụng nó hàng ngày, nhưng tôi thấy rằng việc di chuyển giữa các tab mất nhiều thời gian hơn mức cần thiết.Cách liệt kê các tab trong vim?

Khi tôi muốn chuyển sang tab khác, tôi thường lặp lại gt hoặc gT nhiều lần. Vim cung cấp cách tốt hơn để tiếp cận tab được yêu cầu - n + gt, trong đó n là số tab. Nhưng để sử dụng nó, bạn nên đếm số tab đầu tiên. Nó nhanh chóng trở nên nhàm chán nếu bạn mở một chục tab.

Tôi nghĩ sẽ rất thú vị nếu liệt kê các tab. Một số duy nhất trên mỗi tab ở phía trước tên tệp, như sau:

1 Readme | 2 main.c | 3 main.h | 4 process.h 

Tôi hy vọng có thể định cấu hình vim để thực hiện việc này bằng cách chỉnh sửa cấu hình hoặc sử dụng một số plugin.

Có cách nào để đạt được điều đó không?

+1

Bạn có thể mở tab trong ViM ?! Mỗi ngày bạn học một cái gì đó mới với ViM – Shahbaz

Trả lời

5

Bạn có thể sử dụng tùy chọn tabline để đặt nhãn của các tab trong chế độ bảng điều khiển của vim. Xem trợ giúp tại :h setting-tabline cũng hiển thị ví dụ tối thiểu rất cơ bản mà bạn có thể chỉnh sửa theo nhu cầu của mình, ví dụ: cho những gì bạn muốn, tôi sẽ sử dụng một cái gì đó như thế này:

fu! MyTabLabel(n) 
let buflist = tabpagebuflist(a:n) 
let winnr = tabpagewinnr(a:n) 
let string = fnamemodify(bufname(buflist[winnr - 1]), ':t') 
return empty(string) ? '[unnamed]' : string 
endfu 

fu! MyTabLine() 
let s = '' 
for i in range(tabpagenr('$')) 
" select the highlighting 
    if i + 1 == tabpagenr() 
    let s .= '%#TabLineSel#' 
    else 
    let s .= '%#TabLine#' 
    endif 

    " set the tab page number (for mouse clicks) 
    "let s .= '%' . (i + 1) . 'T' 
    " display tabnumber (for use with <count>gt, etc) 
    let s .= ' '. (i+1) . ' ' 

    " the label is made by MyTabLabel() 
    let s .= ' %{MyTabLabel(' . (i + 1) . ')} ' 

    if i+1 < tabpagenr('$') 
     let s .= ' |' 
    endif 
endfor 
return s 
endfu 
set tabline=%!MyTabLine() 
+0

Cảm ơn bạn, đó là chính xác những gì tôi đang tìm kiếm! Nhưng 'set tabline =%! MyTabLine()' nên được thêm ở dưới cùng của ví dụ của bạn, hoặc toàn bộ điều sẽ không hoạt động. – lambdas

+0

Ồ vâng, điều đó sẽ được thêm vào. Tôi sẽ đưa nó vào câu trả lời –

2

Nếu bạn đang sử dụng gvim:

set guitablabel=(%N)\ %t\ %M 

Loại :help tabline:help guitablabel để đọc thêm.

Có một tài khoản function MyTabLine() trong tài liệu.

+0

Cảm ơn bạn, nhưng tôi đang sử dụng vim với trình giả lập thiết bị đầu cuối. – lambdas

+0

Hãy thử 'set tabline' – kev

Các vấn đề liên quan