[В закладки] Кунг-фу на клавиатуре. Искусство сочетать клавиши +19


AliExpress RU&CIS

Сочетания клавиш для тех, кто хочет войти в IT и не только.

Содержание

Сочетания клавиш - это простые команды, позволяющие удерживать пальцы на клавиатуре, а не прыгать вперед и назад к мыши. Вы, вероятно, уже знаете такие распространенные сочетания клавиш, как CTRL + C для копирования и CTRL + V для вставки, но есть множество других сочетаний клавиш, которые позволяют делать что угодно на вашем компьютере или в конкретной программе. Говорят, что знание только основных сочетаний экономит вам 8 рабочих дней каждый год. Цель этой статьи - сэкономить вам ГОРАЗДО больше.

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

Для тех, кто осилил начало статьи, а также для уже опытных пользователей клавиатуры дальше начнется самое интересное. Я расскажу о таком инструменте, как AutoHotkey и о своем скрипте, использование которого сделает из вас настоящего печатающего ниндзю.

В конце вы увидите, как все эти знания можно использовать при работе с самым популярным на данный момент текстовым редактором Visual Studio Code.

Не пытайтесь просто запомнить все, что написано в статье. Обязательно попробуйте понажимать все сочетания клавиш, о которых вы не знали! А потом возвращайтесь время от времени, чтобы освежить память.

Если вы пользователь системы Windows, то вы обязаны дочитать до конца.

Поехали.

Базовые сочетания

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

Начнем с основ.

Esc - aka Escape или Эскейп или Эскейт или... ладно, ладно. Используется для выхода из чего-либо или отмены чего-либо. Если все пошло наперекосяк и "Я что-то нажала и все уронилось", то скорее всего вам нужно будет обратиться к этой клавише.

Tab. Таб это не только символ табуляции, но еще и полезнейший инструмент смены фокуса. Фокус здесь означает то место, на которое будут направлены действия пользователя в системе. Так, например, если у нас в приложении стоит фокус на текстовом поле, то все, что мы печатаем, будет вноситься именно в это поле. Если фокус на кнопке - то Space или в худшем случае Enter нажмут на эту кнопку. Так что совет тут такой. Когда заполняем формы, переключаемся между полями через Tab, отмечаем галочки через Space, решили вернуться - Shift+Tab.

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

Ctrl - работает похожим образом, но позволяет точечно выбирать, что именно вам нужно.

Shift+/<key/> - так исторически сложилось, что Shift часто используется для инвертирования действия, выполненного сочетанием клавиш без Shift. Например Shift+Tab совершает действие, противоположное Tab. Keep in mind!

F1 - вызов справки. Просто для справки.

Ctrl+W - закрыть окно, вкладку. Почти всегда работает в приложениях, где есть вкладки.

Ctrl+F - поиск. F - Find.

Ctrl+P. В большинстве программ вызывает меню печати.

Ctrl+S - сохранить. Что тут еще говорить.

Ctrl+Z - отменить действие.

Ctrl+Y/Ctrl+Shift+Z - повторить отмененное действие.

Ctrl+N. Открыть новое окно/файл.

Ctrl+(+) - приблизить/увеличить масштаб.

Ctrl+(-) - отдалить/уменьшить масштаб.

Ctrl+(?shift)+[ | Ctrl+(?shift)+] - уменьшить | увеличить размер шрифта.

Shift+Enter - перевести курсор на начало новой строки. Это сочетание бывает необходимо, если нажатие Enter делает что-то другое.

Графика

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

Ctrl+D - создать копию объекта. От слова Duplicate.

Ctrl+(?shift)+[ - Переместить элемент на задний план. В некоторых программах требуется клавиша модификатор Shift.

Ctrl+(?shift)+] - Переместить элемент на передний план.

Хотя использование мыши - дело, недостойное настоящего погромиста, но иногда без нее никуда.

Эти сочетания мыши критичны для тех, кто работает с графическими элементами.

Ctrl+MouseScroll - увеличить / уменьшить масштаб.

Shift+MouseScroll - переместиться по горизонтали. Иногда весь контент не помещается в окне, и появляется горизонтальная полоса прокрутки. Данное сочетание позволяет перемещаться вправо или влево в таких ситуациях.

Shift+Click - выбрать группу элементов, если возможно.

Ctrl+Click - выбрать элементы, точечно.

Ctrl+(Dragging) - копировать элемент или группу элементов и переместить на позицию курсора. Работает не везде, но полезно помнить.

Терминал Linux

Навигация в терминале не очень удобная. Для того, чтобы немного облегчить жизнь, при работе с этим инструментом, можно воспользоваться скриптом, о котором будет рассказано в разделе AutoHotkey.

Tab - автодополнение команд.

Tab+Tab - вывести список возможных команд автодополнения.

Ctrl+C - послать сигнал прерывания процесса.

Ctrl+Z - приостановить процесс и перевести в фон.

Ctrl+D - удалить символ после курсора. Если строка пустая, то эта команда завершит работу терминала.

Alt+D - удалить слово после курсора.

Ctrl+W - вырезать слово перед курсором.

Alt+Backspace - удалить слово перед курсором.

Ctrl+A - перейти в начало строки.

Ctrl+E - перейти в конец строки.

Ctrl+B - переместиться на символ назад.

Ctrl+F - переместиться на символ вперед.

Windows

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

Парочка полезностей:

  • Поиск через "Start" в Windows работает так, что он быстро находит файлы, находящиеся в системных папках. Поэтому, если вам лень ходить по файловой системе, нажимаем Win и вводим имя файла - система быстро нам его найдет.

  • Если открыть контекстное меню файла с зажатым Shift, то появятся дополнительные опции. Одной из них будет "Скопировать как путь", очень удобно.

