Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
292 changes: 292 additions & 0 deletions uk/vim.md
Original file line number Diff line number Diff line change
@@ -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 <filename> # Відкрити <filename> у vim
:help <topic> # Відкрити вбудовану довідку про <topic>, якщо вона існує
: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<character> # Перейти вперед і зупинитися на <character>
t<character> # Перейти вперед і зупинитися прямо перед <character>

# Наприклад,
f< # Перейти вперед і зупинитися на <
t< # Перейти вперед і зупинитися прямо перед <

# Переміщення по словах

w # Переміститися вперед на одне слово
b # Переміститися назад на одне слово
e # Перейти до кінця поточного слова

# Інші команди для переміщення по тексту

gg # Перейти до початку файлу
G # Перейти до кінця файлу
:NUM # Перейти до рядка з номером NUM (де NUM - будь-яке число)
H # Перемістити курсор до верхнього краю екрана
M # Перемістити курсор до середини екрана
L # Перемістити курсор до нижнього краю екрана

```

## Довідкова документація

Vim має вбудовану довідкову документацію, до якої можна отримати доступ за допомогою `:help <topic>`.
Наприклад, `:help navigation` викличе документацію про те, як орієнтуватися у вашому робочому просторі!

`:help` також можна використовувати без параметра. Це відкриє стандартне вікно довідки,
яке покликане зробити початок роботи з vim більш зрозумілим!

## Режими

Vim ґрунтується на концепції **режимів**.

- Нормальний режим (Normal Mode) - стандартний режим, у якому Vim відкривається за замовчуванням; використовується для навігації та виконання команд
- Режим вставки (Insert Mode) - використовується для внесення змін у файл
- Візуальний режим (Visual Mode) - використовується для виділення тексту та виконання операцій над ним
- Режим командного рядка (Ex Mode) - використовується для переходу в командний рядок у нижній частині екрана (зі знаком ':') для введення команд

```
i # Переводить vim у режим вставки перед курсором
a # Переводить vim у режим вставки після курсора
v # Переводить vim у візуальний режим
: # Переводить vim у режим командного рядка
<esc> # 'Вихід' з будь-якого режиму назад у нормальний режим

# Копіювання та вставка тексту
# Операції за замовчуванням використовують регістр 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)