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