Сочетания

Win+D - скрыть все окна.

Win+M - свернуть все окна.

Win+Shift+M - развернуть все окна.

Win+X - открыть меню системных инструментов.

Win+P - открыть меню проекции на дополнительные дисплеи.

Win+Left/Right - переместить окно влево/вправо.

Win+Up - развернуть окно на весь экран.

Win+Down - открепить окно / свернуть.

Win+L - заблокировать систему.

Win+B - фокус на панель инструментов.

Win+Ctrl+Left/Right - переключиться между рабочими столами.

Win+(.) - открыть меню стикеров. 

Alt+Tab - вы и так знаете. Переключаемся между активными окнами. Зажатый Shift двигает нас назад.

Alt+Enter - позволяет открыть некоторые окна в полноэкранном режиме.

Win+{1, 2, 3, ...} - открыть n-ное окно прикрепленное к панели задач. Обязательно к использованию!

Win+Shift+{1, 2, 3, ...} - открыть n-ное окно от имени администратора.

Win+Shift+S - сделать скриншот части экрана.

Ctrl+Shift+Esc - открыть диспетчер задач.

Alt+\<key\> - активирует навигацию в окнах многих программ. Например, сочетание Alt+V + H + H позволяет скрыть/показать скрытые файлы в проводнике.

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

Alt+PrintScreen - сделать скриншот окна.

Win+PrintScreen - сделать скриншот экрана и сохранить в папку "Изображения".

Проводник

F2 - переименовать файл/папку.

Win+E - открыть проводник.

Alt+Enter - открыть свойства файла.

Ctrl+Enter - открыть папку в новом окне.

Ctrl+Shift+N - создать новую папку в текущей директории в проводнике.

Alt+Left / Alt+Right - предыдущая папка / следующая папка в истории.

Alt+Up. Переместиться на уровень вверх.

Утилиты

Magnifier

Win+(+) - увеличить часть экрана.

Win+(-) - уменьшить часть экрана.

Win+Esc - закрыть Magnifier.

Xbox Game Bar

Win+G - открыть игровое меню XBox.

Win+Alt+R - Начать/остановить запись текущего окна. R - Record.

Chrome

В хроме исправно работают многие из сочетаний, описанных в Базовые сочетания.

Ctrl+Shift+W - брат Ctrl+W. Позволяет закрыть все вкладки сразу.

Ctrl+Shift+N - открыть новое окно в режиме инкогнито. Если вам часто нужно открыть "чистое" окно браузера, то запомните это сочетание.

Ctrl+T - открыть новую вкладку и перейти к ней.

Ctrl+Shift+T - открыть ранее закрытую вкладку. В некоторых случаях это поможет восстановить историю вкладок, если браузер был принудительно закрыт.

Ctrl+Tab - перейти к следующей вкладке на панели.

Ctrl+Shift+Tab - перейти к следующей вкладке на панели.

Ctrl+{1, 2, ..., 8} - перейти к n-ной вкладке.

Ctrl+9 - перейти к последней вкладке.

Ctrl+R - перезагрузить страницу.

Ctrl+Shift+R - перезагрузить страницу, без использования данных в кэше.

Ctrl+D - сохранить текущую страницу в закладках.

Ctrl+Shift+D - сохранить все открытые вкладки в закладках. Поосторожнее с этим!

Ctrl+L - фокус на адресную строку.

Сочетания мыши

MiddleMouseButton - открыть страницу по ссылке в новой вкладке.

Ctrl+Click - открыть страницу по ссылке в новой вкладке.

Ctrl+Shift+Click - открыть ссылку в новой вкладке и перейти к ней. Обычно это именно то, что нужно, если вы хотите быстро просмотреть информацию по другой ссылке.

Shift+Click - открыть ссылку в новом окне.

Меню

Ctrl+H - открыть историю браузера.

Ctrl+J - открыть страницу загрузок.

Shift+Esc - открыть диспетчер задач Chrome. Если вы не понимаете, какая страница сильно нагружает ваши ресурсы, то стоит сюда заглянуть.

Ctrl+Shift+O - открыть страницу закладок.

Developer tools

Developer tools - один из самых полезных инструментов в арсенале Web-разработчика. Посмотрим, как можно немного ускорить работу с ним в браузере Chrome.

Ctrl+Shift+J - открыть вкладку Console в инструментах разработчика

Ctrl+(backtick) - фокус на консоли. При открытом меню инструментов разработчика.

Ctrl+[Ctrl+] - сменить вкладку на панели.

F2 - редактировать элемент как html.

Ctrl+Shift+P - открыть панель команд. Сочетание, которое может заменить их все.

Ctrl+Shift+I / F12 - открыть последнюю использованную вкладку в инструментах разработчика.

Ctrl+Shift+C - открыть панель элементов страницы.

Этого немного, но достаточно, чтобы пользоваться и не перегружать мозг. Больше сочетаний здесь.

Базовые сочетания плюс те, которые используются в Chrome составляют большую часть наиболее распространенных сочетаний. Это значит, что, подобные сочетания вы сможете применить в большинстве программ, с которыми работаете. Поэтому многие "интуитивные" сочетания я буду опускать.

Vimium

Чего мы хотим?
Чего мы хотим?

Vimium - расширение для браузера, которое предоставляет сочетания клавиш для навигации и управления в духе редактора Vim.

Вот что это нам дает.

Переход по ссылкам через F+<key>. Больше не нужно тянуться за мышкой, чтобы кликнуть по ссылке. Это сделает за вас Vimium. Нажмите клавишу F и на странице к каждой ссылке прикрепится название клавиши, которую нужно нажать далее, чтобы перейти по ней.

