#	       ДОБРО  ПОЖАЛОВАТЬ  НА  ЗАНЯТИЯ  ПО  РЕДАКТОРУ  Vim

#				ГЛАВА ПЕРВАЯ

   Программа Vim — это очень мощный текстовый редактор, имеющий множество
   команд, и все их просто невозможно описать в рамках этого учебника.
   Данный же учебник призван объяснить те команды, которые позволят вам с
   лёгкостью использовать программу Vim в качестве редактора общего назначения.

   Важно помнить, что этот учебник предназначен для практического обучения.
   Это означает, что вы должны применять команды для того, чтобы как следует
   их изучить. Если вы просто прочитаете этот текст, то не запомните команды!

   Теперь, убедившись, что не включена клавиша `<CapsLock>`{normal},
   нажмите клавишу `j`{normal} несколько раз, так, чтобы урок 0 полностью
   поместился на экране.

#	    ВВОДНАЯ ЧАСТЬ

**Важно!**
    Выполняя задания уроков, вы будете изменять некоторый текст этих заданий,
    но эти изменения не будут сохранятся в файле. Так что не бойтесь что что‐то
    испортится; просто помните, что нажав клавишу [<ESC>](<Esc>) и затем клавишу
    [u](u) можно отменить последние сделанные изменения.

Это интерактивный учебник, и есть несколько важных моментов, о которых надо знать.
‑ Если нажать клавишу [<ENTER>](<Enter>) когда каретка находится
  на [такой ссылке](holy-grail), то будет открыт связанный с ней раздел
  документации.
‑ К тому же, если нажать клавишу [K](K) на любом слове, то будет выполнен поиск
  этого слова в документации.
- Также в ходе урока вам потребуется изменять текст, например,
как этот
  Если задание будет выполнено правильно, то значок ✗  справа изменится на ✓.
  Надеюсь, вы уже начинаете понимать насколько удобным может быть редактора Vim.
- Либо может быть предложено набрать команду, похожую на эту (объяснение далее):
~~~ cmd
	:help <ENTER>
~~~
или нажать последовательность клавиш
~~~ normal
	<ESC>0f<SPACE>d3wP$P
~~~
Текст, заключённый в угловые скобки (вроде `<ENTER>`{normal}), означает клавиши,
которые надо нажать на клавиатуре, а не текст который надо набирать.

Ну что ж, переходим к следующему уроку (используйте для этого клавишу `j`{normal}
для прокрутки окна вниз).


#	    Урок 1.1.1. ПЕРЕМЕЩЕНИЕ КАРЕТКИ

** Чтобы перемещать каретку в указанных направлениях, нажмите клавиши
			`h`, `j`, `k`, `l`**

	   ↑	    *Подсказка.*
	   k	     Клавиша `h`{normal} слева и удобна для перемещения влево.
       ← h   l →     Клавиша `l`{normal} справа и удобна для перемещения вправо.
	   j	     Клавиша `j`{normal} похожа на стрелку »вниз».
	   ↓
  1. Перемещайте каретку в разных направлениях, пока не ощутите уверенность.

  2. Удерживайте нажатой клавишу «вниз» (`j`{normal}) для беспрерывного
    перемещения каретки. Теперь вы знаете, как перейти к следующему уроку.

  3. Используя клавишу «вниз», то есть `j`{normal}, перейдите к уроку 1.1.2

**Совет.**
    Если вы не уверены в правильности набранного текста, нажмите клавишу
    `<ESC>`{normal}, чтобы переключить редактор в режим команд.
    После этого повторите набор.

**Примечание.**
    Клавиши управления курсором (стрелки) также должны работать.
    Но учтите, что немного потренировавшись вы поймёте, что намного быстрее
    перемещать каретку клавишами  `h`{normal} `j`{normal} `k`{normal} `l`{normal} 


#	    Урок 1.1.2. ЗАВЕРШЕНИЕ РАБОТЫ ПРОГРАММЫ  *1-1-2*

**ВНИМАНИЕ!** Перед выполнением описанных ниже действий, прочтите урок полностью!

  1. Нажмите клавишу `<ESC>`{normal} (чтобы убедиться, что включен режим команд).

  2. Наберите

	`:q!`{vim} `<ENTER>`{normal}

     Это означает, что надо набрать три символа  : q ! и нажать клавишу <ВВОД>
     Исполнение этой команды вызовет завершение работы редактора БЕЗ СОХРАНЕНИЯ
     любых сделанных изменений.

  3. Снова запустите редактор Vim и повторно наберите команду, через которую вы
     открыли этот учебник. Это может быть

	`:Tutor`{vim} `<ENTER>`{normal}

  4. Если уверены в том, что поняли смысл вышесказанного, выполните шаги
     с 1 до 3, чтобы завершить работу и снова запустить редактор.

**Примечание.**
    По команде [:q!](:q) `<ENTER>`{normal} будут сброшены сделанные изменения.
    Через несколько уроков вы узнаете как сохранять изменения в файл.

  5. Переместите каретку вниз к уроку [1.1.3](*1-1-3*).


#	    Урок 1.1.3. РЕДАКТИРОВАНИЕ — УДАЛЕНИЕ ТЕКСТА  *1-1-3*

** Чтобы удалить символ под кареткой, нажмите клавишу `x`{normal} **

  1. Переместите каретку к строке помеченной ✗.

  2. Чтобы исправить ошибки, перемещайте каретку, пока она не окажется над
     удаляемым символом.

  3. Нажмите клавишу [x](x) для удаления требуемого символа.

  4. Повторите шаги со 2 по 4, пока строка не будет исправлена.

От тттопота копытт пппыль ппо ппполю леттитт.

  5. Теперь, когда строка исправлена, переходите к уроку [1.1.4](*1-1-4*).

**Примечание.**
    В ходе этих занятий не пытайтесь сразу всё запоминать, учитесь в процессе
    работы.


#	    Урок 1.1.4. РЕДАКТИРОВАНИЕ — ВСТАВКА ТЕКСТА  *1-1-4*

