Я пишу код. Много кода. Как и вы, я подозреваю. И я люблю писать код продуктивно.
Что такое продуктивно писать код в моем понимании? Когда вам не надо тянуться пальцами за тачпадом, рукой за мышкой - для навигации. Когда для выделения текста вам не нужно кликать по 2-3 раза на строку/слово или с зажатым шифтом ждать пока курсор не протянется до нужного места, считая секунды жизни проведенные за наблюдением движения полоски пикселей на экране (а может быть делать комбинацию крабом одной руки чтобы другая могла стрелками прыгать по словам).
Продуктивно - это когда вы жмете 3 кнопки - и у вас заменяется слово на то, что было в буфере обмена. Когда вы жмете 3 кнопки - и прыгаете вверх вниз по файлу куда вам заблагорассудится.
Инструменты, предоставленные нам нашими любимыми редакторами, чаще всего упрощают жизнь и ситуации, описанные выше. Какие-то горячие клавиши, свои комбинации (зачастую разные в каждом редакторе).
Но ничего не сравнится с возможностью иметь одинаковый набор инструментов, которые в любом месте (даже в терминале на удаленном сервере!) помогут вам выполнять задачи быстро и с привычным вам удобством!
🤔 Мой главный аргумент про навигацию Vim: ребята, это словно обучение печатать на более удобной новой клавиатуре, где клавиши в непривычных для вас местах (переход от какой-нибудь ноутбуковой клавиатуры со своими правилами и проседающими кнопками на механическую клавиатуру Ducky/Leopold/HHKB, спроектированную для удобной и приятной печати): вы пострадаете несколько дней, может быть неделю, но как же вы будете счастливы что вы это сделали! И навык останется с вами навсегда!
Все вы знаете про редактор Vim
Мы не будем говорить тут о том, как начать и работать в этом прекрасном на мой взгляд, но довольно сложном редакторе. Нам интересно, как использовать лакомый кусочек, доступный каждому)
Для любителей Vim - было создано огромное количество плагинов для популярных программ для кодинга (Visual Studio 2019/Code/For Mac, Sublime Text, Atom, Notepad++, все JetBrains редакторы, многие другие)
Чтобы установить - достаточно в предоставленном (если есть) package manager-е ввести vim и установить плагин с достойным рейтингом.
Некоторые из этих плагинов не предоставляют в полной мере все возможности редактора Vim, но нам они и не нужны.
Что нам нужно: Vim навигация.
Давайте проведем небольшой экскурс в полезные для нас режимы работы в Vim-mode.
При начале работы редактор всегда в режиме Normal Mode.
Normal Mode - режим где вы работаете с курсором в тексте. Здесь вы не можете писать текст, вы управляете курсором, выделениями текста и комбинациями клавиш для упрощения работы с кодом.
Комбинации, полезные для начала (указанные комбинации набираются очередно, не одновременное зажатие):
- hjkl клавиши: эквивалент стрелок, в таком виде: h(← )j(↓)k(↑)l(→) - влево вниз вверх вправо
- цифра + одну из hjkl: переход на n символов/строк в нужную сторону (пример 15j - прыжок на 15 строк вниз, 22l - прыжок на 22 символа вправо)
- gg: прыжок в самый первый символ первой строки файла, грубо говоря "в начало файла"
- G (g с зажатым Shift): прыжок в первый символ последней строки (грубо говоря в конце файла)
- e: прыжок на слово вперед (вправо) (работает с цифрами в начале для увеличения кол-ва нажатий, как hjkl - пример: 2e - прыжок на 2 слова вперед)
- b: прыжок на слово назад (тоже работает с цифрами в начале)
- i: вход в Insert Mode (режим ввода текста) в месте, где курсор в данный момент
- a: вход в Insert Mode в следующем символе после курсора ввода
- dd: удалить строку, где находится курсор
- yy: скопировать строку, где находится курсор
- p: вставить, что сейчас в буфере обмена Vim
- o: вставить пустую строку ниже и войти в Insert Mode
- gd: зачастую доступная в IDE функция - перейти к объявлению символа, на котором находится курсор (класс/переменная/символ/модуль/функция и тд)
🤍 Дополнительные клавиши вы всегда можете найти в интернете. Шпаргалок с удобными комбинациями огромное множество! Я указал лишь малое количество клавиш для Normal Mode, а их намного больше. Вы можете упростить многие вещи превратив их в всего несколько нажатий клавиш, что уже находятся у вас под пальцами.
🤔 Почему использование hjkl + других клавиш (e, b и другие) считается более продуктивным способом путешествия курсора по тексту, чем стрелки или тачпад/мышь? Дело в том, что для того, чтобы перенестись куда-то при помощи стрелок, вам нужно наклонить руку (что зачастую неудобно и неприятно, если клавиши стрелок мелкие и справа снизу от вашей руки) или поднять ее над клавиатурой и перенести на нужные клавиши, что а) требует времени/усилий и б) вы теряете ваше уверенное предыдущее положение для печати - вам нужно будет в него снова вернуться вашей рукой. Для того, чтобы вам перенести курсор тачпадом/мышью - вам нужно полностью отказаться одной рукой от клавиатуры и перенести ее в другое место. Также вам нужно будет снова на нее вернуться. С Vim в режиме Normal Mode вам достаточно нажимать те же привычные кнопки, которые вы используете при наборе текста. Не заставляя пальцы совершать дальние путешествия по клавиатуре.
Insert Mode - режим для ввода текста. В нем вы просто печатаете что хотите.
В нем все клавиши работают так, словно вы и не используете Vim вовсе. Если вам захочется комбинировать ваши любимые комбинации для навигации по тексту (стрелки влево вправо, прыжки по словам) в вашем редакторе, здесь они будут работать как обычно. При начале обучения начинающие зачастую комбинируют использование навигации и в Normal Mode и свои привычные в Insert Mode. Лучше всего происходит обучение при постепенном уменьшении использования старых комбинаций для путешествий по тексту в пользу перехода в Normal Mode и работе в нем.
❕Для входа в Insert Mode самая часто используемая клавиша и легкая для запоминания - i (легко запомнить так как слово Insert начинается с нее). Для выхода из Insert Mode - нажмите клавишу Escape, и вы выйдете в Normal Mode
Вот, в общем-то, и все :)
Навигация, которую плагины Vim предоставляют в ваших любимых редакторах - большое преимущество при развитии вашей печати, скорости набора кода и работы с ним и удобстве работы в любом редакторе без потери продуктивности. А также: упрощение работы вашим рукам, мышцам и уменьшение риска боли в кистях при долгой работе с кодом.
Ваши руки скажут вам спасибо, а ваши и друзья коллеги будут восхищены вашими виртуозными навыками работы с кодом!
Спасибо за чтение, и надеюсь, что мне удалось вас обольстить и вы попробуете себя этим новым способом работы с текстом)