Vim
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.
Окремі аспекти
ред.Перший хак
ред.Хоча, можливо перед тим як почати вивчення можете зробити одне вдосконалення інтерфейсу. Це варто зробити тому, що коли ви створите звичку використовувати незручні клавіші, вам важко буде від неї позбавитись. А тому простіше вчитись одразу найкращих способів роботи.
Створіть файл ~/.vimrc
(в будь-якому текстовому редакторі), і додайте до нього такий рядок:
map ; :
тепер у всіх режимах окрім вводу тексту, ; буде емулювати натиснення :, а остання використовується набагато частіше. Це зекономить вам купу натискань ⇧ Shift, і енергії вашого мізинця :) .
Посилання
ред.- Шпаргалка Vim
- Шпаргалка схожа на періодичну систему
- http://stackoverflow.com/questions/1218390/what-is-your-most-productive-shortcut-with-vim