** Чтобы вставить текст, нажмите клавишу `i`{normal} **

  1. Переместите каретку к первой строке помеченной ✗.

  2. Чтобы сделать первую строку идентичной второй, установите каретку на тот
     символ, ПЕРЕД которым следует вставить текст.

  3. Нажмите клавишу [i](i) и наберите текст, который требуется вставить.

  4. После исправления каждого ошибочного слова, нажмите клавишу `<ESC>`{normal}
     для переключения в режим команд.

     Повторите шаги со 2 по 4, пока предложение не будет исправлено полностью.

Часть текта в строке бесследно .
Часть текста в этой строке бесследно пропало.

  5. Когда освоите вставку текста, переходите к уроку [1.1.5](*1-1-5*).


#	    Урок 1.1.5. РЕДАКТИРОВАНИЕ — ДОБАВЛЕНИЕ ТЕКСТА  *1-1-5*

** Чтобы добавить текст, нажмите клавишу `A`{normal} **

  1. Переместите каретку к первой строке помеченной ✗.
     Сейчас неважно, на каком символе расположена каретка в этой строке.

  2. Нажмите клавишу [A](A) и наберите текст, который требуется добавить.

  3. После добавления текста нажмите клавишу `<ESC>`{normal} для возврата
     в режим команд.

  4. Переместите каретку на следующую строку, помеченную ✗
     и повторите шаги со 2 по 3 для исправления этой строки.

Часть текста в этой строке бессле
Часть текста в этой строке бесследно пропало.
Здесь также недостаёт час
Здесь также недостаёт части текста.

  5. Когда освоите добавление текста, переходите к уроку [1.1.6](*1-1-6*).


#	    УРОК 1.1.6. РЕДАКТИРОВАНИЕ И ЗАПИСЬ ФАЙЛА  *1-1-6*

 ** Чтобы сохранить файл и закрыть редактор, используйте команды `:wq`{vim} **

 **ВНИМАНИЕ!** Перед выполнением описанных ниже действий, прочтите урок полностью!

  1. Завершите работу редактора Vim, как указано в уроке [1.1.2](*1-1-2*)
     `:q!`{vim}
     Если есть доступ к другому терминалу, то там можете сделать следующее:

  2. В приглашении командной оболочки введите команду
~~~ sh
    $ vim tutor
~~~
     где vim - команда для запуска редактора Vim, а tutor - наименование
     файла для редактирования. Укажите такой файл, который можно изменять.

  3. Вставляйте и удаляйте текст, как описано в предыдущих уроках.

  4. Сохраните этот изменённый файл и завершите работу программы Vim,
     набрав команду
~~~ cmd
    :wq
~~~
  5. Если вы вышли из vimtutor на шаге 1, перезапустите vimtutor и переходите
     далее к резюме.

  6. После того как вы прочли и поняли вышесказанное, выполните описанные шаги.


#	    РЕЗЮМЕ УРОКА 1.1

  1. Каретку можно перемещать либо клавишами со стрелками, либо клавишами hjkl.
	h (влево)	j (вниз)	k (вверх)	l (вправо)

  2. Чтобы запустить редактор Vim из приглашения командной оболочки, наберите
~~~ sh
    $ vim ФАЙЛ
~~~
  3. Чтобы завершить работу редактора Vim, выполните одно из следующих:
	`<ESC>`{normal} `:q!`{vim} `<ENTER>`{normal}
    по этой команде не будут сохранены изменения;
			или
	`<ESC>`{normal} `:wq`{vim} `<ENTER>`{normal}
    по этой команде будут сохранены изменения.

  4. Чтобы удалить символ под кареткой, нажмите клавишу `x`{normal}.

  5. Чтобы вставить текст перед кареткой:
	`i`{normal} вставляемый текст `<ESC>`{normal}
     Чтобы добавить текст в конце строки:
	`A`{normal} добавляемый текст `<ESC>`{normal}

**Примечание.**
    По нажатию клавиши `<ESC>`{normal} будет выполнено переключение редактора
    в режим команд с прерыванием обработки любой ранее набранной команды.

Теперь переходите к уроку [1.2](*1-2-1*).


#	    Урок 1.2.1. КОМАНДЫ УДАЛЕНИЯ  *1-2-1*

     ** Чтобы удалить слово под кареткой, используйте команду `dw`{vim} **

  1. Переключите редактор в режим команд, нажав клавишу `<ESC>`{normal}.

  2. Переместите каретку к строке помеченной ✗

  3. Установите каретку на начало слова, которое следует удалить.

  4. Наберите [dw](dw) для удаления этого слова.

**Примечание.**
    При наборе оператора `d`{normal} он отобразится в самой нижней строке справа,
    и программа будет ожидать ввода следующей команды,
    в данном случае - `w`{normal} (объект слово).
    Если что-то не получается, нажмите клавишу `<ESC>`{normal} и начните сначала.

Несколько слов рафинад в этом предложении автокран излишни.

  5. Повторите шаги 3 и 4, пока не исправите все ошибки, и переходите
     к уроку [1.2.2](*1-2-2*).


#	    Урок 1.2.2. ЕЩЁ ОДНА КОМАНДА УДАЛЕНИЯ  *1-2-2*

** Чтобы удалить текст до конца строки, используйте команду `d$`{vim} **

  1. Переключите редактор в режим команд, нажав клавишу `<ESC>`{normal}.

  2. Переместите каретку к строке помеченной ✗

  3. Установите каретку после корректного предложения (ПОСЛЕ первой точки).

  4. Наберите [d$](d$) для удаления остатка строки.

Кто-то набрал окончание этой строки дважды. окончание этой строки дважды.

  5. Чтобы лучше разобраться в том как это происходит,
     обратитесь к уроку [1.2.3](*1-2-3*).


#	    Урок 1.2.3. ОПЕРАТОРЫ И ОБЪЕКТЫ  *1-2-3*

  Многие команды, изменяющие текст, являются составными и формируются
  из [оператора](operator) и [объекта](navigation), к которому применяется
  этот оператор.
  Так, например, формат команды удаления с оператором [d](d) следующий:

	d   объект
  где
    d	   - оператор удаления;
    объект - область текста (указаны ниже), к которой будет применён оператор.

  Краткий перечень объектов:
    [w](w) - от позиции каретки до конца слова, включая последующий пробел;
    [e](e) - от позиции каретки до конца слова, исключая последующий пробел;
    [$]($) - от позиции каретки до конца строки, включая последний символ.

  Таким образом, ввод команды `de`{normal} вызывает удаление текста
  от позиции каретки до конца слова.

