Курс LFCS — часть 2: установка vi / vim и редактирование текста

Курс LFCS — часть 2: установка vi / vim и редактирование текста

Рубрики:

LFCS

Метки:

, , ,

Linux Foundation — некоммерческая организация, которая занимается подготовкой и сертификацией специалистов LFCS (Linux Foundation Certified Sysadmin). В рамках 2 из 20 уроков по подготовке к экзаменам Linux Foundation Вы узнаете о том, как установить vi / vim и использовать его для редактирования текстовых файлов в Linux.

Полный список уроков для прохождения индустриальной сертификации: Курс LFCS (Linux Foundation Certified Sysadmin): программа подготовки к экзаменам.

Содержание:

  1. Создаем каталог для выполнения практических примеров
  2. Что такое vi / vim
  3. Почему нужно уметь работать с vi / vim
  4. Как установить vi / vim, если их нет в операционной системе
    1. Установка vi / vim в Debian / Ubuntu
    2. Установка vi / vim в RHEL / CentOS
    3. Установка vi / vim в OpenSUSE
  5. Режимы текстовых редакторов vi / vim
  6. Значения клавиш в командном режиме редакторов vi / vim
  7. Меняем параметры текстовых редакторов vi / vim
  8. Работаем в текстовых редакторах vi / vim
    1. Вводим текст в новый файл с помощью vi / vim
    2. Находим и заменяем символы в тексте
      1. Находим текст в конкретной строке с помощью vi / vim
      2. Находим текст по всему содержимому файла с помощью vi / vim
      3. Заменяем найденный текст
      4. Заменяем найденный текст с подтверждением каждой замены пользователем
    3. Редактируем одновременно несколько файлов в vi / vim
      1. Переключаемся между редактируемыми текстовыми файлами
      2. Просматриваем список открытых буферов в vi / vim
      3. Переключаемся к конкретному буферу
      4. Используем временный именованный буфер как промежуточный
  9. Выводы

Создаем каталог для выполнения практических примеров

Прежде всего, давайте создадим новый рабочий каталог для практических занятий в рамках второго урока по подготовке к сертификации LFCS. Для этого вводим в командную строку команду mkdir LFCS/Lab2:

 

Новый каталог создан. Теперь Вам нужно перейти в него. Для этого вводим в командную строку команду cd LFCS/Lab2:

 

Курс LFCS — часть 2: установка vi / vim и редактирование текста

Теперь можно переходить к изучению текстового редактора vi / vim.

Что такое vi / vim

Утилиты vi / vim — это полноэкранные текстовые редакторы командной строки UNIX-подобных операционных систем (включая ОС семейства GNU / Linux). Первая версия программы vi была создана в 1976 году Биллом Джоем (известным ученым в сфере теории вычислительных систем и разработчиком ПО для UNIX). В 1991 году увидела свет улучшенная версия vi с расширенными возможностями — vim.

На сегодняшний день у этой серии текстовых редакторов есть следующие основные преимущества:

  • огромное число инструментов для работы с текстовыми данными;
  • неограниченные возможности для гибкой индивидуальной настройки;
  • большой потенциал в вопросах автоматизации рутинных действий;
  • скромные системные требования (можно использовать даже на очень слабых системах).

При этом стоит отметить, что vi / vim не отличаются интуитивно понятным функционалом. Следовательно, для уверенной работы с этими текстовыми редакторами нужно пройти хотя бы базовое обучение.

Почему нужно уметь работать с vi / vim

Без умения работать с текстовыми редакторами серии vi / vim будет очень сложно в любом из направлений сектора IT. Прежде всего потому, что эти утилиты предустановлены практически во всех современных дистрибутивах Linux. То есть, в большинстве случаев Вам не придется тратить время на скачивание и установку дополнительного ПО. Также vi / vim крайне нетребовательны к ресурсам компьютера. В результате чего отлично работают даже на очень узкоспециализированных встраиваемых системах с ограниченными вычислительными мощностями.