Перемещение через сочетания как в виме

Используйте привычные клавиши hjkl для движения по странице.

Панель поиска

  • Ищем везде через o

  • Ищем в закладках через b

  • Ищем в открытых вкладках через T

Я не буду раскрывать все сочетания, для этого есть вот такая хорошая памятка:

Vimium hotkeys
Vimium hotkeys

Для работы с русской раскладкой нужно будет добавить "мэпы" в настройки вимиума

Сочетания, которых нет

TL;DR: Я совместил идеи, положенные в редактор VIM, и возможности языка автоматизации AutoHotkey, чтобы создать скрипт, который позволяет не отрывать руки от стандартных позиций. О скрипте - в секции capsKeys.

Хакерский редактор

Мне всегда нравились идеи, заложенные в основу редактора мозга кода Vim.

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

Vim (сокр. от Vi Improved, произносится «вим») — кошмар для случайного пользователя. Если его удаётся в конце концов закрыть, то вздыхаешь с облегчением и твёрдой уверенностью, что больше не будешь запускать эту программу ни разу в жизни. (c) Материал из Викиучебника

Так что же в нем особенного? На Хекслете есть неплохая статья, в которой рассказано, почему Vim - это хорошо.

Я тоже считаю, что вим - это хорошо и знать основные его команды очень пригодится. Так, например, упоминание этого редактора при разговоре с разработчиками даст вам +1 к крутости. А на многих сайтах (например YouTube) используются сочетания именно из этого редактора. Однако реальность такова, что Vim - не современный инструмент, а популярность его поддерживается лишь благодаря старичкам и тем, кто любит выпендриваться.

О самом популярном в мире редакторе кода чуть позже.

Главный аргумент в пользу вима - он позволяет писать эффективно.

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

Этой же цели цели хотел добиться и я, но без привязки к Виму, с его недружелюбными режимами.

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

AutoHotkey

AutoHotkey — свободно распространяемый язык для автоматизации выполнения задач в Microsoft Windows. AutoHotkey является языком программирования сценариев, приспособленным к легкому назначению и переназначению горячих клавиш, включая кнопки мыши и джойстика.

Короче говоря, AHK позволяет нам автоматизировать рутинные задачи, создавать программы с графическим интерфейсом или просто автоматически писать Sincerely Yours в конце электронного письма. Чтобы профессионально лениться с помощью AHK нужно существенно поработать головой перед этим.

А еще на обычной клавиатуре зачастую есть такая замечательная, очень бесполезная клавиша, как CapsLock. Почему бесполезная? Да потому что единственная ее функция - зажимать вместо вас клавишу Shift. Ее любят в основном тролли в интернете и те, кто часто пишут SQL запросы. Зато неудобств от нее куча. Одна только необходимость проверять, включен ли капс перед вводом пароля, доставляет головную боль.

Вердикт - "капсу" можно найти лучшее применение.

Итак, мы хотим иметь возможность не отрывать руку от фыва олдж позиций ни на клавишу. Мы хотим писать эффективно, да так, чтобы не уступать прославленным вимерам. И мы хотим, чтобы было несложно. А еще у нас есть программа, с помощью которой можно программировать сочетания клавиш и одна лишняя клавиша на клавиатуре. Пазл сошелся? Запоминаем и идем писать программу.

CapsKeys

Вот как выглядит часть моего скрипта для AutoHotkey

SetCapsLockState AlwaysOff

; Basic movement
CapsLock & j::Send {blind}{Left}
CapsLock & l::Send {blind}{Right}
CapsLock & i::Send {blind}{Up}
CapsLock & k::Send {blind}{Down}
; Fast move
CapsLock & u::Send {blind}{Up 5}
CapsLock & n::Send {blind}{Down 5}
; Fast delete
CapsLock & Backspace::Send {blind}{Backspace 5}
CapsLock & Delete::Send {blind}{Delete 5}
; Delete words
CapsLock & w::Send {blind}^{Backspace}
CapsLock & e::Send {blind}^{Delete}

А вот что он делает

capsKeys keyboard layout
capsKeys keyboard layout

 Если в Vim сочетания клавиш опираются на семантику, то в этом скрипте я опирался на удобство.

Чтобы попробовать, вы можете:

или

Если еще не поняли, то рассказываю в чем суть: когда этот скрипт работает, ничего не меняется до тех пор, пока вы не зажмете клавишу CapsLock. С этого момента начинается магия. Какая? Рассказываю.

Особенности

Никакого больше переключения регистра. Строчные буквы по умолчанию! Это которые маленькие.

Кнопки перемещения находятся в области правой руки. Мы привыкли, что стрелочки справа, поэтому и кнопки навигации - справа.

  • Caps+J - влево

  • Caps+i - вверх

  • Caps+L - вправо

  • Caps+K - вниз

  • Caps+U - вверх пять раз

  • Caps+N - вниз пять раз

  • Caps+Y - страница вверх (PgUp)

  • Caps+B - Страница вниз (PgDn)

Зажатый капс работает как Ctrl в случае с символами X, C, V. Так просто удобнее!

Вызов контекстного меню. Caps + P - позволяет вызвать контекстное меню. Очень полезная комбинация.

Перемещаемся по словам Через Caps+LeftAlt и Caps+Space. Одно из самых часто используемых мной сочетаний, особенно вместе с зажатым Shift. Однако здесь есть недостаток. Так как мы затрагиваем функциональную клавишу, это меняет поведение Alt. Например, мы хотим использовать сочетание Alt+Up в VSCode и делаем это конечно же через AHK. То есть Caps+Alt+Up, но вот проблема, как только мы зажимаем первые две клавиши, все идет к чертям. Что делать? Тут есть два варианта. Можно использовать правый Alt то есть Caps+RightAlt+Up или сначала нажимать Alt а потом остальную часть сочетания.