**Примечание.**
    Если в режиме команд, без ввода оператор, нажать клавишу с символом,
    с которым ассоциирован объект, то каретка будет перемещена так, как
    указано в перечне объектов.


#	    Урок 1.2.4. ПРИМЕНЕНИЕ СЧЁТЧИКА СОВМЕСТНО С ОБЪЕКТАМИ

** Чтобы перемещение каретка выполнялось необходимое количество раз,
		укажите перед объектом требуемое число **

  1. Установите каретку на начало строки помеченной ✓

  2. Наберите `2w`{normal} для перемещения каретки вперёд к началу второго слова.

  3. Наберите `3e`{normal} для перемещения каретки вперёд к концу третьего слова.

  4. Наберите `0`{normal} ([ноль](0)) для перемещения каретки к началу строки.

  5. Повторите шаги 2 и 3 с различными значениями чисел.

Обычная строка из слов, чтобы вы на ней потренировались перемещать каретку.

  6. Когда освоите это, переходите к уроку [1.2.5.](*1-2-5*)


#	    Урок 1.2.5. ПРИМЕНЕНИЕ СЧЁТЧИКА ДЛЯ МНОЖЕСТВЕННОГО УДАЛЕНИЯ  *1-2-5*

** Чтобы применить оператор несколько раз, укажите число требуемых повторов **

  Используя приведённые ранее составные команды удаления и перемещения,
  укажите перед объектом число повторов выполнения операции удаления.

	 d   число   объект

  1. Установите каретку на первом слове из прописных букв в строке ✗

  2. Наберите `d2w`{normal} для удаления двух идущих друг за другом слов
     из прописных букв.

  3. Повторите шаги 1 и 2 с указанием других числовых значений, чтобы удалить
     группы слов из прописных букв одной командой.

Эта АБВ ГД строка ЕЖЗИ КЛ МНО очищена от П РС ТУФ лишних слов.


#	    Урок 1.2.6. ОПЕРАЦИИ СО СТРОКАМИ

** Чтобы удалить строку целиком, используйте команду `dd`{normal} **

  Так как часто требуется выполнять удаление всей строки целиком, создатели
  редактора решили облегчить этот процесс, и предложили для этого просто
  дважды нажать на клавишу с буквой d.

  1. Переместите каретку к строке номер два.
  2. Наберите [dd](dd) для удаления строки.
  3. Теперь переместите каретку к строке номер четыре.
  4. Наберите `2dd`{normal} для удаления двух строк подряд.

1)  Летом я хожу на стадион,
2)  О, как внезапно кончился диван!
3)  Я болею за «Зенит», «Зенит» — чемпион!
4)  Печально я гляжу на наше поколенье!
5)  Его грядущее — иль пусто, иль темно...
6)  Я сижу на скамейке в ложе «Б»
7)  И играю на большой жестяной трубе



  Дублирование оператора для обработки целой строки применяется и с другими
  операторами, о которых говорится далее.


#	    Урок 1.2.7. КОМАНДА ОТМЕНЫ

** Чтобы отменить результат предыдущей команды, нажмите клавишу `u`{normal}
 Чтобы отменить правки для всей строки, нажмите клавишу `U`{normal} **

  1. Установите каретку на первой ошибке, в строке помеченной ✗

  2. Нажмите клавишу `x`{normal} для удаления первого ошибочного символа.

  3. Теперь нажмите клавишу `u`{normal} для отмены последней выполненной команды.

  4. Исправьте все ошибки в строке, используя команду `x`{normal}.

  5. Теперь нажмите клавишу `U`{normal}, чтобы вернуть всю строку
     в исходное состояние.

  6. Нажмите клавишу `u`{normal} несколько раз для отмены команды `U`{normal}
     и предыдущих команд.

  7. Теперь нажмите клавиши `<CTRL-r>`{normal} (т. е. удерживая клавишу `<CTRL>`,
     нажмите клавишу `r`) несколько раз для возврата действий команд.

Испрравьте оошибки в этойй строке и вернитте их сс помощьью команды «отмена».

  8. Это очень нужные и полезные команды.

Далее переходите к резюме урока [1.2](*1-2*).


#	    РЕЗЮМЕ УРОКА 1.2

  1. Чтобы удалить слово, установите каретку в его начало и наберите  `dw`{normal}

  2. Чтобы удалить текст от позиции каретки до конца слова, наберите  `de`{normal}

  3. Чтобы удалить текст от позиции каретки до конца строки, наберите `d$`{normal}

  4. Чтобы удалить всю строку целиком, наберите			      `dd`{normal}

  5. Чтобы переместить каретку за один раз на некоторое количество объектов,
     укажите их число, например, `2w`{normal}

  6. Формат команд изменения:
	    оператор	[число]   объект
     где
      оператор - необходимые действия, например, [d](d) для удаления;
      [число]  - количество подпадающих под действие оператора объектов,
		 если не указано, то один объект;
      объект   - на что воздействует оператор, например, [w](w) (слово),
		 [$]($) (всё, что есть до конца строки) и т. п.

  7. Чтобы переместить каретку к началу строки, нажмите клавишу [0](0) (ноль)

  8. Чтобы отменить предшествующие действие, нажмите `u`{normal}  (строчная u)
     Чтобы отменить все изменения в строке, нажмите  `U`{normal}  (прописная U)
     Чтобы вернуть отменённые изменения, нажмите     `<CTRL-r>`{normal}


#	    Урок 1.3.1. КОМАНДА ВСТАВКИ

** Чтобы вставить последний удалённый текст, наберите команду `p`{normal} **

  1. Переместите каретку к первой строке помеченной ✓

  2. Наберите `dd`{normal}, чтобы удалить строку, при этом она будет
     автоматически помещена в специальный регистр редактора Vim.

  3. Установите каретку на строку ВЫШЕ той, в которой следует вставить
     удалённую строку.

  4. Убедитесь, что программа в режиме команд и нажмите клавишу [p](p)
     для вставки строки ниже позиции каретки.

  5. Повторите шаги со 2 по 4, пока не расставите все строки в нужном порядке.

