Швидке введення тексту вже не є достатньо масштабованим. Джерело: Pixabay
Для одних Vim — це красива реліктова програма з минулого. Для інших — це той набридливий інструмент, від якого потрібно втікати щоразу, коли потрібно написати повідомлення для коміту злиття.
Сьогодні я познайомлю вас із цим живописним текстовим редактором та його чудесами, і покажу вам, чому ми досі його використовуємо 26 років після його першого випуску.
Отже, відкрийте свій термінал в обраному робочому каталозі і введіть
vim sample.txt
щоб ми могли розпочати!
Перші кроки: навігація, редагування та вихід.
Щоразу, коли ви відкриваєте Vim для роботи з файлом, є три основні речі, які ви, ймовірно, захочете зробити:
- Прочитати вміст файлу
- Написати в файл
- Вийти з програми
Навігація
Для навігації по файлу в Vim використовуйте клавіші h, j, k та l. Ці команди називаються рухами (motions), оскільки вони переміщують курсор.
Клавіші h і l переміщують курсор по горизонталі (по одному символу за раз), а j і k — по вертикалі (по одному рядку за раз). Якщо покласти руку на ці клавіші, то розкладка виглядає досить логічно.
Декілька людей мають труднощі з запам’ятовуванням, яка клавіша відповідає за переміщення вгору, а яка — вниз. Порада: j трохи схоже на стрілку, яка вказує вниз.
Як загальне правило, вважається поганою практикою — хоча це й можливо — використовувати стрілки для переміщення в Vim. Звикайте до використання hjkl, і я обіцяю, що ви помітите значне збільшення швидкості.
Повторення
Якщо ви вже впевнено переміщаєтесь по файлу, рухаючись один символ або рядок за раз, спробуйте натискати число (будь-яке число, навіть багатозначне) перед рухом. Ви перескочите на стільки разів, скільки вказано в числі.
Це дуже потужна концепція у Vim: Повторення. Ви коли-небудь редагували текстовий файл і робили одне й те ж саме знову і знову? Особливо щось дуже буденне, як видалення лапок і заміна їх комами? Vim вас покриє: просто зробіть це один раз і натисніть . для повторення. Введіть число і натисніть . знову, якщо хочете повторити це стільки разів, скільки потрібно.
Редагування
Переміщатися по текстовому файлу та читати його вміст — це добре, але що, якщо нам потрібно змінити деякі його частини? Не переживайте, редагування файлу таке ж просте, як натискання клавіші i. Це переведе вас з нормального режиму в режим редагування.
Більшість команд Vim доступні тільки в нормальному режимі, і вхід у режим редагування зазвичай не рекомендується, його слід уникати, коли це можливо. Однак, коли ви потрапляєте в режим редагування, Vim поводиться як будь-який інший текстовий редактор (з підсвічуванням синтаксису), що робить його функціональність надмогутньою порівняно з типовим блокнотом.
Щоб вийти з режиму редагування, натисніть клавішу ESC.
Вихід
Щоб вийти з Vim, увійдіть в нормальний режим і натисніть :wq, якщо хочете зберегти зміни (записати та вийти), або q!, якщо хочете вийти без збереження.
Більше команд: Дійсно корисні функції.
Редагування файлів з термінала може змусити вас виглядати як крутий хакер чи ще щось, але чому ми повинні використовувати цю текстову програму замість доброго старого Sublime Text? Відповідь — це команди.
Тисяча способів видалити текст
Хочете видалити частину файлу? Ви можете увійти в режим редагування і натискати backspace для кожного символу. Але це все ж не переплюне використання Sublime і натискання ctrl+shift+left для вибору цілого слова перед видаленням.
Якщо ви хочете справді використовувати всю потужність Vim, спробуйте натискати клавішу d. Якщо натиснути її один раз, вона нічого не зробить. Але вона не буде просто так чекати, вона дійсно чекає на команду. Дайте їй рух, як ми вивчили сьогодні (l, 5j, будь-який, який вам до вподоби), і вона «поглине» ці символи.
Для прикладу, dNl для будь-якого числа N видалить наступні N літер від курсора.
Нові рухи
- e : Переміщує курсор в кінець поточного слова (визначеного як конкатенація літер, цифр і підкреслень).
- w : Переміщує його на початок наступного слова.
Отже, якщо в мене є цей текст:
Hello there, general.
І курсор стоїть на літері H. Коли я натискаю de в нормальному режимі, рядок виглядатиме так:
there, general.
А використання dw залишить його таким:
there, general
Зверніть увагу, що в другому прикладі немає пробілу перед «there».
Далі ми можемо натиснути i, щоб вставити замінне слово після видалення «Hello». Але на щастя, є ще більш плавний спосіб це зробити: команда c (для change). Натискання c і руху є еквівалентом натискання d+motion+i.
Це починає виглядати краще, але все ж не може перевершити натискання shift+home/end і видалення цілої строки за кілька натискань, правильно? Ну, я бачу це і пропоную вам використати рухи $ і 0.
- 0: переміщує курсор до першого символу поточного рядка.
- $: переміщує курсор до останнього символу в рядку.
Але є ще швидший спосіб видалити весь поточний рядок: dd.
А якщо ви хочете видалити кілька рядків? dxd видалить наступні x рядків.
Загальні корисні команди Vim
Тепер, коли ми обговорили корисність Vim для редагування коду (і тільки коду — я б не рекомендував використовувати Vim для інших типів текстового редагування), це має стати очевидним.
Ось кілька інших команд, які вам може захотіти перевірити:
- o і O: створюють новий рядок вище або нижче поточного, відповідно, і входять у режим редагування.
- v : входить у візуальний режим (visual mode), щоб вибрати текст, до якого ви зможете застосувати інші команди.
- y або Y: виламує (копіює) вибраний текст або поточний рядок відповідно.
- p : вставляє (put) скопійований текст. Зверніть увагу, що вилучення переміщує текст в особливий буфер, зарезервований для Vim, а не в стандартний буфер обміну. Таким чином, ви можете ефективно управляти двома різними буферами обміну! Один ви можете вставити за допомогою ctrl+shift+v як зазвичай (в режимі редагування), а інший — через p (в нормальному режимі).
- * : знаходить наступне входження поточного слова.
Коли я пишу програмне забезпечення, я часто повторюю рядки, щоб змінити кілька слів, тому я вважаю команду Yp неймовірно корисною.
Висновок
Я ледве торкнувся основ цієї теми, але сподіваюся, що хоча б переконав вас спробувати Vim самостійно. Він, можливо, не замінить IDE, якщо ви програмуєте на Java або C++, особливо якщо ви працюєте з фреймворками і авто-завершення допомагає вам. Але коли я працюю з C або Python, я зазвичай обираю його як редактор за замовчуванням. І інколи, коли мені потрібно швидко трансформувати рядок, редагування в Vim займає менше часу, ніж написання скрипту на Bash або Python.
Якщо ви хочете дізнатися більше, дайте знати, бо я, ймовірно, продовжу цю тему в серії. Але я також раджу вам спробувати програму самостійно і запустити програму vimtutor у вашому терміналі (вона зазвичай попередньо встановлена на Linux і Mac). Якщо ви хочете справді навчитися оптимізувати використання Vim після проходження vimtutor, цей дуже "гікерський" і дуже крутий сайт може вас зацікавити.
Сподіваюся, ви знайшли цю статтю корисною або цікавою, і, як завжди, буду радий будь-яким відгукам, чи була якась частина неправильною, або вам сподобалась частина цього посібника.
Стежте за мною для більшої кількості підручників з програмування, порад і трюків, і не забудьте підписатися на мене в Twitter, щоб бути в курсі моїх статей.
Також доступно на strikingloo.github.io
Перекладено з: Vim: How to Start Using The Text Editor for Developers