🔥

Тред (Антон Кастрицкий)


Используете window manager?
По результатам опроса примерно 15 человек будут понимать о чём пойдёт поздний тред 👇👇👇 twitter.com/jsunderhood/st…

Если у вас в планах на этот вечер семья/прогулки/друзья, то пролистывайте, вам всё равно не понравится ¯_(ツ)_/¯

Если же вы опять накатываете арч потому что внешний монитор перестал работать от дока, то добро пожаловать, мы подружимся🤗

Маленький спойлер, сижу на маке, поэтому про линукс если и будет, то очень мало

А вот и мои дотайлы о которых ниже пойдёт речь github.com/antonk52/dot-f…

В первую очередь мак хоть и из юникс семь, но часть инструментов, например tar, из коробки BSD'шные, на линуксах они GNU'шные. Это может добавить подводных комней при написании кросплатформленных скритов

То есть 99% API совместимые, но когда вы наступите на этот 1% дебагинг может быть не очевидным

Основным требованием к приложениям является что их можно поставить пакетным менеджером и у них есть конфигурационный файл, в идеале XDG friendly

На маке нельзя заменить родной оконный менеджер 😔 Но есть большое кол-во утили имулирующих нормальные менеджеры

Несколько лет сидел на spectacle, он позволяет раскидать окна шорткатами, но они всё равно могут накладываться друг на друга github.com/eczarny/specta…

затем еще годик на rectangle, он по сути форк spectacle переписанный на swift github.com/rxhanson/Recta…

Знаю что аналогичного функционала можно добиться через hammerspoon, но необходимости такой не нашёл

В целом жилось терпимо, но двигать окна руками при открытии приложений? like a f...g caveman

Хотелось найти адекватный тайловый менеджер и после очередных раскопок нашёлся аметист (поговаривают что похож на xmonad, но я не проверял) github.com/ianyh/Amethyst

Пользуюсь им меньше года, но радости полные штаны. Даже не смотря на то что он работает поверх macos accessibility API (есть заметная визуальная задержка), это большой шаг в сторону желаемого результата

Так же есть такое популярное решение, но до него еще не дошли руки github.com/koekeishiya/ya…

Как можно догадаться я не люблю тыкаться в GUI, поэтому настройку нового мака предпочитаю делать скриптом, не все знают что так можно делать в маке github.com/antonk52/dot-f…

с переездом на big sur что то из этого, конечно же🙂, поломалось, но скилл полезный, особенно учитывая что не всё можно настроить через GUI'ёвые настройки макос

Если вам интересно как называется интересующая настройка из GUI, что бы задать её в терминале, можно сравнить настройки до и после
notion image

Теперь про шорткаты⌨️ Для настройки кастомных шорткатов на макос есть карабинер, можно поставить через brew и хранить настройки в json'инене github.com/pqrs-org/Karab…

Правило номер один - смапить capslock в escape Это не только сделает жизнь удобнее, но так же повысит вас до "a polite internet citizen"

Пару версий назад в макос появилась родная настройка на то что бы перемапить капс в одну из других 5ти клавишь, но так оказалось удобнее

И да, я в курсе, что от капса не обязательно совсем избавляться и через карабинер можно тоглить капс например одновременным нажатием на оба шифта на клавиатуре

Второе правило проще, набор шорткатов на часто испольуемые приложения fn + a - открыть alacritty fn + y - открыть яндекс браузер fn + t - открыть телеграм и тд

Посмотреть на карабинер конфиг можно тут github.com/antonk52/dot-f…

🖥 теперь го про терминал

До последнего сидел на iterm2 и в целом всё устраивало, миллион настроек, играйся сколько хочешь, даже лигатуры работали. Только играть с этим можно только через GUI. Синкать их между машинками не занимательно

На сегодня если вы хотите себе терминал на макос, который не iterm2 и есть поддержка XDG_CONFIG_HOME и еще хотелось бы что бы он был кроссплатформленный(когда нибудь я съеду с макос), то у вас очень простой выбор kitty vs alacritty

Оба варианта крутые с упрямыми визионеры ментейнерами, респект 💪

Kitty - всё как положено, даже поддержка лигатур есть github.com/kovidgoyal/kit…

Но на макос есть проблема с вертикальной отцентровкой некоторых шрифтов, и туда попал мой любимый шрифт firacode (виртуальный респект респект @nikitonsky)

У Alacritty такой проблемы я не встретил, невероятно прлавный скролл😍 и простенький конфиг на ямле 👌 github.com/alacritty/alac…

Пришлось чуть чуть покопаться что бы воскресить работу шорткатов с alt + num, а вот и сам конфиг github.com/antonk52/dot-f…

Из проблем: - пока не починили, но уже есть фикс для ctrl+/ на макос - увы пока нет лигатур и на горизонте их не видно

🐚 в качесте шела стоит zsh без дополнительных обёрток, вроде бы ничего интересного в конфиге нет github.com/antonk52/dot-f…

Относительно недавно отказался от ohmyzsh, не то что бы он мешал, но оказолось что он нормально так отедал от стартапа, с ним 0.4с, после 0.1с, выбор очевиден, теперь пара плагинов лежат в репозитории дотфайлов в качестве гит сабмодулей

Можно упороться чуть больше и сделать ленивую подгрузку уже после того как отрисуется промпт, но 0.1 секунда меня вполне устраивает

