Первоначальная публикация этой статьи была приписана не тому автору. Это было исправлено, а виновные уволены. Извини, Дэвид!
Веб-разработка значительно изменилась за последние 20 лет. Например, современная среда разработки была бы неузнаваема для кого-то, кто разрабатывал Coldfusion в конце 90-х. Повышенное внимание к лучшим практикам и продуктивности разработчиков, безусловно, сделало программное обеспечение более легким в обслуживании, но это происходит за счет дополнительной сложности. Чтобы справиться с этой сложностью, требуется современная среда разработки; эта статья обрисовает в общих чертах некоторые из моих личных любимых инструментов.
Tmux
Tmux — это мультиплексор терминалов (думаю, экран ), что означает, что вы можете иметь несколько терминалов в одном сеансе оболочки. Это позволяет вам разделять панели, перемещать их и повторно подключаться к сеансу tmux с другого компьютера. Это особенно замечательно, когда он развернут на сервере, так как вы можете запустить долгосрочную задачу, отключиться, и ваш сеанс tmux продолжит работать.
Настоящая сила Tmux для разработки заключается в том, чтобы знать, в каком окне работает каждый из ваших различных инструментов, потому что с помощью некоторых быстрых оконных ярлыков вы можете перемещаться настолько быстро, что поток становится инстинктивным. Чтобы помочь этому, tmuxinator устанавливает профили (protip: связывает их с ярлыками Tmux, чтобы облегчить открытие различных типов проектов, таких как Rails, Sinatra и т. Д.), Что прекрасно дополняет Tmux.
Кроме того, Tmux расширяется через экосистему плагинов . Посмотрите, но я бы порекомендовал Менеджер плагинов Tmux , tmux-battery и tmux sensible .
Если вы ищете простой старт с Tmux, ознакомьтесь с этой статьей .
Рыбы
Bash все в порядке, но он не очень хорошо состарился, и есть лучшие альтернативы терминалам. ZSH — отличный выбор, но лично мне не хватает мотивации, чтобы тратить время на обучение настройке еще одного программного обеспечения. Для этого я бы порекомендовал Fish . У него отличное завершение команд, он полностью подходит для написания сценариев и выглядит намного лучше, чем Bash. Лучше всего, это просто работает из коробки (хотя есть несколько незначительных идиосинкразий, с которыми вы столкнетесь. Кроме того, ваши псевдонимы Bash не будут работать, но перевод прост, и это сравнительно низкие затраты на установку). Мне особенно нравится взаимодействовать с Git таким образом, но недавно я обнаружил превосходную Gitsome , которая предлагает отличную интеграцию с Github и непревзойденное автозаполнение, поэтому я сейчас колеблюсь между ними.
напор
Vim является краеугольным камнем моего окружения. Сильно настроенный для ускорения разработки, он больше напоминает полноценную (хотя и легковесную!) IDE. Давайте пройдемся по некоторым обычно полезным плагинам, а затем перейдем к некоторым специфичным для Ruby. Вы можете скачать мои vim dotfiles здесь .
Навигация по проекту может быть громоздкой. К счастью, богатая экосистема Vim действительно вступает здесь в свои права. Для просмотра проекта я рекомендую отличное Nerdtree . Это даст вам возможность просматривать древовидную структуру, предоставляя вам аккуратный общий обзор текущего каталога и его дочерних элементов. Нажатие m
в этом режиме позволит вам удалять, создавать и переименовывать узлы, не покидая vim. Возвышенные стойкие люди будут наслаждаться ctrlp ; отличный нечеткий сопоставитель, который особенно хорош, когда у вас есть файлы с одинаковыми именами, как, например, в проекте Rails. Наконец, я часто хочу получить доступ к файлам, которые я недавно использовал; MRU делает именно это.
Хотя это некоторые из моих любимых, вот некоторые другие плагины vim, которые заслуживают особого упоминания:
* Беглец : интеграция с Git прямо в Vim
* Supertab : завершение кода
* Авиакомпания : Приятно выглядящая строка состояния
* TComment : функция быстрого комментирования / раскомментирования
* Surround : Оберните обычные выделения границ vim в скобках или в кавычках.
* Autoclose : автоматически закрывать скобки или кавычки
* Gundo : интерфейс к хорошо скрытой древовидной структуре Vim, в которой хранятся изменения документа, что часто оказывается гораздо более полезным, чем линейная функция отмены
Ruby-специфичные плагины
Прежде всего, вам нужно убедиться, что ваша версия Vim скомпилирована с Ruby:
vim --version | grep ruby
Приведенная выше команда должна включать +ruby
. Если этого не произойдет, вам нужно либо перекомпилировать Vim с поддержкой ruby ( относительно тривиально ), либо установить версию Vim с поддержкой Ruby, например MacVim. Хотя многие плагины будут работать без него, вы упустите такие полезные функции, как автозаполнение.
vim-ruby — это первый порт захода. Он добавляет подсветку синтаксиса, автозаполнение, подобное IntelliSense, и даже плагины компилятора. Это должно дать вам много основных функций IDE из коробки. Он даже имеет подсветку синтаксиса erb!
Тим Поуп — человек, который дал нам несколько отличных плагинов для Ruby (и других). Вы могли бы сделать хуже, чем проверить его проекты и интегрировать их в свой рабочий процесс. Если вы собираетесь получить один плагин для помощи в разработке Rails, это должен быть vim-rails . Этот плагин приносит всю функциональность командной строки непосредственно в Vim, что чрезвычайно полезно, когда вы сочетаете его с ярлыками Vim. Давайте углубимся в некоторые полезные команды здесь:
gf
— это контекстно-зависимый переключатель, который переместит вас прямо в связанный файл. Вы можете использовать подходящие имена :A
(альтернативный) и :R
(связанный) для перехода от модели к схеме, шаблона к помощнику и контроллера к функциональному тесту.
Интерфейс с rails
в командной строке :Rails
(также можно получить доступ к rake через :Rake
, если вы предварительно Rails 5.)
:Rextract <filename>
можно извлечь, визуально выбрав область и используя :Rextract <filename>
. Это кажется такой незначительной функцией, но невероятно полезно при рефакторинге неуклюжего представления.
Есть множество других полезных ярлыков, и ваше время будет потрачено на их изучение.
vim-dispatch — еще одно творение Тима Папы. Это позволяет использовать Tmux для предоставления асинхронной функциональности в Vim. Полезно для запуска модульных тестов без блокировки ввода или открытия другой панели.
vim-rspec — это легкий RSpec-бегун для Vim. Мне нравится отображение, если я не использую Guard.
Для дальнейшего чтения по этой теме, ознакомьтесь с этой статьей, которая гораздо глубже.
Похвальные грамоты:
- vim-endwise : автоматически добавляет
end
когда вы вводитеdef <function_name>
имя_функцииdef <function_name>
. Подумайте, snipmate, но без необходимости вызывать ярлык. - vimbundler : упаковщик , который делает интерфейс немного приятнее.
- vim-haml : самые передовые исполняемые файлы Vim для Haml, Sass и SCSS — ненужные, но приятные.
На самом деле это не плагин Vim, но я все равно включу его здесь: gem-browse — это Ruby Gem, который открывает исходный файл библиотеки в вашем редакторе, что экономит время, когда вам нужно просмотреть источник какой-то непонятной библиотеки, чтобы посмотрите, почему ваш код не выполняется должным образом.
докер
Docker — сравнительно новая технология по сравнению с другими, но не менее важная. Он облегчает простое и независимое от платформы развертывание, выполняя «контейнер» в одном экземпляре Linux, избегая затрат на запуск и обслуживание традиционных виртуальных машин. Кроме того, изоляция, обеспечиваемая этим подходом, обеспечивает дополнительный уровень защиты.
Docker когда-то было немного сложно для начала, что требовало превосходного Как использовать Docker на OS X: Пропавшее руководство , но сейчас все стало лучше. Отправляйтесь на docker.com, чтобы начать.
охрана
Я большой поклонник гвардии . В то время как в больших проектах с огромным количеством тестов он не так уж и хорош, любой быстроразвивающийся проект без этого ограничения извлекает огромную выгоду из мгновенной обратной связи, которую он предоставляет разработчикам. Поддерживая загрузчик Spring, он может значительно сократить время, затрачиваемое на выполнение тестов, и я бы искренне рекомендовал объединить его с minitest-reporter для более информативного вывода тестов.
подглядывать
Прай это фантастическое дополнение к вашей драгоценности. Мощная альтернатива irb, она позволяет интегрировать командную оболочку (git, vim и т. Д.), Подсветку синтаксиса и мощные функции просмотра истории и воспроизведения. Используемый совместно с гемом pry-doc , он включает в себя несколько полезных функций, таких как show-doc
для show-source
документации и show-source
для просмотра исходного кода встроенных в Ruby. Он может хорошо работать в качестве отладчика, и, как тот, кто предпочитает разработку, основанную на REPL, я нахожу его глотком свежего воздуха по сравнению со стандартным irb.
Pgcli
С появлением ORM, SQL — это то, с чем я не так регулярно взаимодействую, а это означает, что автозаполнение экономит время, когда я не могу точно вспомнить, как что-то сделать. Pgcli (и его двоюродный брат Mycli, если вы застряли с mysql) предлагают эту точную функциональность и с подсветкой синтаксиса для загрузки. Настоятельно рекомендуется.
остолоп
Если вы можете пережить, возможно, самый болезненный процесс конфигурирования в современном программном обеспечении, Mutt — отличный выбор для доступа к электронной почте из командной строки. Он использует привязки Vim, и я определенно ценю отсутствие необходимости покидать свою оболочку для обработки электронной почты.
Irssi
Я считаю IRC бесценным ресурсом, но определенно тем, который лучше работает в оболочке. irssi — мой клиент по выбору (обязательно ознакомьтесь с расширениями ). Я также слышал хорошие вещи о выходных .
Резюме
Здесь мы многое сделали, и, как всегда, под поверхностью есть еще тонна. Vim — это место, где я провожу большую часть своего времени, поэтому я потратил пропорционально гораздо больше времени на его настройку. Правильное исследование Tmux и вашей оболочки — определенно хорошо потраченное время. Естественно, это все личные предпочтения, поэтому вы вряд ли будете разрабатывать с использованием моих точных настроек, но, надеюсь, вы должны иметь лучшее представление о том, что там происходит, и, возможно, даже интегрировать что-то новое отсюда в ваш рабочий процесс.