Удаляем эффективно Вы знали, что сочетание Ctrl+BackspaceCtrl+Delete удаляет целые слова вместо символов? Я не знал, до недавнего времени. В скрипте есть целая линия клавиш выделенная для удаления.

  • Caps+Q - удалить все символы слева от курсора

  • Caps+W - удалить слово слева от курсора

  • Caps+E - удалить слово справа от курсора

  • Caps+R - удалить все символы справа от курсора

Фишки

  • Caps+A - Скопировать текущую строку и вставить снизу

  • Caps+S - Выделить слово на позиции курсора

  • Caps+D - Скопировать строку и удалить. Украдено прямиком из вима.

Работает везде Работает как в вашем редакторе кода, так и в любом другом текстовом поле. Запомнил один раз - пользуйся везде.

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

Прежде чем основательно начать пользоваться этим скриптом, убедитесь, что вы владеете хотя-бы слепой восьмипальцевой печатью. В противном случае вы рискуете получить вредные привычки, которые будут замедлять вашу скорость набора текста. Советую режим "фразы" в этом замечательном бесплатном тренажере.

Теперь вы можете редактировать текст и перемещаться по редактору со скоростью ниндзи. Дальше рассмотрим, какие сочетания помогут нам ускорить работу с кодом внутри текстового редактора VSCode.

VSCode

Когда дело доходит до выбора редактора кода, то тут все решают личные предпочтения. Однако есть редактор, который придется по вкусу практически каждому, и это Visual Studio Code.

VSCode - опенсорсное творение Microsoft, написанное при помощи фреймворков для JavaScript/TypeScript. Из коробки это простенький красивый редактор кода, который позволит вам в считанные секунды начать писать что вздумается. А если прикрутить к нему расширения, которые регулярно пишутся и поддерживаются огромным сообществом, то то эта малышка даст жару любой профессиональной IDE.

Навигация

Ctrl+B открыть / закрыть боковую панель.

Ctrl+Shift+E - открыть меню навигации.

Ctrl+Shift+D - открыть меню запуска. Используется во время дебаггинга.

Ctrl+Shift+F меню поиска. Позволяет искать текст по всем файлам.

Ctrl+Shift+H - открыть меню замены. Брат Ctrl+Shift+F, но с функцией замены.

Ctrl+Shift+G - открыть меню контроля версий. Если у вас установлено расширение GitLens, то оно может изменить это сочетание.

Ctrl+J - открыть/закрыть панель.

Ctrl+Shift+X - открыть меню расширений.

Ctrl+(backtick) - открыть терминал.

Ctrl+Shift+M - открыть панель ошибок.

Ctrl+Shift+U - открыть консоль вывода.

Ctrl+Shift+Y - открыть консоль отладки.

Простые сочетания

F1 - открыть окошко команд. Наше все для пользователя VSCode. Почти любое действие можно выполнить с помощью этого окна.

F2 переименовать определение / переменную / функцию синхронно. Одна из самых приятных возможностей в VSCode. Если вы передумали с названием переменной, это позволит изменить все места где используется эта переменная, учитывая контекст.

F8 - переместиться к следующему проблемному месту в коде.

Ctrl+. - быстрое исправление ошибки. Если вы допустили какую-то распространенную ошибку, VSCode может исправить ее за вас. Очень удобно использовать в сочетании с F8.

F9 - поставить точку остановки для дебаггера.

Ctrl+P - перейти к файлу.

Ctrl+R - открыть недавний проект / файл.

Ctrl+(,) - открыть настройки редактора.

Ctrl+Q - перейти в другую панель.

Ctrl+/ - закомментировать строку.

Ctrl+T - переместиться к функции или переменной во всех файлах.

Ctrl+Shift+O переместиться к функции или переменной в текущем файле.

Ctrl+Home - переместиться к началу файла.

Ctrl+End - переместиться к концу файла.

Ctrl+Shift+\ переместиться к соответствующей скобке.

Ctrl+Shift+N - открыть новое окно VSCode.

Alt+Left / Alt+Right переместиться к предыдущей / следующей активной строке. Когда вы скачете со строки на строку, VSCode запоминает это в своей истории, и вы можете быстро переключаться между самыми горячими местами в коде.

Alt+Up/Down - переместить строку вверх/вниз. Must have!

Alt - ускорить прокрутку страницы. Если начать прокручивать страницу и зажать Alt, то процесс пойдет немного быстрее.

Alt+Z - переключить режим переноса строк.

Shift+Alt+F - автоматическое форматирование текста. VSCode поддерживает автоматическое форматирование для большинства языков. Нажатие этой клавиши подгонит ваш код под стандарты, принятые в Code style вашего языка.

Shift+Alt+O - упорядочить импорты в соответствии со стандартами вашего языка.

Ctrl+C - скопировать текущую строку, если нет выделения, иначе работает как обычное копирование.

Ctrl+X - вырезать строку, если нет выделения, иначе работает как обычная операция Cut.

Ctrl+Shift+Up/Down - скопировать выделенные строки вверх/вниз. Полезно, если вам нужно повторить какой-то блок кода несколько раз.

Ctrl+Alt+Right - переместить активный файл в соседнюю группу редактирования. Это позволит вам параллельно просматривать два или более файлов. Ctrl+Alt+Left двигает его обратно.

Ctrl+0 - фокус на боковую панель.

