Как я могу установить ширину окна 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

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

garyjohn
источник
Спасибо! Отлично работает при открытии файла. Есть идеи, как это сделать при переключении вкладок? Заранее спасибо.
Элтон Карвалью
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говорит, что плохая идея - сбросить параметр при обработке этого события.
Гэриджон
2

я использую

set lines=24 columns=84

в моем $ HOME / .gvimrc, который дает мне то, что вы хотите. У меня редко (если вообще когда-либо) есть файлы, которые длиннее 999 строк, так что это работает для меня.

Сардатрион - против злоупотребления SE
источник
Это то, что я делал, но хранить ровно 80 столбцов текста - это хорошо, потому что я могу не допустить, чтобы в одной строке было 81 символ, что не составляет особого труда, но его следует избегать.
Элтон Карвалью
2

Я устанавливаю номер полосы, скажем, 5, а затем устанавливаю столбцы 85 (80 + 5). Это должно быть хорошо для файлов от 0 строк до миллиона строк.

Вот что вам может понадобиться (по умолчанию) ~ / .vimrc file

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

Вы увидите, что номер строки отформатирован как «% 5d» (5 - это номерная ширина выше) вместо формата по умолчанию «% d», тратя немного ресурсов перед номерами строк, но сохраняя согласованность.

isound
источник
Добро пожаловать в Супер пользователя. Обратите внимание, что вы опубликовали ответ на очень старый вопрос. Хотя в этом нет ничего плохого, просто имейте в виду, что вы можете не получить ответ.
CharlieRB