Текстовые редакторы vi / vim имеют обширное встроенное руководство, которое включает описание куда большего количества функций, чем стандартный файл справки MAN. Давайте откроем это руководство. Для этого сначала вводим в командную строку команду vi, чтобы запустить текстовый редактор:

 

Запускаем vi / vim в Linux

После этого нажимаем комбинацию клавиш Shift + ; (чтобы получить двоеточие — : ) и вводим команду help. После чего нажимаем клавишу Enter:

 

Открываем файл встроенной справки vi / vim в Linux

 

В результате у Вас откроется файл справки, который содержит описание всех возможностей текстового редактора:

Читаем файл встроенной справки vi / vim в Linux

Чтобы закрыть файл справки — снова нажимаем комбинацию клавиш Shift + ; и вводим символ q. После чего нажимаем клавишу Enter. Повторив эту процедуру, Вы закроете редактор vi / vim. Теперь давайте перейдем к более углубленному и систему изучению основного функционала программ.

Как установить vi / vim, если их нет в операционной системе

Скорее всего, в любом из дистрибутивов Linux, который Вам попадется во время работы, уже будут установлены текстовые редакторы vi / vim (как правило — именно vim, обладающий более широким функционалом, но иногда и vi). Однако даже в том случае, если по какой-то причине утилита отсутствует в системе — ее всегда можно установить самостоятельно.

Установка vi / vim в Debian / Ubuntu

Чтобы установить vi / vim в дистрибутивах семейства Debian / Ubuntu — вводим в командную строку команду sudo apt install vim:

Установка vi / vim в RHEL / CentOS

Чтобы установить vi / vim в дистрибутивах семейства Debian / Ubuntu — вводим в командную строку команду sudo apt install vim:

Установка vi / vim в OpenSUSE

Чтобы установить vi / vim в дистрибутивах семейства Debian / Ubuntu — вводим в командную строку команду zypper install vim:

Режимы текстовых редакторов vi / vim

Текстовые редакторы vi / vim имеют четыре режима взаимодействия с пользователем:

  1. Нормальный (командный) режим. Является основным режимом текстового редактора по умолчанию, в котором нажатия клавиш интерпретируются как соответствующие им команды. Чтобы перейти в этот режим из любого другого — нажимаем клавишу Esc.
  2. Режим командной строки (ex-mode). Режим ввода команд, который вызывается нажатием двоеточия — :. Сделать это можно с помощью комбинации клавиш Shift + : (именно этот режим Вы использовали ранее для вызова файла справки). Нужно помнить, что после ввода команды и нажатия клавиши Enter текстовый редактор автоматически возвращается в нормальный режим. Кроме того, клавишами (стрелка вверх) и (стрелка вниз) Вы можете переключаться между ранее введенными командами.
  3. Режим вставки. В этом режиме нажатия клавиш интерпретируются редактором не как команды, а как ввод текста в файл. Перейти в режим вставки Вы можете, например, нажав в нормальном режиме клавиши i (вставка с того места, где находится курсор) или a (вставка после курсора).
  4. Визуальный режим. Дополнительный режим, добавленный в текстовом редакторе vim. С его помощью можно выделять текст посимвольно, по отдельным словам, построчно или целыми блоками — и при этом визуально оценивать, какая именно часть текста выделена.

Понимание возможностей каждого из режимов и умение применять их для решения различных задач — основа работы с vi / vim.

Значения клавиш в командном режиме редакторов vi / vim

Как мы уже рассказали выше, в командном режиме vi / vim нажатия клавиш интерпретируются редакторами как соответствующие им команды. Потому давайте рассмотрим список основных горячих клавиш и их значения.