Ctrl+{1, 2, 3, ..} - фокус на первую/вторую/третью группу редакторов. Если вы параллельно просматриваете два или больше файлов, это сочетание поможет вам переключаться между ними. Однако по своему опыту скажу, что больше двух редакторов никто обычно не открывает. Поэтому у себя я поменял сочетание для работы с двумя окнами редактирования и двумя терминалами.

Alt+{1, 2,..., 8} - переключиться между активными вкладками в окне редактирования. Обязательно к запоминанию! Alt+0 открывает последнюю вкладку.

Ctrl+Space - активировать автоподстановку.

Shift+Ctrl+Space - открыть подсказку для параметров функции.

Посложнее

Alt+Ctrl+Up/Down - добавить курсор на верхнюю/нижнюю строку. Одна из особенностей современных редакторов. Позволяет редактировать текст одновременно в нескольких местах. Суперфича!

Ctrl+D - добавить курсор в конец следующего вхождения данного слова.

Alt+Click - добавить курсор в позицию указателя мыши.

Shift+Alt+(Dragging) - добавлять курсоры по пути следования указателя мыши.

Shift+Alt+Right - выделение с учетом контекста. Например, у нас есть длинное выражение внутри скобок, данное сочетание позволит нам выбрать все, что находится внутри них. Последовательные нажатия расширяют область выделения.

Shift+Alt+Left - действие, противоположное Shift+Alt+Right.

