| ч18. Сопоставление зависящие от оператора | Содержание | ч20. Порядок в коде |
Vim позволяет настраивать вывод в строке состояния внизу каждого окна. Выполните следующую команду:
:set statusline=%f
Вы должны увидеть путь к файлу (относительно текущего каталога) в строке состояния. Теперь выполните эту команду:
:set statusline=%f\ -\ FileType:\ %y
В строке состояния вы увидите что-то вроде foo.markdown - FileType: [markdown].
Если вы знакомы с printf интерполяцией строк в C или Python, формат этой опции может показаться знакомым. Если нет, то тут есть трюк, и он заключается в том, то что начинается с %, расширяются до другого значения текста в зависимости от того, что идет после него. В нашем примере [ %f ]заменяется именем файла и [ %y ] заменяется типом файла.
Обратите внимание, что пробелы в строке состояния должны быть экранированы обратной косой чертой. Это из за того что [ set ], позволяет вам устанавливать несколько параметров одновременно, как мы видели раньше.
Строка состояния (statusline) может очень быстро усложниться, поэтому для лучшей ее настройки что бы сделать ее более понятной. Выполните следующие команды:
:set statusline=%f " путь к файлу
:set statusline+=\ -\ " Разделитель
:set statusline+=FileType: " Метка
:set statusline+=%y " Тип файла.
В первой команде мы использовали [ = ]для удаления любого существующего значения. Тут мы [ += ] создаём по одному элементу за раз. Мы также добавили комментарии, объясняющие каждый фрагмент для других людей, читающих код (или для нас самих несколько месяцев спустя).
Выполните следующие команды:
:set statusline=%l " Номер текущей строки
:set statusline+=/ " Разделитель
:set statusline+=%L " Общее количество линий
Теперь строка состояния содержит только текущий номер строки и количество строк в файле и выглядеть это будет примерно так 12/223.
Ширина и заполнение
В некоторых кодах могут использоваться дополнительные символы [ % ] для изменения способа отображения информации. Выполните следующую команду:
:set statusline=[%4l]
Теперь номеру строки в строке состояния будет предшествовать достаточное количество пробелов, чтобы сделать его шириной не менее четырех символов (например: [ _ _ 12]). Это может быть полезно для предотвращения прыгающего текста в строке состояния.
По умолчанию пробелы добавляются в левой части значения. Выполните эту команду:
:set statusline=Текущая:\ %4l\ Всего:\ %4L
Теперь ваша строка состояния будет выглядеть так:
Текущая: _ _ 12 Всего: _ 223
Вы можете использовать [ - ] для размещения отступов справа, а не слева. Выполните эту команду:
:set statusline=Текущая:\ %-4l\ Всего:\ %-4L
Теперь ваша строка состояния будет выглядеть так:
Текущая: 12_ _ Всего: 223 _
Это выглядит более приятнее, так как цифры находятся рядом с их метками.
Для числовых кодов, вместо пробелов вы можете заполнять это место нулями. Выполните следующую команду:
:set statusline=%04l
Теперь ваша строка состояния будет отображаться [ 0012 ] на двенадцатой строке.
Так же, вы также можете установить максимальную ширину вывода. Выполните эту команду:
:set statusline=%F
[ %F ] отображает полный путь к текущему файлу. Теперь запустите эту команду, чтобы изменить максимальную ширину:
:set statusline=%.20F
При необходимости путь будет усечен, выглядя примерно так:
<hapters/17.markdown
Общий формат
Общий формат в строке состояния показан в :help statusline
%-0{минимальная ширина}.{максимальная ширина}{элемент}
Все поля кроме [ % ] и [ элемента ], являются необязательными. Напомню еще раз минус означает что число должно быть прижато к левому краю, пример [5 _ _ _ ] ноль это заполнение нулями вместо пробелов [0005]
Разделение
Мы не будем слишком подробно описывать строки состояния (для этого есть help), но есть код который будет полезен наверняка. Выполните следующие команды:
:set statusline=%f "Путь к файлу (от текущего каталога)
:set statusline+=%= "Переключиться на отображение с правой стороны
:set statusline+=%l " Текущая линия
:set statusline+=/ " Разделитель
:set statusline+=%L " Всего строк
Теперь строка состояния будет содержать путь к файлу с левой стороны, а строки [ текущая / всего ] с правой. Код [ %=] сообщит Vim, что все , что следует после, должно быть форматировано по правому краю.
Упражнения
Просмотрите список доступных кодов в :help statusline.
Добавьте несколько строк в свой ~/.vimrc файл, чтобы создать собственную строку состояния. Обязательно используйте форму [ set statusline+= ] , чтобы разделить определение на несколько строк, и добавьте комментарий к каждой строке. Привыкайте документировать свой код. Так вы сделаете ваш код более удобочитаемым.
Попробуйте использовать автокоманды и setlocal определяя разные строки состояния для разных типов файлов. Убедитесь, что автокоманды объединены в группы (почему это важно мы говорили ранее), чтобы предотвратить дублирование.
| ч18. Сопоставление зависящие от оператора | Содержание | ч20. Порядок в коде |