Vim: thay đổi nhãn cho tab cụ thể


19

Giả sử tôi có một loạt các tab đang mở trong Vim, với một tabline trông giống như thế này:

1 v/file1.py 2 t/file.py 1 t/file.py 1 o/otherfile.py

Xem hai tab nói "t / file.py" như thế nào? Đó là những tệp khác nhau, chúng chỉ được chuyển thành cùng một nhãn tab.

Trong quy trình làm việc của tôi, các tiêu đề tab thường mơ hồ (yay cho Chef đặt tên mọi thứ là "default.rb") hoặc không có ích ("Tôi biết một trong 8 tab này với 4 bộ đệm mà mỗi tệp có tệp mà tôi đang tìm ...").

Tôi muốn đổi tên các tab để cho biết những gì chúng thể hiện một cách hợp lý:

1 homepage_view 2 tests 1 homepage_template 1 o/otherfile.py

Tôi ổn với các tab mặc định thành nhãn dựa trên tên tệp, miễn là tôi có thể thay đổi nó một khi tab được tạo.

Làm thế nào tôi có thể làm điều này trong Vim?


1
Tôi không có thời gian để thử nghiệm ngay bây giờ, nhưng hãy xem :help setting-tabline(cho vim trong một thiết bị đầu cuối) hoặc :help setting-guitablabel(cho gvim). Bạn có thể viết một hàm kiểm tra biến cục bộ tab và trả về giá trị đó hoặc một số mặc định. Sau đó, sau khi mở một tab , :let t:mytablabel = 'homepage_template'.
benjifisher

Câu trả lời:


15

Có một plugin nhỏ tên là Taboo giúp việc này trở nên dễ dàng. Chỉ cần cài đặt nó và sau đó bạn có thể thay đổi tiêu đề tab bằng:

:TabooRename My Tab Title

Bạn có thể xem mã nguồn của plugin đó nếu bạn muốn viết giải pháp của riêng mình.


Taboothật tuyệt vời TabooResetvà theo TabooRenamenghĩa đen là bật hai "chế độ" của Tab-line ==> một tab được đặt tên theo Taboo và một tab được đặt tên tự động của Vim. Điều này sao chép " Windows có tên " từ Tmux một cách hoàn hảo. Vẫn tốt hơn, các tab có tên trong Taboo có thể được khôi phục bằng Startify (hoặc dưới bất kỳ công cụ tiết kiệm phiên nào khác).
llinfeng

8

Đối với gvim, xem

:help 'guitablabel'
:help setting-guitablabel

Đặt tùy chọn thành một biểu thức ước tính thành t:mytablabel(một biến cục bộ tab) nếu nó tồn tại hoặc khác với một chuỗi trống (có nghĩa là sử dụng mặc định):

:set guitablabel=%{exists('t:mytablabel')?t:mytablabel\ :''}

Có lẽ điều đó đã quá phức tạp, hoặc có thể bạn muốn nhận được fancier. Trong trường hợp đó, xác định hàm:

function! GuiTabLabel()
  return exists('t:mytablabel') ? t:mytablabel : ''
endfunction
:set guitablabel=%{GuiTabLabel()}
:set go+=e

Sau đó, trong bất kỳ tab nào bạn muốn ghi đè mặc định, hãy làm một cái gì đó như

:let t:mytablabel = 'homepage_template'

Nếu bạn đang sử dụng vim trong một thiết bị đầu cuối, không phải gvim, thì bạn phải đặt 'tabline'tùy chọn thay vì 'guitablable'. Điều này phức tạp hơn một chút, vì bạn cần một biểu thức duy nhất bao gồm các nhãn cho tất cả các tab đang mở. Có một ví dụ đầy đủ dưới

:help setting-tabline
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.