Vim (скор. від Vi Improved, вимовляється Вім) – текстовий редактор, створений на основі старішого vi. Нині це один з найпотужніших текстових редакторів з повною свободою настройки та автоматизації, і створених завдяки цьому розширень і надбудов.

А найголовніше - все в ньому спрямовано на те, щоб збільшити швидкість редагування файлів. Починаючи від того, що клавіша гортання тексту вниз (а це найчастіша дія при читанні) J знаходиться прямо під вказівним пальцем, і закінчуючи тим, що монотонні повторювані дії можна робити за секунди, записавши послідовність команд в макрос. Звісно ціна цього - доволі незвичний інтерфейс. Хто б міг подумати, що клавіша l переміщує курсор вправо, а не Left. Та до цього можна звикнути за кілька днів, а після цього все життя мучитись, коли доводитиметься користуватись чимось менш зручним.

Перед тим як почати - маленька історія:

Двоє лісорубів рубали дерева. Обидва працювали з неабиякою вправністю, проте кожен робив це у свій спосіб. Перший рубав дерево вперто і завзято, зупинявся лише на якусь хвилинку аби передихнути!

Другий же щогодини робив собі тривалу перерву. Коли почало смеркати, перший зробив тільки половину справи, а другий таки зрубав своє дерево. Перший не повірив своїм очам: «Як тобі вдалося закінчити так швидко?»

Другий усміхнувся й відповів: «Ти бачив, що я кожної години робив собі перерву. Проте ти не помітив, що перепочинок я використовував для того, аби підгострити сокиру».

Мораль цієї історії - час від часу гостріть сокиру. Не обов'язково освоювати ввесь Vim за один раз. Для початку пройдіть розділ "Перші кроки". А потім, можете час від часу гострити свої навички - отримувати нові знання. Люди кажуть, що з Vim це можна робити років з двадцять.

Зовнішній вигляд версії редактора з графічним інтерфейсом

Перші кроки ред.

Щоб відкрити файл до редагування в Vim пишуть:

vim назва_файлу.txt

Заодно ця команда дозволить вам дізнатись чи він встановлений...

Щоб почати вивчення скопіюйте текст статті tutor в текстовий файл через якийсь інший редактор, і відкриваєте його для редагування в Vim. Подальші інструкції отримаєте вже там.

Переміщення по файлу ред.