Ctrl+Shift+[ - свернуть блок кода. Если файл стал слишком большим, и перемещаться стало слишком сложно, то данное сочетание позволит свернуть блоки текста, которые вам сейчас не нужны.

Ctrl+Shift+] - развернуть блок кода. Противоположно Ctrl+Shift+[.

Следующее сочетание отсутствует в сборке для Windows, но я рекомендую установить его вручную. У меня это Ctrl+Shift+J.

Нет(Win) / Ctrl+J(Mac) - присоединить следующую строку к текущей. По сути, все, что делает данная команда, так это удаляет символ переноса с текущей строки. Очень удобно, если вдруг нужно сжать html файл или еще что-то.

Ctrl+Shift+L - выделить все одинаковые слова и переместить курсор к концу каждого. Сильная штука, позволяет редактировать все вхождения определенного слова. Но стоит быть аккуратнее, если это слово встречается в качестве подстроки, то оно тоже будет изменено.

Ctrl+K Z - Включить Zen Mode. Для настоящих гуру.

Демонстрация

Ну и на десерт, небольшое видео, где я наглядно показываю, как можно совместить использование скрипта capsKeys и возможности редактора VSCode. Опытные пользователи узнают файл Vimtutor, который используется для обучения основам Vim. Чудес не обещаю, но суть должна быть понятна.

Заключение

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

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

Пишите в комментариях, если у вас есть свои любимые сочетания, не описанные в статье.

Также, если у вас есть идеи по поводу улучшения скрипта для AutoHotkey, буду рад видеть ваши pull request-ы на странице репозитория.

Изначальную идею скрипта я почерпнул из этой замечательной статьи в блоге Никиты Прокопова.

Полезные ссылки




Комментарии (38):

  1. Bedal
    /#22911520

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

    • S-e-n
      /#22911598

      Смысл в том, чтобы не носить далеко?

      • Bedal
        /#22911898

        Ну, примерно. Вообще не надо носить руку. Правой руке на клавиатуре комфортно, она там всё умеет, и снимать её с клавиш не надо. А левой вполне нормально на мышке. Так что, либо идёт сугубо набивка кода или какого текста — тогда обе руки на клаве, либо всё остальное (отладка или что ещё) — и левая на мышке.

    • papazogl0
      /#22918794

      Отнюдь!
      Множество действий попросту занимают больше времени по причине путешествия мыши по меню-подменю-под(N)меню, в то время как шорткат можно выполнить никак не взаимодействуя с UI, т.е. не бегая глазами по экрану.

      • Bedal
        /#22918952

        ну, если есть привычка и желание на шорткаты — мышка слева этому не мешает. Зато вся остальная часть — удобно, без переносов рук.
        Я, к примеру, шорткаты не люблю, потому что работать приходится в разных средах, задолбаешься все упоминать.

  2. redsh0927
    /#22911530 / +1

    Трекпоинт — супер удобно. Шустрей мышки, тянуться не нужно!

    • kotano
      /#22911610

      Спасибо за совет! Взял на заметку

    • alpik
      /#22911712

      Ага, только хороший, как в Thinkpad. У делл он убогий.
      На сайте Леново есть блутуз клавиатура с возможностью подключения к двум девайсам одновременном. Шикарная вещь. Мышь осталась только для игр.

    • Zenitchik
      /#22913894

      Трекбол — лучше. Жаль, что на клавиатурах практически не встречается.

  3. Nikolino
    /#22911798

    недавно открыл для себя сочетание клавиш в продуктах JetBrains, которое использую чаще остальных в проектах с большим кол-вом кода. Судя по общению с коллегами, не все его знают.
    ctrl+alt+left
    Когда вы, читая код, проваливаетесь внутрь через ctrl+click, сочетание «ctrl+alt+left» позволяет вернуться на один уровень вверх именно на то место, в котором нажали ctrl+click. Если закопались далеко вглубь, то жмите сочетание несколько раз пока не вернетесь туда откуда начали проваливаться.

    • dopusteam
      /#22911854

      ctrl+alt+right ещё
      Это ж переход назад-вперёд)

    • set
      /#22912092

      Спасибо :) почему-то даже в голову не приходило поискать подобное сочетание

    • asakasinsky
      /#22913856

      У меня CMD+[ и CMD+] на маке.
      Есть вероятность, что на других системах сработает CTRL+[ и CTRL+]

    • tendium
      /#22916708

      Я для этого использую дополнительную кнопку мыши. Еще удобнее. Ту, которая сбоку сзади.



      P.S. Ту, что спереди можно использовать, чтобы опять перейти на ту позицию, откуда только что вернулись.

  4. Kekushiftkey
    /#22912298

    А что, обязательно решать за читателя, кидать в закладки или нет? зачем в тексте прямо советовать делать так и так?
    по-существу, вместо vimium можно Tridactyl или вовсе qutebrowser
    в вимиуме убило: Ищем везде через o.
    в видео — tutor из vim'а. вместо прыжка на одно слово в конец и обратно в начало слова можно просто нажать w в виме, или вовсе — 2w если надо прыгнуть через слово. допиливание AHK в итоге приведет к настоящему vim'у. там же — отрывание рук от клавиатуры для позиционирования мышкой. там же: прыжок в конец строки, выделение от конца строки до нужного слова, удаление, а в виме от нужного слова: d$ или c$
    ну и как там с переносимостью?

    прошу прощения, у меня вим головного мозга. вдохновлялся www.reddit.com/r/unixporn/comments/jtjol5/cinnamon_latex_workflow_in_vim

    а, еще в винде может пригодиться: win + влево + влево + вверх, чтобы окно ушло на 1/4 влево вверх. узнал об этом случайно, методом тыка)

    • kotano
      /#22913758

      А что, обязательно решать за читателя, кидать в закладки или нет?

      Это было добавлено редактором, так как это моя первая статья на хабре, я решил не спорить со старшими товарищами и оставить как есть.

      по-существу, вместо vimium можно Tridactyl или вовсе qutebrowser

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

      в видео — tutor из vim'а. вместо прыжка на одно слово в конец и обратно в начало слова можно просто нажать w в виме, или вовсе — 2w если надо прыгнуть через слово

      По поводу вима согласен, что там все реализовано на более продвинутом уровне. Но именно эта сложность убивает желание им пользоваться на постоянной основе. CapsKeys очень прост и в этом мне видится намного больше плюсов, чем минусов. Я уверен, что небходимость постоянно просчитывать шаги утомляет, и большая часть пользователей в конечном итоге перестанет это делать, используя только самые базовые команды, и вместо 2w нажимать просто w w.

      там же — отрывание рук от клавиатуры для позиционирования мышкой

      В видео я старался совместить возможности capsKeys с дополнительными возможностями редактора VSCode. Это не видео из области «смотрите, как могу», это небольшой дополнительный материал, который показывает «как можно было бы». Позиционирование мышкой было необходимо, чтобы точечно добавить дополнительный курсор в определенное место (это одна из самых приятных возможностей VSCode и я не мог ее пропустить), к сожалению, этого невозможно добиться при помощи одних клавиш.

      там же: прыжок в конец строки, выделение от конца строки до нужного слова, удаление, а в виме от нужного слова: d$ или c$

      В скрипте есть сочетания `Caps+Q` и `Caps+R` предназначенное для удаления всех символов до или после курсора. Честно говоря, я даже думал, что оно лишнее, так как можно добиться этого эффекта через `Shift+Caps+H + Backspace`. Это несложное сочетание, особенно когда уже немного привык к скрипту.

      ну и как там с переносимостью?

      Да, скрипты AutoHotkey работают только в Windows, но зато по всей системе, а не только в редакторе. Можно попробовать запустить в Linux через Wine. Я не пробовал, но надеюсь у кого-нибудь дойдут до этого руки.
      Также я не заявляю, что capsKeys это наиболее подходящее решение. Очень хотелось бы, чтобы кто-то умелый смог реализовать кросплатформенное приложение для этих целей.

      прошу прощения, у меня вим головного мозга. вдохновлялся

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

      а, еще в винде может пригодиться: win + влево + влево + вверх, чтобы окно ушло на 1/4 влево вверх. узнал об этом случайно, методом тыка)

      Добавлю это в заметки к соответствующему сочетанию, спасибо)

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

  5. mistergrim
    /#22912912

    Win+Shift+{1, 2, 3, ...} — открыть n-ное окно от имени администратора.
    Нет. Это открыть новое окно.

  6. /#22913614

    Спасибо за наводку, что Caps можно использовать в качестве модификатора. Порывшись в интернете я обнаружил, что необязательно отключать режим Caps lock совсем, а можно перевести его на двойной щелчок по клавише Caps Lock при помощи следующего скрипта:

    ;================================================================================================
    ; CapsLock processing. Must double tap CapsLock to toggle CapsLock mode on or off.
    ;================================================================================================
    ; Must double tap CapsLock to toggle CapsLock mode on or off.
    CapsLock::
    KeyWait, CapsLock ; Wait forever until Capslock is released.
    KeyWait, CapsLock, D T0.2 ; ErrorLevel = 1 if CapsLock not down within 0.2 seconds.
    if ((ErrorLevel = 0) && (A_PriorKey = "CapsLock") ) ; Is a double tap on CapsLock?
    {
    SetCapsLockState, % GetKeyState("CapsLock","T") ? "Off" : "On" ; Toggle the state of CapsLock LED
    }
    return

    • /#22913630

      Вот, может, еще кому пригодятся полезные фичи, которые можно делать при помощи AutoHotKey:

      Ctrl-Alt-Shift-<пробел> переводит текущее окно в режим «always on top»

      Ctrl-Alt-Shift-<клик мыши> и Alt-Shift-<клик мыши> тройной и двойной клики мышки соответственно (это чтобы указательный палец правой руки меньше уставал):

      ^!+SPACE:: Winset, Alwaysontop, , A ; ctrl-alt-shift-Space to make current window always on top

      ^!+LButton:: ;ctrl-alt-shift-Leftclick to tripple click
      Send {Click}
      Send {Click}
      Send {Click}
      Return

      !+LButton:: ;alt-shift-Leftclick to double click
      Send {Click}
      Send {Click}
      Return

    • kotano
      /#22913794

      Ооо, это точно решит боль случайных нажатий без полного отключения капса. Спасибо!!!

      • Angel2S2
        /#22927668

        Вот жеж… Читаю статью вашу и думаю: «Да что же ты творишь со мной, kotano, у меня на CapsLock повешено везде (Win,*nix) переключение раскладки, как же мне теперь жить? И тут в комментах появляются justified и zila и как профессиональные психологи снимают мою боль и печаль ))))) Спасибо вам, ребята!!! Я как раз хотел нечто подобное на писать (в основном на AutoIT автоматизирую под винду), а тут вы почти готовый продукт подвезли :)

        Позвольте несколько вопросов.

        1. У меня часто бывает необходимость выполнить последовательно комбинации Crtl+F,Ctrl+V,Enter и хочется такую последовательность повесить на, не поверите, Ctrl+F. Может ли AHK с таким справиться?

        2. Может ли AHK работать с мышкой и умеет ли искать окна и его контроллы? У меня есть несколько программ, которые на работе используются, у которых нет возможности задать хоткеи, а только мышкой кнопки тыкать. На AutoIT можно найти нужное окно, в нем нужный контрол, определить его координаты, переместить на него мышку, тыкнуть этот контрол, вернуть мышку в исходную позицию. Такое на AHK можно сделать?

        3. Может ли AHK определить какое окно активно (в фокусе) и исходя из этого менять поведение хоткеев? Например, если активен excel, то Caps+w очистит все ячейки влево от текущей (Ctrl+Shift+Left,Delete), а если активен Word, то удалит слово слева (Ctrl+Backspace).

        • kotano
          /#22928144 / +1

          1. У меня часто бывает необходимость выполнить последовательно комбинации Crtl+F,Ctrl+V,Enter и хочется такую последовательность повесить на, не поверите, Ctrl+F. Может ли AHK с таким справиться?

          Да, конечно. Что-то такое подойдет:
          Control & f::
          Send ^f
          Send ^v
          Send {Enter}
          return

          Можно и в одну строчку уложиться, но так нагляднее. Вообще я не рекомендую биндить на такое распространенное сочетание. Вы можете сделать модифицированную версию моего скрипта и добавить туда сочетание `Caps+F`.
          В случае чего обращайтесь к документации.

          2. Может ли AHK работать с мышкой и умеет ли искать окна и его контроллы? У меня есть несколько программ, которые на работе используются, у которых нет возможности задать хоткеи, а только мышкой кнопки тыкать. На AutoIT можно найти нужное окно, в нем нужный контрол, определить его координаты, переместить на него мышку, тыкнуть этот контрол, вернуть мышку в исходную позицию. Такое на AHK можно сделать?

          Я видел продвинутые варианты работы с мышкой через AHK, и, думаю, вы сможете найти что-то подобное на просторах интернета. Также обязательно посмотрите на творения народных умельцев. Если не получится — всегда можно совместить использование AutoHotkey и привычного вам AutoIT.

          3. Может ли AHK определить какое окно активно (в фокусе) и исходя из этого менять поведение хоткеев? Например, если активен excel, то Caps+w очистит все ячейки влево от текущей (Ctrl+Shift+Left,Delete), а если активен Word, то удалит слово слева (Ctrl+Backspace).

          Думаю, эта функция это то, что вам нужно)

          К сожалению, у меня нет серьезных навыков программирования на AutoHotkey, я использую его только для одной цели, но, надеюсь я сумел вам помочь)

          • Angel2S2
            /#22928884

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

            Вообще я не рекомендую биндить на такое распространенное сочетание.
            Это был чисто теоретический интерес ;)

            Также обязательно посмотрите на творения народных умельцев.
            Ого… Я всегда думал, что AHK — это просто хоткей-менеджер… Оказывается это целый язык программирования (грубо говоря). Посмотрел так же документацию, удивлен количеством функций и возможностями.

            надеюсь я сумел вам помочь)
            Да, сумели, за что большое спасибо! Сегодня вечером смогу реализовать часть своих хотелок для удобства работы и отказаться от Comfort Keys, который на данный момент использую.

            • /#22930280 / +1

              У меня один из скриптов сделан исключительно для работы в программе Premiere Pro. Он начинается следующим текстом:

              #if WinActive("ahk_class Premiere Pro")

              Видимо, это то, что вам нужно. Я, не программист, но часто можно найти куски скриптов в разных местах интерната с тем, чтобы из них сделать что-то для себя. Вообще, AHK сильно выручает там, где нет возможности указать горячие клавиши в приложении напрямую. Ну или повесить на клавиши часто повторяющиеся действия. Вот, например, F4 заменяет клик мыши, «выделить всё» и «вставить».

              F4:: ; F4 to replace all
              SetKeyDelay, 100, 100
              MouseClick
              Send ^a^v
              Return

              • Angel2S2
                /#22930304

                Да, это то что нужно. Спасибо!

    • S-e-n
      /#22916250

      А на ctrl+Capslock перевести не проще?

  7. Cheater
    /#22913796

    Способ, которым Vim назначает биндинги в <N>, за исключением hjkl и некоторых других команд, является фонетическим (как вариант, мнемоническим), а не семантическим. [C]hange [w]ord и т.д. Семантический способ как раз у вас: вы назначаете той же C семантику "копирования", единообразно с Ctrl+C, и так далее.


    Очень правильная идея в основе (перегруппировка клавиш операций по удобству/лёгкости доступа, а не по названию операции), но реализация делает слишком много допущений о приложении, например что ^backspace удаляет слово. По факту всё заточено под 1 редактор.


    PS: на иллюстрации с раскладкой 2 раза PgUp и нет PgDn, видимо опечатка? И что-то странное с действиями на hjkl, не консистентно с вимом, хотя мб так и предполагалось. В тч движение влево на J = самое редкое из 4 базовых движений на самой ценной клавише на клавиатуре наряду с пробелом.

    • kotano
      /#22917700

      > Способ, которым Vim назначает биндинги в , за исключением hjkl и некоторых других команд, является фонетическим (как вариант, мнемоническим), а не семантическим. [C]hange [w]ord и т.д. Семантический способ как раз у вас: вы назначаете той же C семантику «копирования», единообразно с Ctrl+C, и так далее.
      на иллюстрации с раскладкой 2 раза PgUp и нет PgDn, видимо опечатка?

      Согласен. Подправлю)

      > Очень правильная идея в основе (перегруппировка клавиш операций по удобству/лёгкости доступа, а не по названию операции), но реализация делает слишком много допущений о приложении, например что ^backspace удаляет слово.

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

      > По факту всё заточено под 1 редактор.

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

      > И что-то странное с действиями на hjkl, не консистентно с вимом, хотя мб так и предполагалось. В тч движение влево на J = самое редкое из 4 базовых движений на самой ценной клавише на клавиатуре наряду с пробелом.

      Да, базовые движения повторяют расположение привычных всем стрелочек, и не подразумевают консистентность с Вимом. По поводу движения влево мне сложно согласиться, но возможно я просто слишком привязался к своему скрипту. Я предлагаю вам попробовать хотя-бы ненадолго воспользоваться скриптом и описать свои ощущения. Если вы решите, что есть более удачное расположение клавиш, то всегда буду рад вашим предложениям здесь или на странице репозитория.

      В виме, как вы сказали, мнемоническйи принцип расположения некоторых клавиш, из-за которого, например, клавиша i отдана под режим insert. В capsKeys за «переключение режимов» отвественна клавиша CapsLock и поэтому мы можем найти более удобное применение освободившимся клавишам на буквенном ряду.
      Еще один аргумент против фонетического/мнемонического принципа — различные раскладки клавиатур. Если пользователь использует нестандартную раскладку, то расположение некоторых клавиш может вызывать сильный дискомфорт и даже если оставить сочетания вима на тех же местах, то вся польза мнемоники будет сведена на нет (например, клавиша C в раскладке Дворака не будет ассоциироваться с режимом insert).

  8. Black_and_green
    /#22913798

    Хотел бы дополнить статью сочетанием ctrl+left(right). Обычное движение по словам, но поддерживается везде и прямо из коробки.
    Вим это круто, но требует доп настроек, привыкания и полного изменения workflow.

    • kotano
      /#22913842

      Точно, я забыл упомянуть про эти сочетания, так как оно реализовано через Caps+Alt(Space) в AHK скрипте. Спасибо!


      Вим это круто, но требует доп настроек, привыкания и полного изменения workflow.

      Согласен, именно поэтому я предложил использовать capsKeys, который переносит часть опыта использования Vim на всю систему, и при этом почти безболезненно (осторожно, вызывает сильнейшее привыкание и абсолютную беспомощность при отказе).

  9. Ghost_nsk
    /#22913832

    претендовать на кунг-фу и не вспомнить про Ctrl+R в bash — не серьезно.

  10. zila
    /#22917410

    Пробую освоить слепую печать, но мне не понравилось, что много кликов приходиться на мизинец, а на большой палец только пробел. И в AutoHotkey настроил клавиши перемещения на SPACE + EDSF и Backspace на SPACE + J.

    • kotano
      /#22917444

      Не возникает ли у вас проблем из-за того, что у Space есть конкретная функция вставки пробела и его сложно использовать в качестве клавиши-модификатора?

      • zila
        /#22917838

        Если Space зажат, то да он не сможет печатать пробелы при удержании. Я думал добавить пробел еще на другую комбинацию, например, SPACE+K и использовать если надо несколько вставок подряд.

        Скрипт не мой.

        #MaxHotkeysPerInterval 200
        ModActivateDelay := 100

        *Space::
        If SpacePressed ; AutoRepeat defense
        Return
        SpacePressed:=true
        SetTimer ModActivate, % "-" ModActivateDelay
        Return
        *Space Up::
        SpacePressed:=false
        SetTimer ModActivate, Off
        If ((A_PriorKey = "Space") OR !ModActive)
        Send {Blind}{Space}
        ModActive := false
        Return
        ModActivate:
        ModActive := true
        Return

        #If (GetKeyState("Space", "P") && ModActive)
        Left::WinMinimize A
        Up::WinMaximize A
        *vk45::SendRemap() ; e
        *vk44::SendRemap() ; d
        *vk53::SendRemap() ; s
        *vk46::SendRemap() ; f
        *vk4A::SendRemap() ; j
        #If

        SendRemap() {
        Static SendRemapArr:={e: "{Up}", d: "{Down}", s: "{Left}", f: "{Right}", j: "{Backspace}"}
        Send % "{Blind}" SendRemapArr[GetKeyName(SubStr(A_ThisHotkey, 2))]
        }

  11. Nikcet
    /#22925458 / +2

    Спасибо за статью!
    В копилку:


    VS Code: Ctrl + Shift + Enter — перемещает текущую строку вниз, а курсор ставит в начало новой чистой строки.

    • kotano
      /#22925466

      Спасибо! Я использовал это сочетание в видео, но забыл упомянуть в тексте)