Làm cách nào tôi có thể đặt chiều rộng cửa sổ của gvim thành 80 cột văn bản, cộng với những cột cần thiết để hiển thị số dòng


9

Tôi sử dụng gvim với

set number

trong tôi .vimrcđể nó hiển thị vải lanh, cộng với một khoảng trắng, trước mỗi dòng.

Nếu tài liệu có ít hơn 10 dòng, điều này sẽ có 2 cột, Nếu nó có nhiều hơn 10, 3 cột, v.v.

Nếu tôi đặt

set lines=40 columns=80

trong .gvimrc, nó sẽ hiển thị 78 cột mã và 2 cho tốc độ cộng với tốc độ, hoặc 77 + 3, v.v.

Tôi muốn chiều rộng cửa sổ được đặt thành 80 cột + số lượng cột cần thiết để hiển thị số vải lanh.

Nó không cần phải động, nhưng tôi muốn có thể đọc số dòng của một tệp đã cho và đặt columnstheo. (Tất nhiên, một giải pháp năng động sẽ thực sự gọn gàng, nhưng không cần thiết)

Câu trả lời:


9

Hãy thử điều này trong ~ / .vimrc:

au BufRead * let &numberwidth = float2nr(log10(line("$"))) + 2
          \| let &columns = &numberwidth + 80

Mỗi lần bạn tải bộ đệm (nghĩa là mở tệp), nó sẽ xác định số lượng cột cần thiết để hiển thị số dòng lớn nhất, đặt tùy chọn 'số lượng băng thông' phù hợp và đặt 'cột' thành số đó cộng với 80 cho văn bản của bạn .


Cảm ơn! Nó hoạt động tuyệt vời khi mở một tập tin. Bất kỳ ý tưởng làm thế nào để thực hiện điều này khi chuyển đổi các tab quá? Cảm ơn trước.
Elton Carvalho

1
Sự kiện autocommand của Vim được liệt kê tại :help autocommand-events. Trong số đó là TabEnter, vì vậy bạn có thể thử thay thế BufReadbằng BufRead,TabEntertrong ví dụ trên và xem liệu điều đó có mang lại cho bạn hành vi bạn muốn không. Tôi đã không kiểm tra ví dụ với sự kiện đó bản thân mình.
garyjohn

Cảm ơn bạn @ÿjohn, Tab Entry đã hoạt động như mong đợi. Có lẽ sau này tôi sẽ chơi với những sự kiện tự động đó. Chúng thực sự hữu ích!
Elton Carvalho

1
@david_nash: 'numberwidth'chỉ phát triển theo logarit với số lượng dòng trong tệp, vì vậy nếu bạn có đủ khả năng cho không gian ngang để 'number'kích hoạt, tôi sẽ không nghĩ bạn phải lo lắng về việc giới hạn nó.
garyjohn

1
@JonathanHartley: Sẽ đủ dễ dàng để kiểm soát điều này với một toán tử ternary ( :help expr1) hoặc với if / endif (ví dụ :help options-in-terminal:). Vấn đề là thay đổi & cột khi 'number'được thay đổi. Tôi đã nghĩ đến việc sử dụng sự kiện tự động :help OptionSettùy chọn Tùy chọn , nhưng nói rằng đó là một ý tưởng tồi để đặt lại một tùy chọn trong khi xử lý sự kiện này.
garyjohn

2

tôi sử dụng

set lines=24 columns=84

trong $ HOME / .gvimrc của tôi, cung cấp cho tôi những gì bạn muốn. Tôi hiếm khi (nếu có) có các tệp dài hơn 999 dòng để nó hoạt động với tôi.


Đó là những gì tôi đã làm, nhưng giữ chính xác 80 cột văn bản là tốt bởi vì tôi có thể ngăn chặn kết thúc với 81 ký tự trong một dòng, điều này không phải là vấn đề lớn, nhưng cũng tốt để tránh.
Elton Carvalho

2

Tôi đặt băng thông số thành 5, sau đó đặt các cột thành 85 (80 + 5) Điều đó sẽ tốt cho các tệp từ 0 dòng đến một triệu dòng.

Đây là những gì bạn có thể phải đặt vào (mặc định) tệp ~ / .vimrc

set numberwidth=5  "Good for files upto a million lines
set columns=85
set nu

Bạn sẽ thấy số dòng được định dạng với '% 5d' (5 là số băng thông ở trên) thay vì định dạng '% d' mặc định, lãng phí một chút bất động sản trước số dòng, nhưng vẫn duy trì tính nhất quán.


Chào mừng đến với Siêu người dùng. Xin lưu ý rằng bạn đã đăng câu trả lời cho một câu hỏi rất cũ. Mặc dù không có gì sai khi làm như vậy, chỉ cần lưu ý rằng bạn có thể không nhận được phản hồi.
CharlieRB
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.