Мой zsh prompt и Vim statusline

Что: 2d06525ce8bc48be93376479ca8a0a639c6789eb

Когда: 2020-06-11 10:55:24+03:00

Темы: tip vim zsh

Мой zsh prompt и Vim statusline

Спросили меня тут как-то, увидев screenshot, что означают всякие циферки
у меня в zsh и vim.

zsh prompt у меня однострочный (всегда ужасался колоссальной потере
места на экране на многострочных), классический:

    work/blog|0|1-% f bar G foo W

Цветов нет, кроме жирной "1" и "%":


  найти где же начало вывода какой-нибудь программы.

  в командный, то он поменяется на "+"

  выполнившейся команды. Нередко бывает надо его узнать -- можно конечно
  набрать echo $?, но иногда я уже успею набрать какую-нибудь другую
  команду и эта информация уже будет потеряна, а тут на экране
  сохранится

  узнать сколько же она выполнялась, но забываешь добавлять time, к тому
  же у которого довольно громоздкий вывод. Очень полезная штука!

  домашней директории, "~/work" если в $HOME/work, "~pyg" если в
  именованной директории "pyg" (PyGOST директория проекта в данном
  случае). Показывать полный путь -- самоубийство, ибо он может быть
  громадным, не оставляя места для команды

Когда-то я там писал и название git ветки в prompt, но отказался --
во-первых, как правило, я знаю где я, во-вторых, оно тормозит. Только
зайдя в какой-нибудь проект, с непрогретым ARC-ом этой git-директории,
тормоз будет даже на SSD, что меня дико бесит. Нажав F2/F3 я сделаю git
status (--short). Набрав Gb я увижу ветки, если уж запамятовал.
Аналогично и в Vim я не отображаю этой информации, ибо тормозит!

Я пробовал разграничивать колонки prompt-а по цветам, например чтобы
убрать "|" разделитель, но там их и так всего две штуки и слишком
горизонтально сгруппированная информация тоже не шибко приятна.

Я не понимаю когда добавляют в строку приглашения всякие вещи типа
времени или уровня WiFi сигнала -- ведь это же всё стоит вывести в
вне терминала в какой-нибудь statusbar desktop environment-а (или
dwmstatus в моём случае). Как минимум, это не будет запрашивать кучу
информации у ОС при каждом отображении приглашения. Да и, действительно
каждый раз вам нужно знать время после каждого ls? Нерациональная трата
места.

По директориям я перемещаюсь не просто через cd, а с обязательной (это
первая главная причина почему я не могу использовать bash) autopushd
фичей, когда формируется стэк директорий и любой cd превращается в
pushd. Нажав F4 я сделаю popd, быстро вернувшись по стэку назад, что
крайне частая операция.

"f bar G foo W" это аналог: find . -name "*bar*" | grep --color foo | wc -l

В zsh у меня синтаксическая подсветка команд, кавычек, всяких аргументов
команд и спецсимволов типа "|", "<>", и т.д.. ОЧЕНЬ помогает и удобно --
а главное что не тормозит. Плюс включён autosuggestions плагин, который
бледным синим цветом выводит элемент истории найденный по уже набранным
символам -- это очень полезно тем, что я буквально вижу что будет если я
нажму Up+Enter. Ctrl-R у меня включает поиск по истории с regexp-ом, ибо
я не всегда точно помню с чего начинается команда, но помню её примерные
опорные слова.

          ------------------------ >8 ------------------------

В Vim мой текущий statusline вот такой (только одно "LN" поле у меня
заполняется внешними средствами, а всё остальное -- встроено в Vim):

    ~/work/blog/.git/COMMIT_EDITMSG [+] ^^^^^^^^ 1 [GITCOMMIT][utf-8 unix][31/37][43-31:0x03A][2324][LN][73%]

На самом деле тут (кроме "[+]") нет ни одного "[", "]" -- я так пометил
области выделенные разными яркими цветами. Во-первых, это хорошо заметно
и быстрее позволяет навигации глазами. Во-вторых, экономит ощутимо места
на экране, ведь тут много полей. Место становится важно когда открыто
несколько split-ов всяких.


  флаги типа [RO]

  окно, если их больше одного. Это сильно помогает быстро глазами
  отыскать где я

  прыжка в него. Вообще не часто я его запоминаю и смотрю в его сторону,
  но бывает, место мало занимает

  обязательные к показанию информации, ибо Vim при открытии
  самостоятельно делает конвертирования и ты не увидишь что это файл с
  DOS-овскими окончаниями строк или что Vim некорректно подумал что это
  не UTF-8 файл

  пределах строки на котором сейчас мой курсор. Второе число показывает
  номер символа в стро��е. Если числа совпадают, то показывается только
  одно. Разнится эти числа будут на многобайтных символах (кириллица).
  Полезны оба числа зачастую для разных случаев

  вспоминается что это чаще всего используется для понимания что у меня
  под курсором: какой-то Unicode или ASCII, которые могут выглядеть
  абсолютно одинаково

  разбирательствах с немного не текстовыми файлами. Было очень полезно
  "отлаживать" комментарии моего блога, которые в netstring формате, в
  которых постоянно из-за преобразований git-а что-то съезжало на 1-2
  байта

  фоне у меня запущен linter или какая-нибудь gogetdoc команда, то там
  красным ярким цветом показывается двухбуквенное уведомление что что-то
  работает в фоне

  начале. Всегда очень полезно быстро понимать сколько я уже просмотрел
  какого файла

Вообще особо ничего хитрого: почти всё что умеет Vim тут просто
выводится. И действительно многое очень полезно на практике.

Кроме того, у меня подчёркивается вся строка на которой я сейчас
нахожусь, вертикальной красной линией подсвечивается текущая колонка где
курсор -- эдакое перекрестие, которое очень помогает быстро отыскивать
местоположение курсора, который может быть плохо виден на всяких
разукрашенных синтаксической подсветкой файлах.

Слева отображаются относительные номера строк -- überfeature, без
которой жизни нет вообще. Граница 80-го символа тоже подсвечивается
вертикальной красной четой. По умолчанию у меня включён folding по
отступу и слева от номеров строк отображается уровень fold-а. Частенько
бывает смотрю туда чтобы понять на какой глубине находится тот или иной
участок кода, особенно когда полностью вся функция/класс/метод не
влезают на экран. А ещё левее могут отображаться sign-ы, которые
linter-ами показывают строки в которых что-то не ладно.

Whitespace-ы в конце показываются ярким зелёным цветом, чтобы бить в
глаза ими. Табы отображаются ">→→→→→→→" символами -- я могу визуально
сосчитать кол-во табов, если захочу.

оставить комментарий

Сгенерирован: SGBlog 0.34.0