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