Статусная строка VIM без плагинов в 5 строк
В VIM статусная строка есть по умолчанию. Можно малейшими усилиями доработать её под свои нужды.
Как создать свою статусную строку для VIM
Создать статусную строку очень просто и оказывается плагинов совсем не требуется для того, чтобы получить нечто подобное плагинам airline, lightline и другим.
Всё что требуется — разобраться, что и как мы добавим в статусную строку.
Для модификации статусной строки используется переменная statusline.
Подробнее о ней можно ознакомиться во встроенной в VIM справке: :help statusline
.
Как только ознакомились с переменными для отображения разной информации в статусной строке, приступим к созданию своей.
Начнём с номера текущего буфера и имени файла, который редактируем:
set statusline=%r%t%{(&mod?'*':'')}
Разберём полученную строку:
%r
: отображение [RO] если файл доступен только для чтения%t
: хвост пути к файлу (имя файла с расширением)%{(&mod?'*':'')}
:&mod
переменная со значением был ли модифицирован файл, проверяем если был, отображаем звёздочку, иначе ничего.
Таким образом мы уже имеем основную информацию о редактируемом файле.
Дальше как обычно, отобразим справа в статусной строке информацию о кодировке файла, текущей строке, общее количество строк и тип файла. Это достигается следующим:
set statusline+=%=%{&fenc}\ %l/%L\ %y
Подробнее о содержимом:
%=
: позволяет выровнять следующий контент по правому краю статусной строки%{&fenc}
: отобразит кодировку файла%l
: текущая строка, на которой находится курсор%L
: всего строк в файле%y
: тип файла
Делаем статусную строку красивее и удобнее
При описании содержимого статусной строки VIM можно использовать возвращаемые значения функций, а так же скрывать блок контента, если в нём нет данных.
Это будет полезно если отображается текущая ветка GIT например. То есть если редактируемый файл находится вне репозитория, отображаться ничего не будет.
Для этого существуют группы, начало обозначается как %(
, конец как %)
.
В итоге конфигурация моей статусной строки выглядит следующим образом:
set stl=[%n]\
set stl+=%(%{WebDevIconsGetFileTypeSymbol()}\ %r%t%{(&mod?'*':'')}%)
set stl+=%(\ \|\ %{FugitiveHead()}%)
set stl+=%(\ \|\ %{coc#status()}%)
set stl+=%=%{&fenc}\ %l/%L\ %y
В примере stl
это принятое сокращение для переменной statusline.
Итого уложился в 5 строк. Эта конфигурация покрывает мои нужды.