Linux Foundation — некоммерческая организация, которая занимается подготовкой и сертификацией специалистов LFCS (Linux Foundation Certified Sysadmin). В рамках 2 из 20 уроков по подготовке к экзаменам Linux Foundation Вы узнаете о том, как установить vi / vim и использовать его для редактирования текстовых файлов в Linux.
Полный список уроков для прохождения индустриальной сертификации: Курс LFCS (Linux Foundation Certified Sysadmin): программа подготовки к экзаменам.
Содержание:
- Создаем каталог для выполнения практических примеров
- Что такое vi / vim
- Почему нужно уметь работать с vi / vim
- Как установить vi / vim, если их нет в операционной системе
- Режимы текстовых редакторов vi / vim
- Значения клавиш в командном режиме редакторов vi / vim
- Меняем параметры текстовых редакторов vi / vim
- Работаем в текстовых редакторах vi / vim
- Выводы
Создаем каталог для выполнения практических примеров
Прежде всего, давайте создадим новый рабочий каталог для практических занятий в рамках второго урока по подготовке к сертификации LFCS. Для этого вводим в командную строку команду mkdir LFCS/Lab2
:
Новый каталог создан. Теперь Вам нужно перейти в него. Для этого вводим в командную строку команду cd LFCS/Lab2
:
Теперь можно переходить к изучению текстового редактора 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
, чтобы запустить текстовый редактор:
После этого нажимаем комбинацию клавиш Shift + ; (чтобы получить двоеточие — : ) и вводим команду help
. После чего нажимаем клавишу Enter:
В результате у Вас откроется файл справки, который содержит описание всех возможностей текстового редактора:
Чтобы закрыть файл справки — снова нажимаем комбинацию клавиш 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 имеют четыре режима взаимодействия с пользователем:
- Нормальный (командный) режим. Является основным режимом текстового редактора по умолчанию, в котором нажатия клавиш интерпретируются как соответствующие им команды. Чтобы перейти в этот режим из любого другого — нажимаем клавишу Esc.
- Режим командной строки (ex-mode). Режим ввода команд, который вызывается нажатием двоеточия — :. Сделать это можно с помощью комбинации клавиш Shift + : (именно этот режим Вы использовали ранее для вызова файла справки). Нужно помнить, что после ввода команды и нажатия клавиши Enter текстовый редактор автоматически возвращается в нормальный режим. Кроме того, клавишами ↑ (стрелка вверх) и ↓ (стрелка вниз) Вы можете переключаться между ранее введенными командами.
- Режим вставки. В этом режиме нажатия клавиш интерпретируются редактором не как команды, а как ввод текста в файл. Перейти в режим вставки Вы можете, например, нажав в нормальном режиме клавиши i (вставка с того места, где находится курсор) или a (вставка после курсора).
- Визуальный режим. Дополнительный режим, добавленный в текстовом редакторе 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, можем открыть файл ~/.vimrc
. Для этого вводим в командную строку команду vim ~/.vimrc
:
Точно таким же образом Вы в любой момент можете изменить настройки текстового редактора, чтобы упростить себе работу с программой в зависимости от требований текущей задачи.
Работаем в текстовых редакторах vi / vim
Теперь давайте попробуем на практике использовать режимы, функции и горячие клавиши текстовых редакторов vi / vim.
Вводим текст в новый файл с помощью vi / vim
Прежде всего, попробуем научиться редактировать файл с помощью vi / vim. При этом необязательно использовать существующий файл. Например, можно просто ввести в командную строку команду vim filename
:
В результате текстовый редактор откроет новый буфер с именем filename
(или тем, которое Вы указали у себя).
Буфер vi / vim — это сеанс программы, содержащий временную копию открытого файла, в которую пользователь может вносить изменения. Команда «Сохранить» перезаписывает старый файл новым содержимым из буфера — с учетом всех изменений, внесенных пользователем. Либо вставляет содержимое в другой файл (в том числе новый), указанный пользователем. Кроме того, буфер может содержать текст, введенный пользователем, но еще не сохраненный ни в каком файле. Например, если пользователь открыл редактор и начал вводить текст, то программа создаст временный буфер. После завершения ввода текста, такой временный буфер можно будет сохранить в существующий или новый файл на жестком диске. Существует множество видов буферов в vi / vim, но для использования редакторов на базовом уровне будет достаточно такого определения.
Для начала редактирования нажмите клавишу i, чтобы перейти в режим вставки. Теперь Вы можете ввести любой текст в том месте, где находится курсор (по умолчанию — в начале файла). В качестве примера мы снова будем использовать стихотворение анонимного автора под названием A happy child.
Находим и заменяем символы в тексте
Вы можете сами находить в тексте нужные символы, слова и вручную редактировать их, заменяя на другие. Однако есть способ выполнить подобную замену намного быстрее — как в рамках конкретной строки, так и по всему содержимому файла; как с запросом подтверждения при каждой замене, так и без подтверждения.
Находим текст в конкретной строке с помощью vi / vim
Давайте попробуем найти текстовый шаблон в текущей строке. Для начала нажимаем клавишу Esc, чтобы выйти из режима вставки. После чего нажимаем клавишу f и сразу за ней — клавишу, содержащую искомый символ. Например, клавишу h. При этом курсор автоматически переместится к следующему вхождению данного символа в текущей строке. Чтобы перейти к следующему — снова нажмите клавишу f и за ней — клавишу h.
Находим текст по всему содержимому файла с помощью vi / vim
Не менее полезно уметь находить текст, соответствующий заданному шаблону, по всему содержимому текстового документа. Для этого нажимаем клавишу /, вводим символ или слово. Например, слово house. И для подтверждения — нажимаем клавишу Enter:
Важно: помните, что данная функция чувствительна к регистру — то есть, слова 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:
Теперь перед каждой заменой текстовый редактор будет задавать вопрос, разрешаете ли Вы ему такую операцию:
При этом Вам доступны следующие варианты ответа:
y
— выполнить замену (да);n
— пропустить данное вхождение шаблона и перейти к следующему (нет);a
— выполнить подстановку в этом и всех последующих вхождениях шаблона;q
либоEsc
— прекратить операцию поиска и замены;l
(строчная букваL
) — выполнить данную замену и на этом завершить работу команды;Ctrl-e
либоCtrl-y
— прокрутить экран вниз и вверх относительно места, в котором предлагается осуществить замену.
Важно: учтите, что каждое из перечисленных в этом списке действий выполняется сразу после нажатия соответствующей клавиши, то есть — без дополнительного подтверждения нажатием клавиши Enter.
Редактируем одновременно несколько файлов в vi / vim
Текстовые редакторы vi / vim помимо всего прочего позволяют редактировать одновременно несколько разных файлов. Чтобы опробовать эту функцию — вводим в командную строку Linux команду vim file1 file2 file3
:
При этом сначала редактор откроет для редактирования первый по порядку файл — file1
.
Переключаемся между редактируемыми текстовыми файлами
Попробуем перейти к редактированию файлов file2
и file3
. Прежде всего, нажимаем клавишу — : (то есть, комбинацию клавиш Shift + ;), чтобы перейти в режим командной строки. После чего вводим символ n
и за ним нажимаем клавишу Enter.
Для возвращения к редактированию предыдущего файла — снова вызываем режим командной строки. Потом вводим символ N
(Shift + n
) и нажимаем клавишу Enter.
Просматриваем список открытых буферов в vi / vim
Однако последовательное переключение между открытыми файлами не дает представления о том, сколько и каких именно файлов в данный момент открыто в редакторе. Скорее всего, большинству пользователей удобнее воспринимать такую информацию в формате списка. Для этого вызываем режим командной строки vi / vim. После чего вводим команду buffers
и нажимаем клавишу Enter:
В данном списке отчетливо видно, что для редактирования открыты файлы file1
, file2
и file3
. Кроме того, напротив названий открытых буферов есть отметки со следующими значениями:
#
— файл открыт в фоновом режиме;а%
— файл редактируется в данный момент.
Переключаемся к конкретному буферу
От возможности просмотреть список открытых буферов (редактируемых файлов) было бы не очень много пользы, если бы не существовало возможности быстро перейти к конкретному буферу. В 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. Однако материалы данного урока позволяют уверенно выполнять типичные действия с текстовыми файлами. И демонстрируют колоссальные возможности этого текстового редактора.
Спасибо за время, уделенное прочтению статьи! Полный список уроков для прохождения индустриальной сертификации: Курс LFCS (Linux Foundation Certified Sysadmin): программа подготовки к экзаменам.
Если возникли вопросы — задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
1 комментарий. Оставить новый
Здравствуйте, Егор!
Интересная статья, как для новичков, однако, пару замечаний:
последние команды у меня, почему-то не сработали (замечу, что я далеко не новичёк и с вимом работаю более 10 лет).
Так же, в некоторых командах — опечатки, например а%, вместо %а. В принципе, мелочи, согласен, однако, вспоминая те книги, по которым я «учил» вим, это может вызвать, у новичков, обратную реакцию.