Михаил Юдин

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

Ещё почитать

Оптимизация и ускорение редактора VIM

Оптимизация и ускорение редактора VIM

Нет фото

Работаем удалённо по SSH на карантине

Нет фото

Быстрый способ создать и залить SSH ключ на сервер

Нет фото

Acer Aspire v5 122p alsa, mpd