г) И лучше выдумать не мог.
б) Когда не в шутку занемог,
в) Он уважать себя заставил
а) Мой дядя самых честных правил


#	    Урок 1.3.2. КОМАНДА ЗАМЕНЫ

** Чтобы заменить символ под кареткой, наберите `r`{normal} и заменяющий символ **

  1. Переместите каретку к первой строке помеченной ✗

  2. Установите каретку так, чтобы она находилась над первым ошибочным символом.

  3. Нажмите клавишу [r](r) и затем наберите символ, исправляющий ошибку.

  4. Повторите шаги 2 и 3, пока первая строка не будет соответствовать второй.

В момегт набтра этой чтроки кое0кто с трудом попвдал по клваишам!
В момент набора этой строки кое-кто с трудом попадал по клавишам!

  5. Теперь переходите к уроку [1.3.3](*1-3-3*).

**Примечание.**
    Помните, что вы должны учиться в процессе работы, а не просто зубрить.


#	    Урок 1.3.3. ОПЕРАТОР ИЗМЕНЕНИЯ  *1-3-3*

** Чтобы изменить окончание слова, наберите команду `ce`{normal} **

  1. Переместите каретку к первой строке помеченной ✗

  2. Установите каретку над буквой «o» в слове «сола».

  3. Наберите команду `ce`{normal}  и исправьте слово
     (в данном случае, наберите «лов»).

  4. Нажмите клавишу `<ESC>`{normal} и переместите каретку к следующей ошибке
     (к первому символу, начиная с которого надо изменить окончание слова).

  5. Повторите шаги 3 и 4 пока первая строка не будет соответствовать второй.

Несколько сола в эьгц строке тпгшцбь истравыиться.
Несколько слов в этой строке требуется исправить.

**Примечание.**
    Обратите внимание, что по команде `ce`{normal} не только удаляется часть
    слова, но и происходит переключение редактора в режим вставки.
    По команде `cc`{normal} будет выполнятся то же самое, но для целой строки.


# УРОК 1.3.4. ЕЩЁ НЕСКОЛЬКО СПОСОБОВ РАБОТЫ С ОПЕРАТОРОМ ИЗМЕНЕНИЯ `c`{normal}

** К оператору изменения применимы те же объекты, что и к оператору удаления **

  1. Оператор изменения работает аналогично оператору удаления. Формат команды:

       c   [число]   объект

  2. Объекты - это то же самое, что и ранее: `w`{normal} (слово),
     `$`{normal} (конец строки) и т. п.

  3. Переместите каретку к первой строке помеченной ✗

  4. Установите каретку на первой ошибке.

  5. Наберите `c$`{normal} и отредактируйте первую строку так, чтобы она
     совпадала со второй, после чего нажмите клавишу `<ESC>`{normal}.

Окончание этой строки нужно сделать похожим как во второй строке.
Окончание этой строки нужно исправить через команду c$.

**Примечание.**
    Клавиша `<BACKSPACE>`{normal} используется для исправления при наборе текста.


#	    РЕЗЮМЕ УРОКА 1.3

  1. Чтобы вставить текст, который был только что удалён, наберите команду [p](p).
     Текст будет вставлен ПОСЛЕ позиции каретки (если была удалена строка,
     то она будет помещена в строке ниже строки с кареткой).

  2. Чтобы заменить символ под кареткой, наберите команду [r](r) и затем
     заменяющий символ.

  3. [Операторы изменения](c) изменяют указанный объект текста от позиции каретки
     до конечной точки перемещения.
     Например, по команде `ce`{normal} можно изменить текст от позиции каретки
     до конца слова, а по команде `c$`{normal} - до конца строки.

  4. Формат команд изменения:

	 c   [число]   объект

     где c - оператор изменения;
	 [число] - количество изменяемых объектов (необязательная часть);
	 объект - объект текста, который будет изменён.

Теперь переходите к следующему уроку.


#	    УРОК 1.4.1. ИНФОРМАЦИЯ О ФАЙЛЕ И ПОЗИЦИЯ КАРЕТКИ

** Чтобы получить информацию о файле и позиции каретки, нажмите `<CTRL-g>`{normal}
 Чтобы переместить каретку к заданной строке в файле, нажмите `G`{normal} **

  **ВНИМАНИЕ!** Прочитайте весь урок, прежде чем выполнять любые действия!

  1. Удерживая клавишу `<CTRL>`{normal}, нажмите клавишу `g`{normal}.
     Внизу экрана появится сообщение с наименованием файла и номером строки,
     в которой находится каретка. Запомните этот номер строки,
     он потребуется на шаге 3.

  **Примечание.**
    Позиция каретки может отображаться в правом нижнем углу окна программы,
    если установлен параметр ['ruler']('ruler').

  2. Нажмите клавишу [G](G) для перемещения каретки на последнюю строку файла.
     Теперь наберите [gg](gg) для перемещения каретки на первую строку файла.

  3. Наберите номер строки, которой был получен на шаге 1, и нажмите клавишу
     `G`{normal}. Каретка будет перемещена в ту строку, где она находилась,
     когда в первый раз были нажаты клавиши `<CTRL-g>`{normal}.

  4. Если вы запомнили всё вышесказанное, выполните шаги с 1 по 3.


#	    Урок 1.4.2. КОМАНДЫ ПОИСКА

** Чтобы что-то найти, наберите команду `/`{normal} и введите искомую фразу **

  1. В режиме команд наберите символ `/`{normal}.
     Обратите внимание, что этот символ будет отображаться внизу экрана. Так же,
     как и при наборе команды `:`{normal}

  2. Теперь наберите ошшшибка `<ENTER>`{normal}.
     Это то слово, которое требуется найти.

  3. Чтобы повторить поиск искомого слова, просто нажмите клавишу [n](n).
     Чтобы искать это слово в обратном направлении, нажмите клавиши [N](N).

  4. Если требуется сразу выполнить поиск в обратном направлении, используйте
     команду [?](?) вместо команды `/`{normal}.

  5. Чтобы вернуться туда, откуда был начат поиск, нажмите несколько раз
     клавиши `<CTRL-o>`{normal}.
     Для перехода вперёд, используйте команду `<CTRL-i>`{normal}.