Клавиша Команда
h или (стрелка влево) Перейти на один символ влево
j или  (стрелка вниз) Перейти на одну строку вниз
k или (стрелка вверх) Перейти на одну строку вверх
l (строчная L) или (стрелка вправо) Перейти на один символ вправо
H Перейти в начало экрана
L Перейти в конец экрана
G Перейти в конец файла
w Передвинуться на слово вправо
b Передвинуться на слово влево
~ (Shift + `) Изменить регистр символа, на месте которого находится курсор (при этом курсор смещается на одну позицию вправо — к следующему символу)
0 (ноль) Перейти к началу текущей строки
^ (Shift + 6) Перейти к первому непустому символу текущей строки
$ (Shift + 4) Перейти к концу текущей строки
Ctrl + B Перейти назад на один экран
Ctrl + F Перейти вперед на один экран
i Вставить в текущую позицию курсора
I (заглавная i) Вставить в начале текущей строки
J Присоединить текущую строку к следующей (переместить следующую строку вверх)
a Добавить после текущей позиции курсора
o Создать пустую строку после текущей строки
O (заглавная o) Создать пустую строку перед текущей строкой
r Заменить символ в текущей позиции курсора
R Перезаписать в текущей позиции курсора
x Удалить символ в текущей позиции курсора
X Удалить символа перед (слева) текущей позицией курсора
dd Вырезать (для последующего вклеивания) текущую строку целиком
D Вырезать из текущей позиции курсора в конец строки (команда эквивалентна d$)
yX Назначить команде перемещения Xcopy (yank) соответствующее количество символов, слов или строк из текущей позиции курсора
yy или Y Yank (копировать) всю текущую строку
p Вставить после текущей позиции курсора (следующая строка)
P Вставить перед текущей позицией курсора (предыдущая строка)
. (точка) Повторить последнюю команду
u Отменить последнюю команду
U Отмените последнюю команду в последней строке (это будет работать, пока курсор находится в нужной Вам строке)
/ Искать символ, слово или фразу по тексту
n Перейти к следующему совпадению в поиске
N Перейти к предыдущему совпадению в поиске
:n Перейти к следующему файлу (когда редактируются несколько файлов одновременно)
:s Заменить символ, текст или фразу в указанном диапазоне строк
:e + имя файла Загрузить файл вместо текущего файла
:r + имя файла Вставить содержимое файла после текущей позиции курсора (следующая строка
:q Выйти без сохранения изменений
:w + имя файла Записать содержимое буфера в файл (чтобы добавить его к существующему файлу, используйте: w >> файл)
:wq Сохранить содержимое текущего файла и закрыть (эквивалентно x! или ZZ)
:r! + команда Выполнить команду и вставить вывод после текущей позиции курсора (следующая строка)

Символ ! означает принудительное выполнение команды.

Меняем параметры текстовых редакторов vi / vim

Во время работы с vi / vim в рамках этого урока для удобства мы будем использовать собственные настройки. Для этого соответствующие изменения нужно внести в файл ~/.vimrc.

Для начала вводим в командную строку команду echo set number:

 

С ее помощью Вы включите в vi / vim режим отображения номеров строк при просмотре текущего и всех новых текстовых файлов.

Теперь вводим в командную строку команду echo syntax on:

 

Данная команда позволит Вам включить в редакторе автоматическую подсветку синтаксиса (команд). То есть, существенно упростит чтение файлов с настройками и скриптами.

Далее вводим в командную строку команду echo set tabstop=4:

 

Так Вы установите размер отступа в 4 пробела. Тогда как значение по умолчанию — 8 пробелов.

Напоследок вводим в командную строку команду echo set autoindent:

 

Добавление этого параметра включит перенос отступа на следующую строку.

Важно: обратите внимание, что во всех случаях Вы перенаправили вывод команды echo (просто повторяющей ввод) с помощью команды >> в файл ~/.vimrc без перезаписи его содержимого (то есть, просто добавили соответствующие сроки в конце файла).

Меняем параметры текстовых редакторов vi / vim

Теперь, чтобы проверить результаты изменения стандартных параметров vi / vim, можем открыть файл ~/.vimrc. Для этого вводим в командную строку команду vim ~/.vimrc:

 

Проверяем, как работают новые параметры текстовых редакторов vi / vim

Точно таким же образом Вы в любой момент можете изменить настройки текстового редактора, чтобы упростить себе работу с программой в зависимости от требований текущей задачи.

Работаем в текстовых редакторах vi / vim

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

Вводим текст в новый файл с помощью vi / vim

Прежде всего, попробуем научиться редактировать файл с помощью vi / vim. При этом необязательно использовать существующий файл. Например, можно просто ввести в командную строку команду vim filename:

 

В результате текстовый редактор откроет новый буфер с именем filename (или тем, которое Вы указали у себя).

Буфер vi / vim — это сеанс программы, содержащий временную копию открытого файла, в которую пользователь может вносить изменения. Команда «Сохранить» перезаписывает старый файл новым содержимым из буфера — с учетом всех изменений, внесенных пользователем. Либо вставляет содержимое в другой файл (в том числе новый), указанный пользователем. Кроме того, буфер может содержать текст, введенный пользователем, но еще не сохраненный ни в каком файле. Например, если пользователь открыл редактор и начал вводить текст, то программа создаст временный буфер. После завершения ввода текста, такой временный буфер можно будет сохранить в существующий или новый файл на жестком диске. Существует множество видов буферов в vi / vim, но для использования редакторов на базовом уровне будет достаточно такого определения.

Для начала редактирования нажмите клавишу i, чтобы перейти в режим вставки. Теперь Вы можете ввести любой текст в том месте, где находится курсор (по умолчанию — в начале файла). В качестве примера мы снова будем использовать стихотворение анонимного автора под названием A happy child.

Вводим текст в новый файл с помощью vi / vim

Находим и заменяем символы в тексте

Вы можете сами находить в тексте нужные символы, слова и вручную редактировать их, заменяя на другие. Однако есть способ выполнить подобную замену намного быстрее — как в рамках конкретной строки, так и по всему содержимому файла; как с запросом подтверждения при каждой замене, так и без подтверждения.

Находим текст в конкретной строке с помощью vi / vim

Давайте попробуем найти текстовый шаблон в текущей строке. Для начала нажимаем клавишу Esc, чтобы выйти из режима вставки. После чего нажимаем клавишу f и сразу за ней — клавишу, содержащую искомый символ. Например, клавишу h. При этом курсор автоматически переместится к следующему вхождению данного символа в текущей строке. Чтобы перейти к следующему — снова нажмите клавишу f и за ней — клавишу h.

Находим текст по всему содержимому файла с помощью vi / vim

Не менее полезно уметь находить текст, соответствующий заданному шаблону, по всему содержимому текстового документа. Для этого нажимаем клавишу /, вводим символ или слово. Например, слово house. И для подтверждения — нажимаем клавишу Enter:

 

Находим текст по всему содержимому файла с помощью vi / vim

Важно: помните, что данная функция чувствительна к регистру — то есть, слова house и House будут считаться разными.

Однако слово house присутствует только в первой строке, тогда как этот инструмент поиска позволяет проверять все содержимое текстового файла. Попробуем найти слово, повторяющееся в разных строках — I:

 

Поскольку вхождения этого слова встречаются по всему тексту в разных строках, Вы можете переходить от одного вхождения к другому с помощью горячих клавиш:

  • n — перейти к следующему вхождению искомого шаблона;
  • N — перейти к предыдущему вхождению искомого шаблона.

Независимо от направления перехода (вперед или назад) перебор результатов поиска будет закольцован и по достижении конца (либо начала) файла — просто начнется сначала.

Заменяем найденный текст

Помимо поиска символа, слова или фразы бывает нужно осуществить их замену чем-то другим с помощью vi / vim (подобно тому, как в командной строке Linux это может делать команда sed). В качестве примера давайте попробуем найти слово I по тексту и заменить его словом You. Для этого нажимаем клавишу — : (то есть, комбинацию клавиш Shift + ;) для перехода в режим командной строки. И далее вводим команду %s/I/You/g, после чего нажимаем клавишу Enter:

 

В результате текст у Вас должен измениться следующим образом:

Заменяем найденный текст

 

Теперь давайте разберемся в том, какие элементы содержит команда %s/I/You/g:

  • s — замена (подстановка) символов;
  • % — поиск от первой до последней строки текста (Вы можете задать через запятую номера двух строк — с какой начинается, и с какой завершается поиск);
  • / — разделитель данных (опций и аргументов), передаваемых команде;
  • I — старый шаблон, который нужно найти в тексте и заменить;
  • You — новый шаблон, который нужно вставить вместо старого шаблона;
  • g — опция, указывающая команде, что осуществить замену требуется во всех вхождениях старого шаблона (без нее команда заменит только первое вхождение).

Заменяем найденный текст с подтверждением каждой замены пользователем

Неконтролируемая замена символов, слов и фраз по всему тексту применима не всегда, поскольку некоторые такие замены могут быть некорректными (не учитывать контекст, заменять части однокоренных слов и т. п.). Особенно нежелательно доверять программе полную замену шаблона в файлах скриптов или настроек. Однако и на этот случай в текстовых редакторах vi / vim есть решение — замена с запросом разрешения от пользователя.

Давайте попробуем вернуть тексту первоначальный вид — выполнить обратную замену слова You на слово I. Только на этот раз — с запросом подтверждения. Для этого нажимаем клавишу — : (то есть, комбинацию клавиш Shift + ;) для перехода в режим командной строки. И далее вводим команду %s/You/I/gc, после чего нажимаем клавишу Enter:

 

Теперь перед каждой заменой текстовый редактор будет задавать вопрос, разрешаете ли Вы ему такую операцию:

Заменяем найденный текст в vi / vim с подтверждением каждой замены пользователем

При этом Вам доступны следующие варианты ответа:

  • y — выполнить замену (да);
  • n — пропустить данное вхождение шаблона и перейти к следующему (нет);
  • a — выполнить подстановку в этом и всех последующих вхождениях шаблона;
  • q либо Esc — прекратить операцию поиска и замены;
  • l (строчная буква L) — выполнить данную замену и на этом завершить работу команды;
  • Ctrl-e либо Ctrl-y — прокрутить экран вниз и вверх относительно места, в котором предлагается осуществить замену.

Важно: учтите, что каждое из перечисленных в этом списке действий выполняется сразу после нажатия соответствующей клавиши, то есть — без дополнительного подтверждения нажатием клавиши Enter.

Редактируем одновременно несколько файлов в vi / vim

Текстовые редакторы vi / vim помимо всего прочего позволяют редактировать одновременно несколько разных файлов. Чтобы опробовать эту функцию — вводим в командную строку Linux команду vim file1 file2 file3:

 

При этом сначала редактор откроет для редактирования первый по порядку файл — file1.

Редактируем одновременно нескольких файлов в vi / vim

Переключаемся между редактируемыми текстовыми файлами

Попробуем перейти к редактированию файлов file2 и file3. Прежде всего, нажимаем клавишу — : (то есть, комбинацию клавиш Shift + ;), чтобы перейти в режим командной строки. После чего вводим символ n и за ним нажимаем клавишу Enter.

 

Для возвращения к редактированию предыдущего файла — снова вызываем режим командной строки. Потом вводим символ N (Shift + n) и нажимаем клавишу Enter.

Просматриваем список открытых буферов в vi / vim

Однако последовательное переключение между открытыми файлами не дает представления о том, сколько и каких именно файлов в данный момент открыто в редакторе. Скорее всего, большинству пользователей удобнее воспринимать такую информацию в формате списка. Для этого вызываем режим командной строки vi / vim. После чего вводим команду buffers и нажимаем клавишу Enter:

 

В данном списке отчетливо видно, что для редактирования открыты файлы file1, file2 и file3. Кроме того, напротив названий открытых буферов есть отметки со следующими значениями:

  • # — файл открыт в фоновом режиме;
  • а% — файл редактируется в данный момент.

Переключаемся между редактируемыми текстовыми файлами в vi / vim

Переключаемся к конкретному буферу

От возможности просмотреть список открытых буферов (редактируемых файлов) было бы не очень много пользы, если бы не существовало возможности быстро перейти к конкретному буферу. В vi / vim такая возможность предусмотрена разработчиками. Для этого переходим в режим командной строки, вводим команду buffer 3 и нажимаем клавишу Enter:

 

В результате текстовый редактор откроет буфер файла file3 для редактирования.

Используем временный именованный буфер как промежуточный

Предположим, что Вам нужно переместить какой-то блок текста выше или ниже в рамках одного документа, либо же вставить в несколько других файлов. В таких случаях удобнее всего воспользоваться временным буфером — промежуточной «остановкой» для текста.

В качестве примера снова воспользуемся файлом со стихотворением A happy child. Нажимаем кнопку Esc, чтобы перейти в командный режим. После этого перемещаем курсор на первую строку стихотворения.

Теперь Вам нужно обратиться к временному буферу и дать ему имя (одну из букв латинского алфавита — например, a). Для этого нажимаем клавишу — « (Shift + ) и затем сразу же клавишу a.

После этого последовательного нажимаем клавишу 4 и дважды клавишу y (либо Shift + y). Данное действие означает копирование в наш временный буфер четырех строк, начиная с отмеченной курсором. В результате первая половина нашего стихотворения сохранилась в буфер a.

Однако, как Вам воспользоваться содержимым временного буфера, чтобы вставить его в другой файл? Сначала перейдем к буферу файла file1. Для этого переходим в режим командной строки и вводим команду buffer 3:

 

Снова обратимся к нашему временному буферу — нажимаем клавишу — « (Shift + ) и затем сразу же клавишу a. После этого нажимаем:

  • клавишу p (строчную), чтобы вставить содержимое буфера a после строки файла, в которой сейчас находится курсор;
  • клавишу P (заглавную), чтобы вставить содержимое буфера a после строки файла, в которой сейчас находится курсор.

В результате скопированные строки будут вставлены сразу после первой строки файла (в нашем случае — пустой).

Вставляем скопированные строки из временного буфера vi / vim

При этом данную операцию можно повторять сколько угодно раз, в любом из файлов, открытых в редакторах vi / vim.

Выводы

Новичку непросто самостоятельно освоить основные навыки работы с vi / vim. Однако материалы данного урока позволяют уверенно выполнять типичные действия с текстовыми файлами. И демонстрируют колоссальные возможности этого текстового редактора.

Спасибо за время, уделенное прочтению статьи! Полный список уроков для прохождения индустриальной сертификации: Курс LFCS (Linux Foundation Certified Sysadmin): программа подготовки к экзаменам.

Если возникли вопросы — задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!

Спешите подать заявку! Группы стартуют 25 января, 26 февраля, 22 марта, 26 апреля, 24 мая, 21 июня, 26 июля, 23 августа, 20 сентября, 25 октября, 22 ноября, 20 декабря.
Что Вы получите?
  • Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
  • Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проведем вечерние онлайн-лекции на нашей платформе.
  • Согласуем с вами удобное время для практик.
  • Если хотите индивидуальный график — обсудим и реализуем.
  • Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
  • Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
А еще поможем Вам:
  • отредактировать или создать с нуля резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco, Linux LPI, кибербезопасность, DevOps / DevNet, Python, подайте заявку или получите бесплатную консультацию.

Рубрики:

LFCS

Метки:

, , ,

Больше похожих постов

1 комментарий. Оставить новый

  • Здравствуйте, Егор!
    Интересная статья, как для новичков, однако, пару замечаний:
    последние команды у меня, почему-то не сработали (замечу, что я далеко не новичёк и с вимом работаю более 10 лет).
    Так же, в некоторых командах — опечатки, например а%, вместо %а. В принципе, мелочи, согласен, однако, вспоминая те книги, по которым я «учил» вим, это может вызвать, у новичков, обратную реакцию.

    Ответить

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения


Поиск по сайту
Лучшее
Популярное
Рубрики
Меню