Для промпта стоит pure-prompt, немнодко подкрутив настроечки он стал настолько меня устраивать, что и смотреть в сторону других не хочется github.com/sindresorhus/p…

Субъективно выглдяит проще чем рекламируется. При переходе в вим режим редактирования команды, ▲ превращается в ✔︎ 🤗
notion image

Теперь и локально не могу отучить себя от использования tmux github.com/tmux/tmux

Начать пользоваться смотивировала необходимость в разработке на удалённом сервере

После того как разобрался с ним, теперь у меня 2 тмакс сессии, локально и удалённо. В локальной сессии есть окошко в которой подключён к удалённой машинке на которой запущена вторая сессия

Что бы одинаковый префикс прокидывался во внутреннюю сессию можно нажать его дважды или завести шорткад на прокидывание внутрь, как тут github.com/antonk52/dot-f…

Не самый известный факт, но в 3.1 они наконец поддержали XDG_CONFIG_HOME
notion image

И заключающая тема на сегодня - vim ✅

лет 5 назад имел необходимость трогать руками большие дампы баз данных 2Gb+ на тот момент актуальный саблайм мог открыть такой файл за 30 секунд 🥱 атом(еще в альфе) за 2минуты+ 😴 а в виме файл открывался за пару секунд и можно было начать что то делать 😳

Мой полный путь получился sublime 👉 sublime + vim 👉 macvim 👉 term vim 👉 neovim

После появления асинхронных работ в неовиме жизнь уже не была прежней, стали появляться адекватные автокомплитеры и плагины для работы с LSP 🙌

Даже не смотря на классную работу ментейнеров и наличие встроенного LSP в 0.5 ветке неовима, всё равно считаю coc.nvim лучшей альтернативой, потому что это по сути форк vscode'овского LSP встроенного плагина github.com/neoclide/coc.n…

Это значит что при необходимости можно крайне просто портануть большинство вскод плагинов. К примеру мне как то показали плагин для прыжков к css модулям marketplace.visualstudio.com/items?itemName…

классная штука, но ПРы висят месяцами и работает только с голым css с поддержкой одного препроцессора(из трёх) и без поддержки nesting

Ну что же, одним форком больше и теперь у счастливых виммеров автокомплиты и go-to-definition'ы работают с любыми препроцессорами и даже разрезанные nesting'ом А вот и сам плагин github.com/antonk52/coc-c…

Вскод бояре, законтрибютье ваш плагин, сделайте себе жизнь удобнее 🙂

TLDR идеи, coc.nvim позволяет переиспользовать всё богатство жс экосистемы живущее в npm, можно и ремоут плагины писать, но это уже сильно популярная платформа с достойным DX

Сам конфиг живёт тут, из интересных фактов, в нём соблюдена максимальная совместимость с vim 7.4(удалённая разработка), каких то продвинутых вещей может не быть graceful degradation, я же фронтендер всё так github.com/antonk52/dot-f…

еще будет 2 подтемы в этом треде - удобство - startuptime

Болезненной ошибкой может быть в самом начале перебайндить какие то родные команды и в дальнейшем узнать что на них было что то полезное, а пальцы переучивать больно

Поэтому всё чего вам не хватает байндим на лидер или локаллидер Для удобства лидер можно сделать пробелом, на нём всё равно всегда лежит один палец и в нормальном режиме он не делает ничего полезного

Возможности конфигурации этого редактора должны удовлетворить любого любителя конфигов, но если вам этого мало, то скорее всего вы недостаточно близко познакомились с командой :help

На случай если остался еще кто то, то еще одна пачка твитов про startuptime

Как и многие в какой то момент я заигрался с плагинами и у меня получилось собрать почти IDE, то есть открывалось всё заметно не быстро, попрофелировав это занимало 450ms кхе кхе вебшторм

Поэтому немножко разобрался что у меня было такого чем я не пользовался и что мне оказалось не нужным

Для профилирования есть встроенный флаг --startuptime, немного расписал про это тут github.com/antonk52/webde…

первым подруку попался nerdtree, как и многие пришедшие из GUI редактора мне нехватало шуфлядки с файлами, nerdtree меня устраивал, если он у вас стоит, то попробуйте открыть node_moduels и поставте лайк, когда откроется github.com/preservim/nerd…

остановится на встроенном netrw у меня не вышло, но под руку попался молниеносный dirvish, в котором было почти всё github.com/justinmk/vim-d…

Нехватало только нескольких nertree like команд, которые добил своим плагином и того -125ms от старта github.com/antonk52/dirvi…

Потом пошли статуслайны, простой переход на минималистичный lightline срезал порядка 50ms от запуска github.com/itchyny/lightl…

По отчёту запуска нашёл что загружать словари для грамматической проверки написания комментариев это дорого, поэтому начал подгружать их лениво, где это поддерживается, я всё еще фронтендер github.com/antonk52/dot-f…

Вытащил лишние настройки в autoload и начал лениво запускать coc.nvim, выходит что редактор с раскаршеным файлом отрисовывается быстрее, а следом становятся умнее, прямо как в браузере с гидрацией

Последним шагом оказался g:did_install_default_menus, отрезал еще -100ms от запуска github.com/antonk52/dot-f…

После занимательных ковыряний я остался доволен результатом ~100ms, можно задаться вопросом к чему так упарываться, но об этом я уже расскажу в другой день, если кому то это актуально
notion image

Раньше еще dreamweaver был, с тех пор обладаю фобией сложных и загруженных интерфесов 😱