"ошшшибка" это не способ написания слова "ошибка";  ошшшибка — это ошибка.

**Примечание.**
    Если будет достигнут конец файла, то поиск будет продолжен от начала файла.


#	    Урок 1.4.3. ПОИСК ПАРНЫХ СКОБОК

** Чтобы найти парную скобку для (, [ или {, наберите команду `%`{normal} **

  1. Поместите каретку на любой из скобок (, [ или { в строке помеченной ✓

  2. Теперь нажмите на клавиатуре клавишу с символом [%](%).

  3. Каретка будет перемещена на парную скобку для той скобки, на которой
     установлена каретка.

  4. Наберите `%`{normal} для возврата каретки назад к первой парной скобке.

В этой ( строке есть такие (, такие [ ] и { такие } скобки. ))

**Примечание.**
    Это очень удобно при отладке программ, когда в коде пропущены скобки!


#	    Урок 1.4.4. СПОСОБ ЗАМЕНЫ СЛОВ

** Чтобы «что-то» заменить «чем-то», наберите команду `:s/что/чем/g`{vim} **

  1. Переместите каретку к строке помеченной ✗

  2. Наберите
~~~ cmd
	:s/уводю/увожу/
~~~
     Обратите внимание на то, что по этой команде будет замена только первого
     найденного вхождение в строке.

  3. Теперь наберите
~~~ cmd
	:s/уводю/увожу/g
~~~
     Здесь добавленный [флаг](:s_flags) 'g' означает замена во всей строке.
     Будет выполнена замена всех найденных в строке совпадений.

Я уводю к отверженным селеньям, я уводю сквозь вековечный стон, я уводю к забытым поколеньям.

  4. Чтобы заменить все вхождения искомого слова в каком-то диапазоне строк,
     наберите
~~~ cmd
	:#,#s/что/чем/g
~~~
     где #,# - номер начальной и конечной строки диапазона,
     в котором будет выполнена замена.

     Наберите
~~~ cmd
	:%s/что/чем/g
~~~
     чтобы заменить все вхождения во всём файле.

     Наберите
~~~ cmd
	:%s/что/чем/gc
~~~
     чтобы выдавался запрос подтверждения перед каждой заменой.


#	    РЕЗЮМЕ УРОКА 1.4

  1. По приведённым ниже командам будет выполнено:
     `<CTRL-g>`{normal} - вывод информации о файле и текущей позиции каретки
     в этом файле
     `G`{normal} - переход на последнюю строку файла
     номер и `G`{normal} - переход на строку с указанным номером
     `gg`{normal} - переход на первую строку файла

  2. При вводе символа `/`{normal} с последующим набором слова, будет выполнен
     поиск этого слова ВПЕРЁД по тексту.
     При вводе символа `?`{normal} с последующим набором слова, будет выполнен
     поиск этого слова НАЗАД по тексту.
     После показа первого совпадения, нажмите `n`{normal} для перехода
     к следующему слову в том же направлении поиска или `N`{normal} для поиска
     в противоположном направлении.
     При нажатии клавиш `<CTRL-o>`{normal} будет возврат к предыдущему слову,
     а при нажатии клавиш `<CTRL-i>`{normal} будет переход к ранее найденному
     слову.

  3. При нажатии `%`{normal}, когда каретка на одной из скобок ( ), [ ] или { },
     будет найдена её парная скобка.

  4. Чтобы заменить первое найденное слово в строке, наберите
~~~ cmd
	:s/что/чем
~~~
     Чтобы заменить все найденные слова в строке, наберите
~~~ cmd
	:s/что/чем/g
~~~
     Чтобы заменить в указанными диапазоне строк, наберите
~~~ cmd
	:#,#s/что/чем/g
~~~
     Чтобы заменить все найденные слова в файле, наберите
~~~ cmd
	:%s/что/чем/g
~~~
     Чтобы запрашивалось подтверждение для каждой замены, добавьте флаг 'c'
~~~ cmd
	:%s/что/чем/gc
~~~

#	    Урок 1.5.1. КАК ВЫЗВАТЬ ИЗ РЕДАКТОРА ВНЕШНЮЮ КОМАНДУ

** Чтобы вызвать команду командной оболочки, наберите в редакторе `:!`{vim} **

  1. Наберите уже знакомую команду `:`{normal}, чтобы каретка была установлена
     в командной строке редактора и можно было ввести необходимую команду.

  2. Теперь наберите символ [!](!cmd) (восклицательный знак). По этой команде
     будет вызвана указанная следующей внешняя команда командной оболочки.

  3. Например, наберите "ls" сразу после "!" и нажмите `<ENTER>`{normal}.
     Будет выведен перечень файлов в текущем каталоге. То есть будет выполнено
     точно то же самое, как если бы ввести команду `ls` в приглашении командной
     оболочки.
     Если в системе не поддерживается команда `ls`, наберите команду `:!dir`{vim}

**Примечание.**
    Таким способом можно выполнить любую внешнюю команду,
    в том числе и с указанием необходимых аргументов этой команды.

**Важно.**
    После ввода команды, начинающейся с `:`{vim}, должна быть нажата клавиша
    `<ENTER>`{normal}.
    В дальнейшем это может не указываться отдельно, но подразумеваться.


#	    Урок 1.5.2. КАК ЗАПИСАТЬ ФАЙЛ

** Чтобы сохранить файл со всеми изменениями в тексте, наберите `:w`{vim} ФАЙЛ **

  1. Наберите `:!dir`{vim} или `:!ls`{vim} для получения перечня файлов
     в текущем каталоге.
     Как вы помните, после набора команды нажмите клавишу `<ENTER>`{normal}

  2. Придумайте название для файла, которое ещё не существует, например, «TEST».

  3. Теперь наберите
~~~ cmd
	:w TEST
~~~
     (здесь TEST - это придуманное вами название файла).

  4. По этой команде будет полностью сохранён текущий файл («tutor») под новым
     название «TEST». Чтобы проверить это, снова наберите команду `:!dir`{vim}
     или `:!ls`{vim}  и просмотрите содержимое каталога.

**Примечание.**
    Если завершить работу редактора Vim и затем запустить его снова с файлом
    TEST (т. е. набрать команду `vim TEST`), этот файл будет точной копией
    учебника в тот момент, когда он был сохранён.

  5. Теперь удалите этот файл, набрав в редакторе команду
~~~ cmd
	:!del TEST
~~~
     (для ОС Windows) или
~~~ cmd
	:!rm TEST
~~~
     (для UNIX-подобных ОС)


#	    Урок 1.5.3. ВЫБОРОЧНАЯ ЗАПИСЬ СТРОК

** Чтобы сохранить часть файла, нажмите клавишу `v`{normal}, выделите строки
			 и наберите команду `:w ФАЙЛ`{vim} **

  1. Переместите каретку на эту строку.

  2. Нажмите клавишу [v](v) и переместите каретку ниже к строке с пятым пунктом.
     Обратите внимание, что текст подсвечен.

  3. Нажмите клавишу с символом `:`{normal} и внизу экрана появится

	`:'<,'>`{vim}

  4. Наберите команду

	`w TEST`{vim}

     (здесь TEST - наименование файла, который ещё не существует).
     В командной строке должно быть

	`:'<,'>w TEST`{vim}

     и нажмите клавишу <ENTER>

  5. По этой команде выбранные строки будут записаны в файл «TEST». Убедитесь в
     наличии этого файла, воспользовавшись командой `:!dir`{vim} или `:!ls`{vim}.
     Не удаляйте этот файл, он потребуется на следующем уроке.

**Примечание.**
    По нажатию клавиши [v](v) выполняется переключение в визуальный режим.
    Чтобы изменить размер выбранной области, нужно переместить каретку.
    К выделенному фрагменту можно применить любой оператор, например, `d`{normal}
    для его удаления.


#	    Урок 1.5.4. СЧИТЫВАНИЕ И ОБЪЕДИНЕНИЕ ФАЙЛОВ

** Чтобы вставить содержащийся в файле текст, наберите `:r ФАЙЛ`{vim} **

  1. Установите каретку над этой строкой.

**Внимание!**
    После выполнения описанного в пункте 2 вы увидите текст из урока 1.5.3.
    Переместите каретку вниз по тексту до текущего урока.

  2. Теперь считайте содержимое файла TEST, используя команду

	`:r TEST`{vim}

     здесь TEST - это наименование файла.
     Файл будет считан, и его содержимое помещено ниже строки с кареткой.

  3. Для проверки, что содержимое файла было вставлено, переместите каретку
     вверх по тексту и удостоверьтесь, что теперь здесь два урока 1.5.3. -
     исходный и из файла TEST.

**Примечание.**
    Вставить можно и результат внешней команды. Например, по команде

	`:r !ls`{vim}

    будет получен вывод команды `ls` и вставлен ниже позиции каретки.


#	    РЕЗЮМЕ УРОКА 1.5

  1. По команде [:!command](:!cmd) будет исполнена указанная внешняя команда.

      Некоторые полезные примеры:
   (Windows)		(UNIX)
    `:!dir`{vim}	 `:!ls`{vim}	  - вывести перечень файлов в каталоге;
    `:!del ФАЙЛ`{vim}	 `:!rm ФАЙЛ`{vim} - удалить файл с указанным названием.

  2. По команде [:w](:w) ФАЙЛ — текущий редактируемый файл будет записан
     с указанным наименованием.

  3. Используя команды [v](v), перемещение каретки и `:w ФАЙЛ`{vim} — можно
     сохранить визуально выделенные строки в файл с указанным наименованием.

  4. По команде [:r](:r) ФАЙЛ — будет прочитан файл с указанным наименованием
     и его содержимое помещено ниже позиции каретки.

  5. По команде [:r !dir](:r!) — будет получен вывод команды `dir` и помещён
     ниже позиции каретки.


#	    УРОК 1.6.1. КОМАНДЫ ДЛЯ СОЗДАНИЯ СТРОК

** Чтобы открыть новую строку с переходом в режим вставки, наберите `o`{normal} **

  1. Переместите каретку вниз, к первой строке помеченной ✓

  2. Нажмите клавишу `o`{normal} для того, чтобы создать [пустую строку](o) НИЖЕ
     позиции каретки и переключить редактор в режим вставки.

  3. Теперь наберите какой-нибудь текст и нажмите клавишу `<ESC>`{normal} для
     выхода из режима вставки.

При нажатии `o`{normal}, ниже будет открыта новая пустая строка в режиме вставки.

  4. Для создания строки ВЫШЕ позиции каретки, наберите прописную букву [O](O),
     вместо строчной буквы `o`{normal}. Попробуйте это сделать для строки ниже.

Создайте новую строку над этой, поместив сюда каретку и нажав клавишу `O`{normal}.


#	    УРОК 1.6.2. КОМАНДА ДЛЯ ДОБАВЛЕНИЯ ТЕКСТА

** Чтобы вставить текст после позиции каретки, наберите `a`{normal} **

  1. Переместите каретку вниз, в начало первой строки помеченной ✗

  2. Нажмите клавишу `e`{normal}, пока каретка не окажется на последнем символе
     слова «стро».

  3. Нажмите клавишу `a`{normal} для [добавления](a) текста ПОСЛЕ символа,
     находящегося под кареткой.

  4. Допишите слово как в строке ниже. Нажмите клавишу `<ESC>`{normal} для выхода
     из режима вставки.

  5. Используйте клавишу `e`{normal} для перехода к следующему незавершённому
     слову и повторите действия, описанные в пунктах 3 и 4.

На этой стро вы можете попрактиков в добавле текста.
На этой строке вы можете попрактиковаться в добавлении текста.

**Примечание.**
    По команде [a](a), [i](i) и [A](A) будет выполнено переключение в один
    и тот же режим вставки, различие только в том, где вставляются символы.


#	    Урок 1.6.3. ЕЩЁ ОДИН СПОСОБ ЗАМЕНЫ

** Чтобы заменить несколько символов в строке, наберите `R`{normal} **

  1. Переместите каретку в начало первого слова «xxx» в строке помеченной ✗

  2. Теперь нажмите [R](R) и введите число, указанное ниже во второй строке,
     чтобы заменить символы «xxx».

  3. Нажмите клавишу `<ESC>`{normal} для выхода из режима замены. Заметьте,
     что остаток строки не был изменён.

  4. Повторите эти шаги для замены оставшихся слов «xxx».

При сложении числа 123 с числом xxx сумма будет xxx.
При сложении числа 123 с числом 456 сумма будет 579.

**Примечание.**
    Режим замены похож на режим вставки, но каждый введённый символ удаляет
    существующий символ в строке.


#	    Урок 1.6.4. КОПИРОВАНИЕ И ВСТАВКА ТЕКСТА

** Чтобы копировать текст, используйте оператор `y`{normal},
	чтобы вставить — команду `p`{normal} **

  1. Установите каретку после символов «а)» в строке помеченной ✓

  2. Переключите редактор в визуальный режим командой `v`{normal} и переместите
     каретку вперёд до слова «первый».

  3. Нажмите клавишу `y`{normal} для [копирования](yank) подсвеченного текста.

  4. Переместите каретку в конец следующей строки, набрав команду `j$`{normal}.

  5. Нажмите клавишу `p`{normal} для [вставки](put) текста.

  6. Затем наберите команду `a`{normal}, напечатайте слово "второй"
     и нажмите клавишу `<ESC>`{normal}.

  7. Повторите шаги с 1 по 4, только установите каретку после слова «первый»,
     выделите, скопируйте и вставьте слово « пункт.»

а) Это первый пункт.
б)

**Примечание.**
    Для копирования одного слова можно использовать команду `yw`{normal}
    (оператор `y`{normal} и объект `w`{normal}).
    По команде `yy`{normal} будет скопирована целая строка, а по команде
    `p`{normal} вставлена.


#	    Урок 1.6.5. УСТАНОВКА ПАРАМЕТРОВ

** Чтобы при поиске или замене не учитывался регистр символов,
		      задайте соответствующие настройки **

  1. Найдите слово «игнорировать», набрав команду `/игнорировать`{normal}.
     Повторите поиск несколько раз, нажимая клавишу `n`{normal} .

  2. Установите параметр 'ic' (игнорировать регистр), набрав команду
~~~ cmd
	:set ic
~~~
  3. Ещё раз повторите поиск слова «игнорировать», нажимая клавишу `n`{normal}
     Заметьте, что теперь будут найдены слова «Игнорировать» и «ИГНОРИРОВАТЬ».

  4. Установите параметры 'hlsearch' и 'incsearch' командой
~~~ cmd
	:set hls is
~~~
  5. Повторно введите команду поиска `/игнорировать` и посмотрите, что получится

  6. Для возврата учёта регистра символов при поиске, введите команду
~~~ cmd
	:set noic
~~~
**Примечание.**
    Для отключения подсветки совпадений, наберите команду
~~~ cmd
	:nohlsearch
~~~
**Примечание.**
    Если требуется не учитывать регистр символов только единоразово, используйте
    ключ [\c](/\c) в команде поиска, например, `/игнорировать\c``<ENTER>`{normal}


#	    РЕЗЮМЕ УРОКА 1.6

  1. По команде `o`{normal} будет создана пустая строка ниже строки с кареткой
     и редактор будет переключен в режим вставки
     По команде `O`{normal} будет создана пустая строка выше строки с кареткой
     и редактор будет переключен в режим вставки

  2. По команде `a`{normal} выполняется вставки текста ПОСЛЕ позиции каретки.
     По команде `A`{normal} выполняется вставки текста в конце строки.

  3. По команде `e`{normal} выполняется установка каретки в конце слова.

  4. Оператор `y`{normal} используется для копирования текста,
     а по команде `p`{normal} происходит вставка скопированного текста.

  5. При нажатии клавиш `R`{normal} выполняется переключение в режим замены,
     а отключение - нажатием клавиши `<ESC>`{normal}.

  6. Наберите [:set](:set) xxx для установки параметра 'xxx'.

 Вот некоторые параметры (можно указывать полные или сокращённые наименования):
	'ic'	'ignorecase'	игнорирование регистра символов при поиске
	'is'	'incsearch'	отображение частичных совпадений при поиске
	'hls'	'hlsearch'	подсветка всех совпадений при поиске

  7. Для сброса параметра, добавьте приставку "no" к его названию
~~~ cmd
	:set noic
~~~
  8. Для переключения состояния параметра, добавьте приставку "inv" к названию
~~~ cmd
	:set invic
~~~

#	    УРОК 1.7.1. ВСТРОЕННАЯ СПРАВОЧНАЯ СИСТЕМА

** Используйте встроенную справочную систему **

  В редакторе Vim имеется мощная встроенная справочная система, и чтобы начать
  ей пользоваться, попробуйте один из трёх вариантов:
    - нажмите клавишу `<HELP>`{normal} (если она есть на клавиатуре)
    - нажмите клавишу `<F1>`{normal} (если она есть на клавиатуре)
    - наберите
	`:help`{vim}

  Ознакомьтесь с информацией в окне справочной системы, чтобы получить
  представление о том как работать с документацией.

  Нажмите `<CTRL-w><CTRL-w>`{normal} для перемещения каретки из одного окна
  в другое окно.
  Наберите `:q`{normal}, чтобы закрыть окно справочной системы (когда каретка
  находится в этом окне).

  Можно найти описание для любого понятия или команды, задав соответствующий
  аргумент команде `:help`{vim}.
  Попробуйте следующее (не забудьте нажать `<ENTER>`{normal}):
~~~ cmd
	:help w
	:help c_CTRL-D
	:help insert-index
	:help user-manual
~~~

#	    Урок 1.7.2. СОЗДАНИЕ СТАРТОВОГО КОМАНДНОГО ФАЙЛА

** Включим все возможности редактора Vim **

  Редактор Vim более функционален по сравнению с редактором Vi, но большинство
  из этих возможностей отключены при запуске программы. Чтобы активировать
  весь потенциала редактора, необходимо создать файл «vimrc».

  1. Создайте новый файл "vimrc". Его местонахождение зависит от используемой
     системы:
~~~ cmd
	:e ~/.vimrc
~~~
     для UNIX-подобных систем
~~~ cmd
	:e $VIM\_vimrc
~~~
     для MS Windows

  2. Теперь добавьте в этот файл содержимое шаблонного файла «vimrc»
~~~ cmd
	:r $VIMRUNTIME/vimrc_example.vim
~~~
  3. Запишите созданный вами файл «vimrc»
	`:w`{vim}

  Теперь при следующем запуске редактора Vim будет включена подсветка синтаксиса.

  Все необходимые вам настройки могут быть добавлены в файл «vimrc».
  Чтобы получить подробную информацию, наберите `:help vimrc-intro`{vim}


#	    Урок 1.7.3. ПОДСТАНОВКА КОМАНД

** Подстановка в командной строке выполняется при помощи следующих клавиш
			`<CTRL-D>`{normal} и `<TAB>`{normal}**

  1. Отключите совместимость с редактором Vi
~~~ cmd
	:set nocp
~~~
  2. Посмотрите, какие файлы есть в каталоге, набрав команду
	`:!ls`{vim}  или  `:!dir`{vim}

  3. Наберите начало команды для открытия файла на редактирование `:e`{vim}

  4. Нажмите клавиши `<CTRL-D>`{normal}, и будет показан перечень команд
     редактора Vim начинающихся с буквы «e».

  5. Нажмите клавиши `d<TAB>`{normal}, и будет отображено меню с возможными
     наименованиями команд для подстановки (или подставлено соответствующее
     наименование, если введённая команда достаточно уникально, например, для
     `:ed`{vim}<TAB> будет подставлена команда `:edit`{vim}).

  6. Используйте <TAB> или <CTRL-N> для перехода к следующему соответствию.
     Или <SHIFT-TAB> либо CTRL-P> для перехода к предыдущему соответствию.

  7. Выберите пункт edit. И команда `edit`{vim} будет автоматически подставлена
     в командную строку.

  8. Теперь напечатайте пробел и начало наименования существующего файла
	`:edit TE`{vim}

  9. Нажмите клавишу `<TAB>`{normal} и будет подставлено наименование файла,
     если оно уникальное.

**Примечание.**
    Подстановка работает для множества команд. Просто попробуйте нажать клавиши
    `<CTRL-D>`{normal} и `<TAB>`{normal} для любой из команд редактора.
    Это особенно полезно для команды `:help`{vim}.


#	    РЕЗЮМЕ УРОКА 1.7

  1. Чтобы открыть встроенную справочную систему редактора, наберите команду
     `:help`{vim} или нажмите клавишу `<F1>`{normal}, или `<HELP>`{normal}.

  2. Чтобы найти справочную информацию о какой-либо команде,
     наберите `:help cmd`{vim} (вместо «cmd» укажите наименование команды).

  3. Чтобы переместить каретку в другое окно, нажмите клавиши
     `<CTRL-w><CTRL-w>`{normal}.

  4. Чтобы закрыть окна справочной системы (если оно активно), наберите `:q`{vim}.

  5. Чтобы при запуске всегда применялись необходимые вам настройки, создайте
     стартовый командный файл vimrc.

  6. При наборе команды, начинающейся с символа `:`{normal}, нажмите клавиши
     `<CTRL-D>`{normal}, чтобы просмотреть возможные варианты подстановки.
     Нажмите клавишу `<TAB>`{normal} для подстановки необходимого варианта.


#	    ЗАКЛЮЧЕНИЕ

  На этом можно завершить первую часть занятий, посвящённые редактору Vim.
  Далее вы можете пройти [вторую часть](@tutor:vim-02-beginner) занятий.

  Целью данного курса было дать краткий обзор редактора Vim, достаточный для
  того, чтобы не возникало сложностей при его использовании. Это далеко не
  полный обзор, поскольку в редакторе Vim есть ещё много-много команд.

  Чтобы расширить свои познания, ознакомьтесь с руководством пользователя,
  набрав команду `:help user-manual`{vim}.

  Для дальнейшего чтения рекомендуется книга
	«*Vim - Vi Improved*», автор Steve Oualline, издательство New Riders.
  Она полностью посвящена редактору Vim и будет особенно полезна новичкам.
  В книге имеется множество примеров и иллюстраций.
  См. https://iccf-holland.org/click5.html

  Также рекомендуется книга «*Practical Vim*», автор Drew Neil,
				издательство Pragmatic Bookshelf.
  См. https://pragprog.com/titles/dnvim2/practical-vim-second-edition/

  Ещё одна книга более почтенного возраста и посвящена больше редактору Vi,
  чем редактору Vim, однако также рекомендуется к прочтению
	«*Learning the Vi Editor*», автор Linda Lamb,
				издательство O'Reilly & Associates Inc.
  Это хорошая книга, чтобы узнать всё, что только можно сделать в редакторе Vi.
  Шестое издание этой книги включает информацию о редакторе Vim.

  К тому же в Интернет есть множество ресурсов, где можно узнать многое
  о редакторе Vim. Вот некоторые из них:

  - *Learn Vim Progressively*:
    http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/
  - *Learning Vim in 2014*:
    http://benmccormick.org/learning-vim-in-2014/
  - *Vimcasts*:
    http://vimcasts.org/
  - *Vim Video-Tutorials by Derek Wyatt*:
    http://derekwyatt.org/vim/tutorials/
  - *Learn Vimscript the Hard Way*:
    http://learnvimscriptthehardway.stevelosh.com/
  - *7 Habits of Effective Text Editing*:
    http://www.moolenaar.net/habits.html
  - *vim-galore*:
    https://github.com/mhinz/vim-galore

  Эти уроки были составлены Michael C. Pierce и Robert K. Ware из Colorado
  School of Mines с учётом идей, предложенных Charles Smith из Colorado State
  University. E-mail: bware@mines.colorado.edu (теперь недоступен).

  Уроки доработаны Bram Moolenaar для использования в редакторе Vim.
  Уроки доработаны Felipe Morales для обучающего режима редактора Vim.

    Андрей Киселёв, перевод на русский язык, 2002, a_kissel@eudoramail.com
    Сергей Алёшин, перевод на русский язык, 2014, alyoshin.s@gmail.com
    Restorer, редактура, 2022, restorer@mail2k.ru
