На работе я кодирую в основном на Javascript (Webpack, React, Flow) и немного на Golang на машине с Windows. И, как вам скажет любой, кто пробовал работать с ванильной Windows cmd / powershell, это болезненная уловка. Итак, первые несколько вещей, которые я делал до сих пор, были: установить ConEMU, git-for-windows и MinGW (или msys2). А недавно я также начал использовать дистрибутив Ubuntu PowerShell-Core и WSL (подсистема Windows для Linux) из Microsoft Store. WSL в основном бездействовал и действовал как запасной вариант, когда выполнение некоторых задач на Powershell оказалось затруднительным. По большей части я был очень доволен настройкой. С точки зрения производительности все было не идеально, но переключение между ОС для программирования и ведения бизнеса для меня является более серьезным компромиссом.

Итак, что я искал в поисках чего-то лучшего? Потому что это то, чем я занимаюсь. Кроме того, поскольку Flow. Несмотря на всю прелесть, которую он привносит в кодовую базу JS, это полная развалина инструмента для Windows, и нет никакой надежды на то, что что-то когда-либо улучшится для пользователей Windows (или может быть, есть?). Мы не перешли на Typescript, потому что большая часть моей команды работает с Linux, поэтому переход с Flow не был большим приоритетом (на данный момент, хотя вам следует). Еще одна важная причина заключалась в том, что за все время, которое я потратил на настройку среды, которую я описал выше, я не мог написать собственный бэкэнд на Golang для работы в Windows. Я писал о том, как у меня это работает, но после переустановки Windows обнаружил, что не могу воспроизвести свои собственные шаги 🤦🏽‍♂️.

Но самая свежая и ироничная причина - это то, что я был на 3 года моложе. когда я застрял в написании скрипта, я обычно запускаю wsl bash и пробую его там. Итак, на этой неделе, когда я это сделал, мне пришла в голову мысль - я думаю, что могу установить Fish вместо bash и получить лучшее завершение. Я так и сделал, а затем установил в чистом виде, и он очень плохо рендерился. В слегка раздраженном настроении я направился в их репозиторий, чтобы пожаловаться и обнаружил, что для этого уже существует проблема. Только то, что это произошло 3 года назад. И что об этой проблеме сообщил я. Я прошел полный круг в WSL-Fish, и меня озадачил тот факт, что на земле WSL ничего не изменилось! Конечно, это было неправдой!

Так что в эту пятницу я подумал о том, чтобы дать бездействующему WSL еще одну серьезную попытку. С момента первого внедрения в систему было внесено несколько существенных изменений. Команда разработчиков консоли Windows с радостью пишет об изменениях в хороших подробных сообщениях в блогах. Итак, я включил свой терминал и приступил к изучению новых возможностей ...

Сначала я переключился на wsl bash:

PS> wsl

И я установил оболочку fish, и fisher для управления плагинами. Затем я установил tmux - который сейчас очень хорошо работает на WSL - и tpm для управления плагинами tmux. Затем я узнал, что Alacritty - совершенно новый эмулятор терминала, написанный на Rust, недавно добавил поддержку Windows. Я слышал о нем много хороших вещей и поэтому попробовал. Это замена ConEMU, так что вы пропустите вкладки. Но с tmux это не большая проблема. И мальчик Алакритти быстрый! Чтобы подвергнуть свою жизнь опасности и немного больше жить на переднем крае, я включил некоторые настройки в конфигурации Alacritty (расположение по умолчанию - %APPDATA%\alacritty\alacritty.yml), чтобы получить новейшие консольные технологии Windows:

enable_experimental_conpty_backend: true
# add some transparency
background_opacity: 0.95
# set some default keybindings
key_bindings:
  ...
  # add a keybinding to open alacritty settings with Ctrl+,
  - { key: Comma, mods: Control, command: { program: "C:\\Users\\<username>\\AppData\\Local\\Programs\\Microsoft VS Code\\code.exe", args: ["C:\\Users\\<username>\\AppData\\Roaming\\alacritty\\alacritty.yml"] } }

Затем я установил новую версию Window ответвления OpenSSH с невероятно удобной функцией: вы можете запустить свой ssh-агент внутри Windows, который сохранит ваши ключи в диспетчере учетных данных Windows, поэтому вам не нужно хранить вводить парольные фразы снова и снова. А затем я установил ssh-agent-wsl, который позволяет моей среде WSL получить доступ к ключам, хранящимся в моей среде Windows! Как это круто?

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

Я также установил кучу других полезных вещей для tmux, которые очень полезны:

set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-yank'
set -g @plugin 'tmux-plugins/tmux-pain-control'
set -g @plugin 'tmux-plugins/tmux-sessionist'
set -g @plugin 'jbnicolai/tmux-fpp'
set -g @plugin 'jimeh/tmux-themepack'

Как ни странно, я еще не установил и не оценил Flow. Но бэкэнд golang работает как шарм. Для этого больше не нужен докер.