В этой статье не будет «топ сочетаний клавиш, которые должен знать каждый разработчик» или «рейтинг любимых сочетаний клавиш, которые ускорят вас на 124%». Я хочу поделиться опытом, как можно постепенно изучать шорткаты.. Так, чтобы работа с кодовой базой становилась оптимальнее и вы выполняли рутинные действия на автомате вместо того, чтобы искать десятый раз за день один и тот же пункт в меню.
Я очень люблю работать на клавиатуре. Возможно, причина в том, что раньше учился играть на музыкальных инструментах и появилась привычка к отточенным, чётким и быстрым, но плавным движениям пальцев. Поэтому при работе с кодом использование мышки или трекпада кажется мне не очень эффективным, стараюсь по максимуму использовать возможности IDE и делать всё с помощью клавиатуры. Но так было не всегда.
Буквально пару лет назад я знал максимум 10 любимых сочетаний клавиш (в основном это была навигация) и думал, что этого достаточно. По любому поводу тянулся к мышке и искал глазами в меню нужный пункт. Казалось, это вполне нормально, а изучение шорткатов или другого подхода не стоит затраченных усилий и времени.
Всё поменялось после моего прихода в Dodo. Стало сюрпризом, что в ходе онбординга мне настоятельно рекомендовали распечатать список шорткатов IDE, в которой предстоит работать (это были Rider и Android Studio) и время от времени следили за тем, чтобы я выучил хотя бы базовые 10-15 сочетаний. Правда, этим всё и ограничилось, но после того, как я узнал несколько новых для себя и полезных шорткатов, стало интересно, может, есть ещё сочетания клавиш, про которые я не знаю, но которые сильно упростят мне работу? И (кто бы мог подумать) оказалось, что есть!
Если вы решили, что хотите работать с IDE быстрее и эффективнее, то давайте начнём. Практики, описанные ниже, не привязаны к конкретной IDE. Для примера буду описывать свой опыт с Android Studio.
Первые шаги
Сложнее всего заставить себя начать. Потому что сначала нужно убедить себя, что это действительно необходимо. Меня мотивировали коллеги, которые в два быстрых клика по клавиатуре выполняли то, что я привык делать за две-три секунды с помощью трекпада. Также есть несколько исследований, из которых можно сделать вывод: изначально (без тренировки) мышка даёт бОльшую скорость, которая, однако, не сильно растёт с практикой. При использовании же шорткатов начальная скорость довольно низкая, но при совершенствовании навыков она может расти практически сколько угодно. С некоторыми исследованиями можно ознакомиться вот тут.
Распечатайте список шорткатов из IDE
Да, это банально, но я бы рекомендовал начать с этого. Найдите список сочетаний клавиш, включите принтер, положите в него лист бумаги, вернитесь к вашему компьютеру, отправьте список на печать, снова сходите к принтеру, заберите распечатку и положите рядом с рабочим местом. Этот ритуал поможет начать изучать возможности IDE. Попробуйте сочетания из списка — это не займёт много времени. Сначала вы наверняка не запомните практически ничего, но главное, что он будет рядом. Отмечайте самые полезные шорткаты и постепенно вы запомните их и будете применять автоматически.
Для того чтобы напечатать текущую настройку сочетаний клавиш в Idea, есть удобный плагин Keymap exporter.
Найдите подборки шорткатов для вашей IDE в сети
На Хабре, Медиуме и других источниках можно найти много статей с описанием самых распространённых шорткатов для вашей любимой IDE. Очень удобно, когда в таких статьях есть иллюстрации действий, выполняемых сочетанием клавиш. Например, для Android Studio мне очень нравится статья Android Studio Shortcuts and Tricks to Speed Up Your Productivity. Такие статьи позволят найти самые полезные шорткаты. Я отмечал их в распечатанном списке, чтобы визуально выделить, и применял их в работе в первую очередь. Вы можете поступить так же.
Просмотрите список шорткатов в вашей IDE
Когда вы немного освоились с основными шорткатами, пролистайте список всех сочетаний, настроенных в IDE. В Idea это можно сделать в Preferences -> Keymap.
Зачем, если мы только что распечатали целый список? Во-первых, шорткатов слишком много, и не все из них печатаются. К примеру, отсутствует суперполезное сочетание Control + G (для macOS — найти следующее вхождение выделенного текста и выделить его). Во-вторых, некоторые полезные команды могут не иметь шортката, в таком случае можно назначить свой.
Возможно, вы найдёте несколько полезных сочетаний клавиш и добавите их в свой арсенал. Не нужно пытаться сразу запомнить всё, можно постепенно учить на практике.
Тренируйтесь
Самое Главное Сочетание Клавиш
Вы можете в любой момент забыть любое сочетание клавиш, а может, для нужного действия его нет вообще. И вот рука уже сама потянулась к трекпаду... Без паники останавливаем её, возвращаем на клавиатуру и вспоминаем главное сочетание клавиш: Command + Shift + A (macOS) или Control + Shift + A (Windows). При нажатии увидите меню, которое называется Actions (и сочетание легко запомнить по первой букве этого слова). В появившемся окне начинаете набирать действие, которое хотели выполнить, и IDE сама подскажет вам и само действие, и шорткат для него.
По действиям в списке очень удобно перемещаться стрелками вверх/вниз. Можете нажать просто Enter, чтобы выполнить действие, а можете закрыть это окно и воспользоваться предложенным шорткатом. Вуаля, действие выполнено без единого движения курсора!
В macOS есть ещё одно полезное сочетание клавиш — Command + Shift + /. Это вызов справки. Если ваша IDE основана не на Idea, то оно может очень пригодиться. Всё просто: нажимаете Command + Shift + / и начинаете вводить команду. Причём это будет работать не только в IDE.
Я, к примеру, пишу эту статью в «Заметках» и забыл, как выполняется поиск по документу: вызываю справку с помощью шортката, набираю «Найти», с помощью стрелок нахожу нужную команду. Можно нажать Enter, чтобы команда выполнилась, но это не наш путь — мы же изучаем шорткаты :) Напротив пункта меню обычно можно найти нужное сочетание клавиш — посмотрите его, закройте меню и выполните команду с его помощью. Ничего страшного, если вы не запомните с первого раза — после нескольких повторений всё равно получится.
Пользуйтесь плагинами
Есть плагины, которые облегчают запоминание сочетаний клавиш. Их можно найти, поколдовав разными словосочетаниями со словом «shortcut» в поиске плагинов. Для Idea очень нравится Key promoter X. Каждый раз, когда выполняется действие мышкой, он подсказывает, что то же самое можно сделать с помощью шортката:
Своё дело этот плагин делает хорошо: я узнал и запомнил много полезных сочетаний клавиш с его помощью, лишь бы не выскакивало назойливое окошко внизу экрана. Есть и статистика по действиям, которые можно было бы выполнить с помощью клавиатуры, но они были сделаны мышкой. Вот, например, моя статистика:
Ещё одна полезная фича Key promoter X: если то, что вы делаете мышкой, не имеет сочетания клавиш, плагин предложит добавить его.
Устройте себе день без мышки и трекпада
Когда я попробовал обойтись без трекпада впервые, то испытал раздражение. Честно. Вот они, вкладки файлов в IDE, которые я привык переключать мышкой! Блин, да как между ними переключаться?! Я злился, что трачу на привычное действие так много времени. Первый раз продлился около полутора часов, и я ужасно устал. Но это нормальная реакция мозга на новый вид нагрузки. Уже на второй раз я приспособился и выполнял действия по навигации и рефакторингу значительно быстрее.
Что делать? Договоритесь с собой и своими руками, что при работе в IDE каждую среду до обеда вы не будете трогать мышку. Для начала может быть достаточно даже одного часа. Практически любое действие в IDE можно выполнить без мыши, с помощью шорткатов или Самого Главного Сочетания Клавиш Command + Shift + A. Попробуйте и через некоторое время обнаружите, что руки сами понимают, как выполнить нужное действие максимально быстро.
Если очень хочется соблюдать «безмышинный» режим, но не получается, могу посоветовать ещё один плагин — Force Shortcuts. Если для действия, которое вы совершаете, есть шорткат, плагин блокирует клик и предлагает использовать шорткат:
Тренируйтесь регулярно
Если вы выполняете упражнения вроде TDD Kata, добавьте в них тренировку шорткатов. Если нет — ничего страшного. Выберите один шорткат, который можно использовать при работе с кодом, и старайтесь применять его в ходе упражнений или работы в течение всего дня. Через некоторое время будете применять его, не задумываясь.
Обменивайтесь знаниями
Обращайте внимание на то, как пользуются IDE ваши коллеги
Вы можете работать в паре, просто работать рядом с кем-то или проходить мимо по своим делам — обращайте внимание, как ваши коллеги пользуются IDE. Так можно взять себе на вооружение много интересных приёмов.
Ещё можно посмотреть статистику шорткатов, которые используют коллеги — для этого есть плагин Shortcut Stats. Если видите в топе незнакомый шорткат — берите на заметку. Возможно, именно его вам не хватает в ежедневной работе. Сама статистика выглядит примерно так: указано сочетание клавиш, количество применений, а при выборе строки в списке снизу отображается название действия:
Устраивайте обсуждение любимых шорткатов
Когда общаетесь с коллегами, спросите про их любимое сочетание клавиш в IDE — они могут вас удивить. И сами делитесь, если узнали об интересном шорткате, которым стали пользоваться — возможно, ваш коллега даже не догадывался о нём. Например, недавно на еженедельной встрече Android-гильдии я узнал о том самом сочетании Control + G. Теперь не представляю, как раньше работал без него.
Попробуйте научить шорткатам коллегу, который привык пользоваться мышкой
Если вам понравилось, насколько быстро стали выполняться действия в IDE, и вы видите, как ваш коллега мучительно медленно ведёт курсор из одного угла экрана в другой, подскажите ему удобное сочетание клавиш. Скорее всего, этим сильно облегчите ему жизнь.
Ещё раз коротко перечислю основные мысли:
начните с нескольких основных сочетаний клавиш. Чтобы лучше запомнить их, положите список в распечатанном виде рядом с рабочим местом и просматривайте его время от времени;
выбирайте 1-2 новых для себя сочетаний клавиш и старайтесь постоянно применять в работе;
используйте плагины — они могут упростить изучение шорткатов;
смотрите, как работают в IDE ваши коллеги и обменивайтесь с ними интересными приёмами и шорткатами.
Вместо заключения
Первые читатели статьи отметили, что в ней мало моего личного опыта. Исправляю этот недочёт. Во время онбординга в Dodo Аня (мой ментор) периодически напоминала об изучении шорткатов. Где-то за месяц их использование стало входить в привычку, я постоянно пользовался практиками, описанными тут. Тяжелее всего давались дни, когда запрещал себе пользоваться мышкой, но и это скоро стало получаться автоматически. Примерно через полгода привычка закрепилась настолько, что всё стало происходить само собой.
Сейчас периодически просматриваю статьи-подборки шорткатов IDE, в которой работаю, пробегаю по списку сочетаний клавиш в настройках и иногда добавляю новые, если каких-то не хватает. Например, на скриншоте выше видно, что я использовал 171 шорткат 58 тысяч раз. К моменту публикации поста (это 2 недели спустя) — уже 187 шорткатов 83 тысяч раз.
Всё, что я написал, помогло мне использовать шорткаты в 80% случаев, а трекпад трогать крайне редко. В голове постоянно мысль, что нужно использовать клавиатуру, даже если я не знаю нужный шорткат. Остались некоторые действия, которые я пока не представляю, как сделать на клавиатуре быстрее, чем с помощью трекпада — тогда пользуюсь им. К примеру, если нужно быстро проскроллить на большое расстояние, выделить огромный кусок кода. Всё, что касается предпросмотра вёрстки, также делаю с помощью трекпада. Ещё есть вещи, которые можно сделать с помощью шортката, но никак не заставлю себя запомнить его — например, терминал в Android Studio я каждый раз открываю с помощью мыши.
Что ещё почитать: про шорткаты для XCode.
Комментарии (24)
CaptainFlint
11.08.2021 18:17+7Изучение шорткатов ради изучения шорткатов бессмысленно. Изучать надо то, чем пользуешься. Если я по двадцать раз на дню вызываю некую функцию в IDE, то я сам полезу смотреть, какое у неё сочетание клавиш (или назначу своё), потому что банально задалбывает лазить по менюшкам за часто используемыми фичами. А если какое-то действие в моих сценариях не используется, то запоминай сочетание, не запоминай — толку нет, всё равно забудется.
Конечно, бывает так, что не знал о существовании какой-то фичи, а как узнал — непонятно, как вообще жил без этого. Но это уже общее изучение функциональности среды, конкретно к сочетаниям клавиш отношения не имеет.keymusicman Автор
11.08.2021 18:39+3Всё так, шорткаты ради шорткатов не имеют смысла. Они нужны для оптимизации рутины. Кажется, что некоторые фичи проще вызвать с помощью мыши и не совсем понятно зачем вообще запоминать шорткат, если что-то нужно делать всего раз или два в день. Но если в это вложиться и довести до автоматизма, то производительность довольно сильно растёт. На одном шорткате/одной фиче это может быть незаметно, а в сумме прирост будет приличный
Но, естественно, если что-то я делаю раз в неделю или раз в месяц, учить шорткат для этого скорее всего нет смысла
kilokanat
11.08.2021 21:44+1Василий, думаю найдете этот опыт интересным) https://habr.com/ru/post/549612/
keymusicman Автор
12.08.2021 10:18Ого, это интересно. А вы не пробовали предложить получившуюся схему разработчикам NX? Она выглядит очень продуманной
amarao
11.08.2021 19:32+2Иногда бывает так, что неочвидный шоткат для неочевидного действия экономит конкретно много времени. Узнать его через "как это сделать" нелья, потому что нет идеи, что это "одно действие".
Другое дело, что с годами среды приходят и уходят, а моторная память переучивается плохо, так что инвестировать в очередную филькину грамоту, которая через 20 лет станет obsolete, это спорное развлечение.
Вот инвестировать в readline - это да, это на века. Так же как и vim.
CaptainFlint
11.08.2021 19:40Узнать его через «как это сделать» нелья, потому что нет идеи, что это «одно действие».
Да, я про это и говорил в последнем абзаце. Фишка в том, что этим самым «как это сделать» необязательно будет сочетание клавиш. Для меня в своё время такими откровениями явились, скажем, мышиные жесты. Или это может быть подстройка поведения уже известной и используемой функции, как какой-нибудь Ctrl+Tab в браузере может переключаться вправо-влево, а может — в соответствии с историей переходов по вкладкам. Сочетание-то одно и то же, а правильная настройка поможет сэкономить время.
ophil
11.08.2021 21:37+1спасибо, прекрасное дополнение к "письму юному программисту, #01", моему сыну, см. последний абзац, вот этот фрагмент: "Поверь, программист, печатающий быстро, использующий все подсказки и комбинации клавиш в своём редакторе, VS code в твоём случае, и пишущий грамотный код, похож на мага"
AlexZaharow
11.08.2021 21:47+1Я долго не мог подступиться к 3D. Год назад взял себя в руки и стал изучать blender. Такого удовольствия от осознанной необходимости пользоваться шоткатами как в нём я никогда не испытывал. До сих пор практикуюсь. Потом возвращаюсь в то же Visual Studio и все становится унылым.
kotano
12.08.2021 00:50+1Спасибо за статью. Однажды у меня был период, когда на стационарном компьютере сломалась мышка и я неделю пользовался только клавиатурой. Верю, что именно с тех пор я стал шорткат-гиком :)
В дополнение могу порекомендовать статью из личной коллекции: https://habr.com/ru/post/551822/
keymusicman Автор
12.08.2021 10:53Спасибо! Очень много полезных шорткатов. Плюсик за Zen Mode и Vimium
Error1024
12.08.2021 05:56+1Всё поменялось после моего прихода в Dodo. Стало сюрпризом, что в ходе онбординга мне настоятельно рекомендовали распечатать список шорткатов IDE, в которой предстоит работать (это были Rider и Android Studio) и время от времени следили за тем, чтобы я выучил хотя бы базовые 10-15 сочетаний.
Итак, ДоДо Пицца попадает в мой личный чёрный список: крутая компания — требующая выучить комбинации клавиш, а не ждущая результата твоей работы. Это вообще нормально? Чем плох программист, который не пользуется крутыми комбинациями «настоящего хакера», если он выполняет свою работу? И вообще — wtf? — что это за слежка такая «выучил хотя бы базовые 10-15 сочетаний», имхо менеджеры совсем обезумели. Хотя учитывая что ДоДо имеет отношение к Бизнес Молодости, и прочему успешному успеху — такой подход не удивителен — ведь умение красиво работать без мыши с кучей шоркатов — ещё один критерий успеха.
Все написанное выше — просто мое имхо, без негатива.extempl
12.08.2021 06:59Ну с одной стороны вроде и да, с другой - программиста без шорткатов можно сравнить с секретаршей набирающей текст одним пальцем. Вроде с задачей справляется, но…
Но вот тестировщиков лучше не переучивать, они наоборот должны наиболее близко быть похожи на пользователей :)
Error1024
12.08.2021 07:24Ну с одной стороны вроде и да, с другой — программиста без шорткатов можно сравнить с секретаршей набирающей текст одним пальцем. Вроде с задачей справляется, но…
Я вот буквально несколько шоркатов помню/использую, ничего, вроде не ощущаю себя секретаршей, и не понимаю о каком «но» идёт речь. Единственное что приходит в голову — «не выглядит тру хакером», но, имхо, программист должен работать круто, а не выглядить. С другой стороны — «упаковка» в среде бизенсциган это главное.
—
И в целом люди — разные — кому-то проще запомнить и использовать шоркаты, кому о проще запомнить и использовать иконки.Если вам понравилось, насколько быстро стали выполняться действия в IDE, и вы видите, как ваш коллега мучительно медленно ведёт курсор из одного угла экрана в другой, подскажите ему удобное сочетание клавиш. Скорее всего, этим сильно облегчите ему жизнь.
Опять имхо — мне это напоминает адептов Vim, или консоли.
anonymous
00.00.0000 00:00keymusicman Автор
12.08.2021 11:03Спасибо за комментарий! Возможно, выразился не совсем точно - конечно, никто не стоял надо мной, не порол за плохое знание шорткатов и никто не уволил бы даже если я наотрез отказался даже слышать о шорткатах. В ходе онбординга новых сотрудников знакомят с практиками, которые хорошо себя зарекомендовали в повседневной работе в компании или в определённой команде. Изучение и применение шорткатов - всего лишь одна из таких практик. К слову, эти рекомендации исходят не от менеджеров, а от коллег, которые уже через это прошли и рекомендуют только то, в пользе чего уверены сами.
extempl
12.08.2021 06:55+1Странно, что про IDEA (подозреваю в AS тоже) не были упомянуты встроенные
Help -> Keymap Reference: https://dsh.re/2a4138
Help -> Productivity Guide: https://dsh.re/d1558 (со статистикой и описанием фич и их шорткатов)
keymusicman Автор
12.08.2021 10:30Keymap Reference немного бесполезен - продуктов jetbrains много, и в каждом много вариантов раскладок, а документ один. В этом смысле Keymap Exporter более актуален - он печатает вашу текущую ракладку. А вот Productivity Guide - отличный инструмент, совсем забыл про него написать. Спасибо!
deitry
12.08.2021 09:28+1Отдельно хочется отметить, что в современных IDE шорткатить запуск внешних скриптов или отдельных команд. В VSCode это описания заданий в tasks.json + шорткаты для запуска этих тасков, в мире JetBrains (по крайней мере в Райдере) это External Tools. Экономит уйму времени на выполнение рутинных консольных команд и позволяет, например, пересобирать проекты из других солюшенов не открывая их.
Маленький камешек в огород Райдера: они никак не добавят крайне удобную Add Selection to Previous Occurrence, при том что есть симметричная Add to Next и аналогичная Move to Previous
https://youtrack.jetbrains.com/issue/IDEA-264024
keymusicman Автор
12.08.2021 11:13External Tools - топ! Присоединяюсь к @deitry, всем рекомендую взять в арсенал
PGR
12.08.2021 16:41На маке хорошо кодится? Думаю начать на МакБук копить, стоит ли его брать? Мне 14, занимаюсь программированием
keymusicman Автор
12.08.2021 16:50На мой вкус удобно, но твёрдых аргументов за или против у меня нет. Для меня у макбука (у меня рабочий MacBook Pro 2018) очень удобная клавиатура и трекпад. Тач панель для разработки я использую как F-кнопки, так что от неё пользы особой не получаю, даже скорее наоборот.
debagger
Интересно, а есть ли аналог Key Promoter X для VSCode?
keymusicman Автор
Кажется, это обсуждалось тут: https://github.com/microsoft/vscode/issues/26729, но готового расширения для VSCode я не нашел