Как и многие другие люди, я начал свой путь программирования с использования больших, мощных и неуклюжих IDE. Я использовал Borland Delphi, MS VS, Netbeans, Eclipse, IntelliJ IDEA и т. Д. Со временем, когда я стал больше заниматься веб-разработкой, я переключился на более легкие варианты. Некоторое время моим любимым редактором был Sublime Text. Около трех лет назад я полностью перешел на Vim, Tmux и другие инструменты, не связанные с графическим интерфейсом, и пока я полностью в них влюблен!

Две вещи вызвали миграцию. Во-первых, на моей новой работе у всех нас были ноутбуки для удаленной работы, но большая часть разработки происходила на мощной стационарной рабочей станции, расположенной в офисе. Использование SSHFS или VNC при нестабильном интернет-соединении было головной болью, поэтому мне нужен был лучший вариант. Во-вторых, я выполнял все больше и больше работы типа DevOps, которая требовала от меня ежедневного редактирования файлов на десятках удаленных машин, а Vi был единственным редактором, доступным повсюду. Переход на Vim решил для меня обе проблемы, и после того, как я обнаружил эргономику и экосистему плагинов, я полностью отказался от Sublime в качестве основного редактора. Недавно я заметил, что все больше и больше людей спрашивают о моих настройках всякий раз, когда видят мой экран, поэтому я решил поделиться этим в блоге.

Установка Neovim

Neovim - амбициозный проект по рефакторингу кодовой базы Vim, которой уже 27 лет, с нуля. Вы можете узнать больше об их видении здесь.
Способы установки Neovim различаются в зависимости от ОС, поэтому лучше обратиться к исходному руководству. С этого момента я предполагаю, что Ubuntu 18.04, но большая часть конфигурации будет независимой от ОС, будут отличаться только шаги установки.
В Ubuntu 18.04 Neovim включен в дистрибутив, так что вы можете просто сделать

sudo apt-get install neovim

В Mac OS он доступен через Homebrew:

brew install neovim

Чтобы вызвать Neovim, вам нужно будет вызвать nvim, который на одну букву длиннее, чем просто vim, и несовместим с машинами, на которых доступен только обычный vim. Чтобы исправить это, вы можете определить псевдоним в своем сценарии rc:

alias vim=’nvim’

Я лично выбрал хардкорный путь: удалил a/usr/bin/vim и заменил его символической ссылкой на Neovim:

sudo rm /usr/bin/vim && sudo ln -s /usr/bin/nvim /usr/bin/vim

Установка Plug

Прежде чем делать что-либо еще с Vim, лучше установить диспетчер плагинов. Я выбрал vim-plug, потому что он очень минималистичный и по-прежнему выполняет свою работу. Чтобы установить Plug для Neovim:

curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

Vim-plug - единственный плагин, который нужно добавить вручную, остальные будут установлены через Plug.

Установка Tmux

Следующее, что мы настроим, - это Tmux. Tmux - это терминальный мультиплексор, который позволяет нам делать следующие ключевые вещи:

  • Разделить окно терминала на горизонтальную и вертикальную панели
  • Разделить один терминал на несколько окон
  • Поддерживайте все процессы, запущенные в Tmux, даже если мы потеряли соединение SSH.

Tmux выполняется на удаленной стороне (если мы говорим о разработке на удаленной машине) и сам разделен на tmux-server и tmux- клиент. Когда вы подключаетесь к своей рабочей станции через SSH, вы сначала запускаете tmux-client, который затем подключается к tmux-server, запущенному на та же машина, что и демон. Когда соединение разрывается, SSH завершает работу только части tmux-client, поскольку это был единственный дочерний элемент, запущенный процессом SSH. Теперь, в Ubuntu 18.04, достаточно свежий Tmux уже включен в дистрибутив, поэтому просто сделайте:

sudo apt-get install tmux

На других платформах убедитесь, что вы устанавливаете tmux >= 2.0, поскольку некоторые элементы моей конфигурации несовместимы со старыми версиями.

Установка Zsh

Я предпочитаю Zsh над bash из-за нескольких дополнительных функций, которые он предоставляет: история команд, совместно используемая всеми запущенными оболочками, более удобное автозаполнение команд и расширяемость с помощью oh-my-zsh. В Ubuntu запустите:

sudo apt-get install zsh

а затем сделайте его оболочкой по умолчанию для вашего пользователя:

chsh -s /bin/zsh

(затем повторно авторизуйтесь)

Чтобы добавить oh-my-zsh:

sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

Fzf

Кому не нравится нечеткий поиск?

sudo apt-get install git
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install

Тогда просто ответьте «да» на все вопросы, и ваш ZSH станет нечетким по нескольким причинам. Просто попробуйте нажать Ctrl + R или Ctrl + T.

~ / .zshrc настройки

Вот некоторые вещи, которые мне нравятся в моем rc-файле:

Наконец, мы установили все основные инструменты и теперь можем переходить к настройке. Давайте сначала взглянем на мою конфигурацию Vim.

Настройте его на свой вкус, поместите в ~/.config/nvim/init.vim, откройте Vim, а затем запустите :PlugInstall, чтобы установить все плагины (игнорируйте ошибки запуска при открытии Vim).

Чтобы завершить установку YCM:

cd ~/.local/share/nvim/plugged/YouCompleteMe
sudo apt-get install build-essential python-dev cmake
./install.py

А затем, чтобы избавиться от этих странных символов внизу Vim:

sudo apt-get install fonts-powerline

(вам может потребоваться перезагрузить терминал после установки шрифта)

После всех манипуляций ваш Vim должен выглядеть примерно так:

Конфигурация tmux

Я также внес несколько изменений в свою конфигурацию Tmux.
Как и в случае с Vim, вам следует начать с установки диспетчера плагинов:

git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

Вот моя полная конфигурация Tmux:

Поместите его под ~/.tmux.conf~/.tmuxline) и (повторно) запустите свой Tmux. При первом запуске нажмите prefix I, чтобы установить плагины Tmux (префикс по умолчанию - Ctrl + b)

Вот скриншот после выполнения всех вышеперечисленных шагов:

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

Еще несколько советов в конце:

  • Vim не имеет смысла без навигации Vim, так что привыкайте к этим чертовым HJKL.
  • Попробуйте переназначить CapsLock на Esc, особенно на новых ноутбуках Mac
  • Купите себе одну из этих изящных клавиатур, и ваши руки будут вам благодарны!

Это было для этого поста. Если вам понравилось, вы также можете посмотреть что я создаю с помощью всех этих инструментов.

Ссылки

Моя инженерная история

Еще одна причина, по которой ваши контейнеры Docker могут работать медленно

База знаний прямо в вашем Slack