Статусная строка VIM без плагинов в 5 строк

Статусная строка 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 строк. Эта конфигурация покрывает мои нужды.


Опубликовано

Выключите пожалуйста блокировку рекламы для этого сайта чтобы поддержать проект

Автор:

Я фронтенд разработчик, веду блог о вёрстке сайтов, оптимизации веб-приложений. Улучшаю пользовательский опыт, собираю лучшие практики в области веб-разработки.


Чтобы не пропускать новости, можно подписаться на email рассылку.

Если остались вопросы или есть пожелания или замечания — пишите в комментарии: