diff --git a/uk/vim.md b/uk/vim.md new file mode 100644 index 0000000000..16aa2e93b2 --- /dev/null +++ b/uk/vim.md @@ -0,0 +1,292 @@ +--- +contributors: + - ["RadhikaG", "https://github.com/RadhikaG"] + - ["kaymmm", "https://github.com/kaymmm"] +translators: + - ["Vitalii Putiienko", "https://github.com/delaklo"] +--- + +[Vim](http://www.vim.org) +(Vi IMproved) - це клон популярного текстового редактора для Unix. Він був розроблений +з метою підвищення швидкості та продуктивності й повсюдно використовується в +більшості Unix-подібних систем. У ньому є безліч клавіатурних комбінацій для швидкої навігації +до певних точок у файлі та оперативного редагування. + +`vimtutor` - це чудова програма, яка навчить вас користуватися `Vim`. +Вона постачається разом з пакетом vim під час встановлення. +Ви можете просто запустити "vimtutor" у командному рядку, щоб відкрити цей посібник. +Він проведе вас через усі основні функції у `vim`. + +## Основи навігації у Vim + +``` + vim # Відкрити у vim + :help # Відкрити вбудовану довідку про , якщо вона існує + :q # Вийти з vim + :w # Зберегти поточний файл + :wq # Зберегти файл та вийти з vim + :q! # Вийти з vim без збереження файлу + # ! *примусово* виконує :q, ігноруючи незбережені зміни + ZQ # Вийти з vim без збереження файлу + :x # Зберегти файл (лише якщо його було змінено) та вийти з vim + ZZ # Зберегти файл (лише якщо його було змінено) та вийти з vim + + u # Скасувати останню дію + CTRL+R # Повернути назад скасовану дію + + h # Перемістити курсор на один символ ліворуч + j # Перемістити курсор на один рядок униз + k # Перемістити курсор на один рядок угору + l # Піеремістити курсор на один символ праворуч + + Ctrl+B # Переміститися на одну сторінку назад + Ctrl+F # Переміститися на одну сторінку вперед + Ctrl+D # Переміститися на пів сторінки вперед + Ctrl+U # Переміститися на пів сторінки назад + + # Переміщення в межах рядка + + 0 # Перейти на початок рядка + $ # Перейти в кінець рядка + ^ # Перейти до першого непорожнього символу в рядку + + # Пошук у тексті + + /word # Підсвічує всі входження слова після курсора + ?word # Підсвічує всі входження слова до курсора + n # Пересуває курсор до наступного входження після пошуку + N # Пересуває курсор до попереднього входження + + :%s/foo/bar/g # Замінити 'foo' на 'bar' у кожному рядку файлу + :s/foo/bar/g # Замінити 'foo' на 'bar' у поточному рядку + :%s/\n/\r/g # Замінити символи нового рядка \n на символи CR \r + :'<,'>s/foo/bar/g # Замінити 'foo' на 'bar' у кожному рядку виділеній області + + # Переміщення до символів + + f # Перейти вперед і зупинитися на + t # Перейти вперед і зупинитися прямо перед + + # Наприклад, + f< # Перейти вперед і зупинитися на < + t< # Перейти вперед і зупинитися прямо перед < + + # Переміщення по словах + + w # Переміститися вперед на одне слово + b # Переміститися назад на одне слово + e # Перейти до кінця поточного слова + + # Інші команди для переміщення по тексту + + gg # Перейти до початку файлу + G # Перейти до кінця файлу + :NUM # Перейти до рядка з номером NUM (де NUM - будь-яке число) + H # Перемістити курсор до верхнього краю екрана + M # Перемістити курсор до середини екрана + L # Перемістити курсор до нижнього краю екрана + +``` + +## Довідкова документація + +Vim має вбудовану довідкову документацію, до якої можна отримати доступ за допомогою `:help `. +Наприклад, `:help navigation` викличе документацію про те, як орієнтуватися у вашому робочому просторі! + +`:help` також можна використовувати без параметра. Це відкриє стандартне вікно довідки, +яке покликане зробити початок роботи з vim більш зрозумілим! + +## Режими + +Vim ґрунтується на концепції **режимів**. + +- Нормальний режим (Normal Mode) - стандартний режим, у якому Vim відкривається за замовчуванням; використовується для навігації та виконання команд +- Режим вставки (Insert Mode) - використовується для внесення змін у файл +- Візуальний режим (Visual Mode) - використовується для виділення тексту та виконання операцій над ним +- Режим командного рядка (Ex Mode) - використовується для переходу в командний рядок у нижній частині екрана (зі знаком ':') для введення команд + +``` + i # Переводить vim у режим вставки перед курсором + a # Переводить vim у режим вставки після курсора + v # Переводить vim у візуальний режим + : # Переводить vim у режим командного рядка + # 'Вихід' з будь-якого режиму назад у нормальний режим + + # Копіювання та вставка тексту + # Операції за замовчуванням використовують регістр vim + # Його можна вважати власним буфером обміну vim + + # Yank ~ копіювати текст у регістр vim + y # Скопіювати те, що виділено + yy # Скопіювати поточний рядок + + # Delete ~ скопіювати текст і видалити з файлу + d # Видалити те, що виділено + dd # Видалити поточний рядок + + p # Вставити текст з регістру після позиції курсора + P # Вставити текст з регістру перед позицією курсора + + x # Видалити символ під курсором +``` + +## 'Граматика' vim + +Vim можна розглядати як набір команд у форматі +'Дієслово-Модифікатор-Іменник', де: + +- Дієслово - ваша дія +- Модифікатор - спосіб виконання дії +- Іменник - об'єкт, над яким виконується ваша дія + +Кілька важливих прикладів 'Дієслів', 'Модифікаторів' та 'Іменників': + +``` + # 'Дієслова' + + d # Видалити + c # Змінити + y # Скопіювати + v # Виділити візуально + + # 'Модифікатори' + + i # Усередині + a # Іззовні + NUM # Число (NUM - будь-яке число) + f # Шукає щось і зупиняється на ньому + t # Шукає щось і зупиняється перед ним + / # Знайти рядок після курсора + ? # Знайти рядок перед курсором + + # 'Іменники' + + w # Слово + s # Речення + p # Абзац + b # Блок + + # Приклади 'речень' + + d2w # Видалити 2 слова + cis # Змінити всередині речення + yip # Скопіювати всередині абзацу (поточний абзац) + ct< # Змінити текст до символу '<' + # Тобто змінити текст від поточної позиції до наступного '<' + d$ # Видалити до кінця рядка +``` + +## Деякі корисні скорочення та хитрощі + +``` + > # Збільшити відступ виділення на один блок + < # Зменшити відступ виділення на один блок + :earlier 15m # Повернути документ до стану, який був 15 хвилин тому + :later 15m # Скасувати команду вище + ddp # Поміняти місцями сусідні рядки, виконати dd, потім p + . # Повторити попередню дію + :w !sudo tee % # Зберегти поточний файл від імені root + :set syntax=c # Увімкнути підсвічування синтаксису для мови 'C' + :sort # Відсортувати всі рядки + :sort! # Відсортувати всі рядки у зворотному порядку + :sort u # Відсортувати всі рядки та видалити дублікати + ~ # Перемкнути регістр букв + u # Зробити виділений текст малими літерами + U # Зробити виділений текст великими літерами + J # Об’єднати поточний рядок із наступним + + # Згортання тексту + zf # Створити згортку з виділеного тексту + zd # Видалити згортку на поточному рядку + zD # Рекурсивно видалити всі вкладені або виділені згортки + zE # Видалити всі згортки у вікні + zo # Відкрити поточну згортку + zO # Рекурсивно відкрити всі вкладені або виділені згортки + zc # Закрити поточну згортку + zC # Рекурсивно закрити вкладені згортки + zR # Відкрити всі згортки + zM # Закрити всі згортки + za # Перемкнути стан поточної згортки (відкрити/закрити) + zA # Рекурсивно перемкнути стан вкладених згорток + [z # Перейти на початок поточної згортки + ]z # Перейти в кінець поточної згортки + zj # Перейти до початку наступної згортки + zk # Перейти до кінця попередньої згортки +``` + +## Макроси + +Макроси - це записані послідовності дій. +Під час запису макросу vim фіксує **кожну** дію та команду, +яку ви використовуєте, доки ви не зупините запис. При виклику макросу +він знову застосовує ту саму послідовність дій і команд до виділеного тексту. + +``` + qa # Почати запис макросу з іменем 'a' + q # Зупинити запис + @a # Виконати макрос +``` + +### Налаштування ~/.vimrc + +Файл `.vimrc` можна використовувати для налаштування Vim під час запуску. + +Ось зразок файлу `~/.vimrc`: + +```vim +" Приклад ~/.vimrc +" 2015.10 + +" Необхідно, щоб vim був iMproved +set nocompatible + +" Визначати тип файлу за назвою для авто-відступу, тощо +filetype indent plugin on + +" Увімкнути підсвічування синтаксису +syntax on + +" Покращене автодоповнення команд +set wildmenu + +" Пошук без урахування регістру, крім випадків, коли використовуються великі літери +set ignorecase +set smartcase + +" Якщо відкривається новий рядок без спеціальних правил відступу, +" зберігати такий самий відступ, як і в поточному рядку +set autoindent + +" Відображати номери рядків зліва +set number + +" Налаштування відступів, можна змінювати за власним бажанням + +" Кількість візуальних пробілів на один TAB +set tabstop=4 + +" Кількість пробілів, які вставляються при натисканні TAB у режимі редагування +set softtabstop=4 + +" Кількість пробілів, які використовуються при операціях відступу (>> і <<) +set shiftwidth=4 + +" Перетворити TAB на пробіли +set expandtab + +" Увімкнути розумне використання табуляції та пробілів для відступів і вирівнювання +set smarttab + +``` + +### Корисні посилання + +[Vim | Home](http://www.vim.org/index.php) + +`$ vimtutor` + +[A vim Tutorial and Primer](https://danielmiessler.com/study/vim/) + +[What are the dark corners of Vim your mom never told you about? (Stack Overflow thread)](http://stackoverflow.com/questions/726894/what-are-the-dark-corners-of-vim-your-mom-never-told-you-about) + +[Arch Linux Wiki](https://wiki.archlinux.org/index.php/Vim) \ No newline at end of file