Найчастіше у vi використовуються клавіші переміщення h, j, k. l або стрілки вліво, вниз, вверх, вправо. Можна використовувати швидкі клавіші:

  • Ctrlf — на сторінку (екран) вниз
  • Ctrlb — на сторінку (екран) вгору
  • Ctrld — на півсторінки (екрана) вниз
  • Ctrlu — на півсторінки (екрана) вгору
  • Ctrly — на строку вверх, без змінення положення курсора
  • Ctrle — на строку вниз, без змінення положення курсора
  • 0 («нуль») — у початок поточного рядку;
  • ^ — у початок поточного рядку (до першого непробільного символу);
  • $ — у кінець поточного рядку
  • w — на слово вправо
  • b — на слово вліво
  • W — до пробілу вправо
  • B — до пробілу вліво
  • } — абзац вниз
  • { — абзац вгору
  • gg — перейти на початок файлу
  • G — перейти у кінець файлу
  • <number>G — перейти на конкретний рядок <number>
  • /<text>CR — перейти до <text>
  • ?<text>CR — те ж саме, але шукати назад
  • n — повторити пошук
  • N — повторити пошук назад
  • [[ — в початок функції
  • '' — до місця виконання команди [[

Переміщення по екрану ред.

Змінення положення екрана без змінення положення курсору.

  • z- — змістити сторінку так щоб рядок з курсором опинився внизу.
  • z↵ Enter — змістити сторінку так щоб рядок з курсором опинився зверху
  • z. або zz — змістити сторінку так щоб рядок з курсором опинився посередині

Переміщення у межах екрану

  • H — переміщення на верхні рядок екрану 5H на п'ять рядків нижче верхнього рядку)
  • M — переміщення на середній рядок екрану
  • L — переміщення на останній рядок екрану (5L на п'ять рядків вище нижнього рядку)

Редагування тексту ред.

Ці команди переводять редактор Vim у режим вводу. Команди економлять час на переміщення курсору або переводять його на новий рядок. У командах вводу тексту можуть застосовуватись числові аргументи (за виключенням O та o). Наприклад, команда 20iПривітESC вставляє 20 слів "Привіт".

  • i — перейти у режим вводу з поточної позиції
  • a — перейти у режим вводу після курсору
  • I — переміститися на початок рядку та перейти у режим вводу
  • А — переміститися у кінець рядку та перейти у режим вводу
  • o — перейти у режим вводу з нового рядку під курсором
  • O — перейти у режим вводу з нового рядку над курсором
  • s — заміняє вказану кількість символів (видаляє вказану кількість символів та переходить у режим вводу). На відміну від команди с яка може видалити шматок тексту не менше слова (cw), командою s можна видалити будь яку кількість символів. Наприклад 4s видалить чотири символи з того який заходиться під курсором. Ця команда використовується для заміни одного або кількох символів на інші символи.
  • S - видаляє увесь поточний рядок і переходить у режим вводу. Число перед командою вказує скільки треба видалити рядків починаючи з поточного. Наприклад 4S видалить чотири рядка разом з поточним.
  • R — перейти у режим вводу з заміною тексту (аналог insert). Символи під курсором заміняються на символи що вводяться. Команда застосовується коли невідомо скільки потрібно буде змінити символів на інші (інакше можна було б використати команду s з вказанням кількості замінних символів, наприклад 7s). При видалення введених символів повертаються ті які були до вводу команди. Такий режим зберігається до кінця рядку. При введенні нового рядку (по натисненню ↵ Enter), відбувається не перехід на інший рядок з тим же режимом заміни тексту, а створення нового рядку.
  • r — заміняє один символ який знаходиться під курсором на той якій слідує за командою. При цьому не відбувається вихід з командного режиму (не треба натискати ESC після змінення тексту). Наприклад, команда ry - символ під курсором заміняє на "y". Числовий показник вказує скільки необхідно замінити символів на даний. Наприклад, 3ry вставляє три символи "y".

Видалення ред.

  • x — видалити символ під курсором (<число>x видаляє вказане число символів починаючи з того який знаходиться під курсором)
  • X — видаляє символ перед курсором
  • d — використовується разом з командами переміщення. Видаляє символи з поточного положення курсору до положення після вводу команди переміщення. Наприклад:
  • dw - видаляє символи з поточного до кінця слова включно з пробілом після слова. Щоб видалити символи до кінця слова залишаючи пробіл використовується команда de,
  • dE - видаляє символи з поточного до кінця слова включно з символами пунктуації, але залишає пробіл після слова,
  • diw - видаляє слово під курсором,
  • dd — видаляє поточний рядок (вирізати)
  • d<число>d або <число>dd — стирання числа рядків починаючи з поточного,
  • db - видаляє символи з поточного до початку слова (видалення у зворотному напрямку)
  • d0 - видаляє символи з початку рядку до поточного положення курсора
  • d$ або D - видаляє символи з поточного положення курсору до кінця рядку.
  • ESC - повернутися у звичайний режим перегляду
  • U - відмінити останню дію

Великі і малі літери відповідають різним командам тому треба бути уважним до регістру вводу і слідкувати чи випадково не натиснута клавіша CAPS LOCK.

Окремі аспекти ред.

  1. Взаємодія з зовнішніми програмами
  2. Згортання
  3. Шаблони пошуку
  4. Різноманітні поради

Перший хак ред.

Хоча, можливо перед тим як почати вивчення можете зробити одне вдосконалення інтерфейсу. Це варто зробити тому, що коли ви створите звичку використовувати незручні клавіші, вам важко буде від неї позбавитись. А тому простіше вчитись одразу найкращих способів роботи.

Створіть файл ~/.vimrc (в будь-якому текстовому редакторі), і додайте до нього такий рядок: map ; : тепер у всіх режимах окрім вводу тексту, ; буде емулювати натиснення :, а остання використовується набагато частіше. Це зекономить вам купу натискань ⇧ Shift, і енергії вашого мізинця :) .

Посилання ред.

  1. Шпаргалка Vim
  2. Шпаргалка схожа на періодичну систему
  3. http://stackoverflow.com/questions/1218390/what-is-your-most-productive-shortcut-with-vim