Vim

завершено на 75%
Матеріал з Вікіпідручника

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