summaryrefslogtreecommitdiffhomepage
path: root/ru-ru/vim-ru.html.markdown
blob: f43f99eb787823b1e6f6d23b9417140d06baaf5c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
---
category: tool
tool: vim
contributors:
    - ["RadhikaG", "https://github.com/RadhikaG"]
translators:
    - ["Anton Slukovskiy", "https://github.com/slukovskiy"]
filename: LearnVim-ru.txt
lang: ru-ru
---

[Vim](http://www.vim.org)
(Vi IMproved) это клон полулярного текстового редактора для Unix. Он разработан
с целью повышения скорости и продуктивности и повсеместно используется в 
большинство Юникс-подобных систем. В нем имеется множество клавиатурных 
сочетаний для быстрой навигации к определенным точкам в файле и быстрого 
редактирования.

## Основы навигации в vim

```
    vim <filename>   # Открыть <filename> в vim
    :q               # Выйти из vim
    :w               # Сохранить текущий файл
    :wq              # Сохранить и выйти
    :q!              # Выйти из vim не сохраняя файл

    :x               # Сохранить файл и выйти из vim, короткая версия :wq

    u                # Отмена последней команды
    CTRL+R           # Отмена отмены

    h                # Переместить курсор на один символ влево
    j                # Переместить курсор на один символ вниз
    k                # Переместить курсор на один символ вверх
    l                # Переместить курсор на один символ вправо

    # Перемещение по строке

    0                # Переместить курсор к началу строки
    $                # Переместить курсор к концу строки
    ^                # Переместить курсор к первому непустому символу в строке

    # Поиск в тексте

    /<word>          # Подсветить все вхождения <word>  в тексте после курсора
    ?<word>          # Подсветить все вхождения <word>  в тексте до курсора
    n                # Передвигает курсор к следующему вхождения искомого слова
    N                # Передвигает курсор к предыдущему вхождения искомого слова

    :%s/foo/bar/g    # Меняет «foo» на «bar» во всем файле
    :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 основывается на концепте **режимов**.

Командный режим - vim запускается в этом режиме по-умолчанию, используется для 
навигации и ввода команд.
Режим ввода - используется для внесения изменений в файле.
Визуальный режим - используется для подсветки текста и выполнения операций над ним.
Режим командной строки - используется для ввода команд в нижнем углу экрана после символа «:».

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

    # Копирование и вставка текста

    y                # Скопировать выделенное
    yy               # Скопировать текущую строку
    d                # Удалить выделенное
    dd               # Удалить текущую строку
    p                # Вставить скопированный текст после текущей позиции курсора
    P                # Вставить скопированный текст перед текущей позицией курсора
    x                # Удалить символ под текущей позицией курсора
```

## «Грамматика» vim

Vim можно рассматривать как набор команд в формате «Глагол-Модификатор-Существительное», где:

Глагол - ваше действие.
Модификатор - то как вы его выполняете.
Существительное - объект над которым вы его выполняете.

Несколько важных пример «Глаголов», «Модификаторов», и «Существительных»:

```
    # «Глаголы»
 
    d                # Удалить
    c                # Изменить
    y                # Скопировать
    v                # Визуально выделить

    # «Модификаторы»

    i                # Внутри
    a                # Снаружи
    NUM              # Число
    f                # Ищет что-то и останавливается на нем
    t                # Ищет что-то и останавливается перед ним
    /                # Ищет строку после курсора
    ?                # Ищет строку перед курсором

    # «Существительные»

    w                # Слово
    s                # Предложение
    p                # Параграф
    b                # Блок
    
    # Образцы «предложений» или команд

    d2w              # Удалить 2 слова
    cis              # Изменить объемлющее предложение
    yip              # Скопировать объемлющий параграф
    ct<              # Изменяет текст от курсора до следующей открывающей скобки
    d$               # Удалить все от положения курсора до конца строки
```

## Некоторые сокращения и хитрости

        <!--TODO: Add more!-->
```
    >                # Сдвинуть выделенное на один отступ вправо
    <                # Сдвинуть выделенное на один отступ влево
    :earlier 15m     # Возвращает документ к состоянию в котором он был 
                     # 15 минут назад
    :later 15m       # Отменяет предыдущую команду
    ddp              # Меняет позиции последовательных строк, сначала dd затем p
    .                # Повторяет предыдущее действие
```

## Макросы

Макросы это просто записываемые действия.
Во время записи макросы запоминают **все** действия и команды до тех пор пока 
запись не будет остановлена.При вызове макрос применяет ту же самую последовательность 
действий и команд на выделенном тексте.

```
    qa               # Начать запись макроса под именем «a»
    q                # Закончить запись
    @a               # Выполнить макрос 
```

### Настройка ~/.vimrc

Файл .vimrc может использоваться для настройки Vim при запуске.

Вот пример файла ~/.vimrc:

```
" Пример ~/.vimrc
" 2015.10 

" Отключает совместимость со старым vi
set nocompatible

" Определяет тип файла по его имени для разрешения автоматических отступов и т. д.
filetype indent plugin on

" Включает подсветку синтаксиса
syntax on

" Улучшенное автодополнение команд 
set wildmenu

" Использовать поиск не чувствительный к регистру 
" за исключением использования заглавный букв
set ignorecase
set smartcase

" Копирует отступы с текущей строки при добавлении новой
set autoindent

" Показывать номера строк
set number

" Настройки отступов, изменяйте по собственному вкусу

" Количество видимых пробелов на один символ табуляции
set tabstop=4

" Количество пробелов в символе табуляции при редактировании
set softtabstop=4

" Количество пробелов в отступе при использовании операций >> и << 
set shiftwidth=4

" Конвертировать символы табуляции в пробелы
set expandtab

" Включить умную табуляцию и пробелы для отступов и выравнивания
set smarttab
```

### Ссылки

[Vim | Home (EN)](http://www.vim.org/index.php)

`$ vimtutor`

[A vim Tutorial and Primer (EN)](https://danielmiessler.com/study/vim/)

[What are the dark corners of Vim your mom never told you about? (Stack Overflow thread) (EN)](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_%28%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29)