Як я можу встановити ширину вікна gvim на 80 стовпців тексту, плюс ті, які потрібні для показу номера рядка


9

Я використовую gvim з

set number

в моєму, .vimrcтаким чином, він відображає ряд ліній, плюс пробіл, перед кожним рядком.

Якщо документ має менше 10 рядків, це займає 2 стовпчики, якщо в ньому більше 10, 3 стовпчики тощо.

Якщо я покладу

set lines=40 columns=80

в .gvimrcньому буде показано 78 стовпців коду та 2 для ряду номерів плюс темп, або 77 + 3 тощо.

Я хотів би, щоб ширина вікна була встановлена ​​на 80 стовпців + будь-яка кількість стовпців необхідна для відображення пробілу.

Це не повинно бути динамічним, але я хотів би мати можливість прочитати кількість рядків даного файлу і встановити columnsвідповідно. (Звичайно, динамічне рішення було б дійсно акуратним, але не суттєвим)

Відповіді:


9

Спробуйте це у своєму ~ / .vimrc:

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

Кожен раз, коли ви завантажуєте буфер (тобто відкриваєте файл), це визначатиме кількість стовпців, необхідних для відображення найбільшого номера рядка, відповідно встановлюйте параметр 'numberwidth' та встановлюйте «стовпці» на це число плюс 80 для тексту .


Дякую! Він чудово працює при відкритті файлу. Будь-яка ідея, як це зробити, коли переключення вкладок теж? Заздалегідь спасибі.
Елтон Карвальо

1
Події автокоманди Vim перераховані на :help autocommand-events. Серед них є TabEnter, тож ви можете спробувати замінити BufReadйого BufRead,TabEnterу наведеному вище прикладі і побачити, чи це дає вам поведінку, яку ви хочете. Я сам не перевіряв приклад з цією подією.
garyjohn

Дякую @garyjohn, TabEnter працював як очікувалося. Можливо, пізніше я зіграю з тими автокомандами-подіями. Вони корисні!
Елтон Карвальо

1
@david_nash: 'numberwidth'зростає лише логарифмічно з кількістю рядків у файлі, тому, якщо ви можете дозволити собі горизонтальний простір, щоб він взагалі 'number'включив, я б не думаю, що вам доведеться не турбуватися про його обмеження.
garyjohn

1
@JonathanHartley: Було б досить легко контролювати це за допомогою потрійного оператора ( :help expr1) або за допомогою if / endif (наприклад, :help options-in-terminal). Проблема змінюється & стовпці, коли 'number'вони змінені. Я думав про використання події автокоманди OptionSet, але :help OptionSetкаже, що погана ідея скидання параметра під час обробки цієї події.
garyjohn

2

я використовую

set lines=24 columns=84

в моєму $ HOME / .gvimrc, який дає мені те, що ти хочеш. У мене рідко (якщо взагалі) є файли, що мають довші 999 рядків, тому це працює для мене.


Це те, що я робив, але зберігати точно 80 стовпців тексту - це приємно, тому що я можу запобігти закінченню 81 символом в одному рядку, що не є великим завданням, але приємно уникати.
Елтон Карвальо

2

Я встановив числову ширину, скажімо, 5, а потім встановив стовпці на 85 (80 + 5). Це має бути добре для файлів від 0 рядків до мільйона рядків.

Ось що вам, можливо, доведеться помістити у файл (за замовчуванням) ~ / .vimrc

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

Ви побачите, що номер рядка відформатований "% 5d" (5 - ширина номера вище) замість формату "% d" за замовчуванням, витрачаючи трохи нерухомості перед номерами рядків, але зберігаючи послідовність.


Ласкаво просимо до Супер Користувача. Будь ласка, майте на увазі, що ви розмістили відповідь на дуже давнє питання. Хоча в цьому немає нічого поганого, просто пам’ятайте, що ви не зможете отримати відповідь.
CharlieRB
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.