How-to-Install-and-Use-vi_vim-as-a-Full-Text-Editor-–-Part-2

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

LFCS

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

​​Подготовка к LFCS (Linux Foundation Certified Sysadmin) включает в себя части с 1 по 20:

 

Эта статья является частью из серии обучающих статей. В этой части, мы рассмотрим основные операции редактирования файлов в редакторе vi/m, которые требуются для сертификационного экзамена LFCS.

 

Выполнение операций редактирования основных файлов с использованием vi / vim

Vi был первым полноэкранным текстовым редактором, написанным для Unix. Несмотря на то, что он был мал и прост, для людей, использующих исключительно текстовые редакторы графического интерфейса, такие как NotePad++ или gedit, он оказался немного сложным для использования.

Чтобы использовать Vi, мы должны сначала понять каждый из 3-х режимов, в которых работает эта мощная программа.

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

Если на ваш дистрибутив не установлен vim, его можно установить следующим образом.

  • Ubuntu и производные: aptitude update && aptitude install vim
  • Дистрибутивы на основе Red Hat: yum update && yum install vim
  • OpenSUSE: zypper update && zypper install vim

 

Почему мне нужно учить vi?

Есть по крайней мере 2 веских причины для изучения vi:

  1. vi есть везде (независимо от того, какой дистрибутив вы используете), поскольку он требуется для POSIX.
  2. vi не потребляет значительного количества системных ресурсов и позволяет нам выполнять любые мыслимые задачи, не отрывая пальцев от клавиатуры.

 

Кроме того, vi имеет очень обширное встроенное руководство, которое можно запустить с помощью команды: help сразу после запуска программы. Это встроенное руководство содержит гораздо больше информации, чем справочная страница vi/m.

 

vi-Man-Pages

 

 

Запуск vi

Чтобы запустить vi, введите vi в командной строке.

 

Start-vi-Editor

 

Затем нажмите i, чтобы войти в режим Insert, теперь вы можете начать вводить текст. Еще одним способ запустить vi/m является:

# vi filename

 

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

 

 

Режимы Vi

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

Например, yy (или Y) копирует всю текущую строку, тогда как 3yy (или 3Y) копирует всю текущую строку вместе с двумя следующими строками (всего 3 строки). Мы всегда можем войти в командный режим (независимо от режима, в котором мы работаем), нажав клавишу Esc. Тот факт, что в командном режиме клавиши клавиатуры интерпретируются как команды вместо текста, как правило, путают начинающих.

2. В режиме ex мы можем манипулировать файлами (включая сохранение текущего файла и запуск внешних программ). Чтобы войти в этот режим, мы должны ввести двоеточие (:) из командного режима, за которым следует имя команды ex-mode, которая должна использоваться. После этого vi автоматически возвращается в командный режим.

3. В режиме вставки (для входа в этот режим обычно используется буква i ), где мы просто вводим текст. Нажатия клавиш приводят к появлению текста на экране (одним из важных исключений является клавиша Esc, которая выходит из режима вставки и возвращается в командный режим).

vi-Insert-Mode

 

 

Команды Vi

В следующей таблице показан список команд обычно используемых для vi. Команды редактирования файлов могут быть принудительно добавлены, добавив восклицательный знак в команду (например, <b.:q! принудительно завершает работу без сохранения).

Команда клавиш Описание
 h или стрелка влево Переход на один символ влево
 j или стрелка вниз Переход на одну строку вниз
 k или стрелка вверх Переход на одну строку вверх
 l (маленькая буква L) или стрелка вправо Переход на один символ вправо
 H Перейти в начало экрана
 L Перейти в конец экрана
 G Перейти в конец файла
 w Передвинуться на слово вправо
 b Передвинуться на слово влево
 0 (ноль) Перейти к началу текущей строки
 ^  Перейдите к первому непустым символам текущей строки
 $ Перейти к концу текущей строки
 Ctrl-B  Перейти назад на один экран
 Ctrl-F Перейти вперед на один экран
 i Вставить в текущую позицию курсора
 I (большая буква i) Вставить в начале текущей строки
 J (большая буква 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 Следующий файл; Когда для редактирования задано несколько файлов, эти команды загружают следующий файл.
 :e файл Загрузить файл вместо текущего файла.
 :r файл Вставьте содержимое файла после (следующей строки) текущей позиции курсора
 :q Выйти без сохранения изменений.
 :w файл Запишите текущий буфер в файл. Чтобы добавить к существующему файлу, используйте: w >> файл.
 :wq Записать содержимое текущего файла и закрыть. Эквивалентно x! или ZZ
 :r! команда Выполнить команду и вставить вывод после (следующей строки) текущей позиции курсора.

 

 

Параметры Vi

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

# echo set number >> ~/.vimrc
# echo syntax on >> ~/.vimrc
# echo set tabstop=4 >> ~/.vimrc
# echo set autoindent >> ~/.vimrc

 

vi-Editor-Options

  • Set number показывает номера строк, когда vi открывает существующий или новый файл.
  • syntax — включает подсветку синтаксиса, чтобы сделать код и файлы конфигурации более читабельным.
  • Set tabstop = 4 устанавливает размер отступа в 4 пробела (значение по умолчанию — 8).
  • Set autoindent переносит предыдущий отступ на следующую строку.

 

 

Поиск и замена

Vi имеет возможность перемещать курсор в определенное место (по одной строке или по всему файлу) на основе поиска. Он также может выполнять замену текста с подтверждением или без него.

а) Поиск в строке: команда f выполняет поиск строки и перемещает курсор на следующее вхождение указанного символа в текущей строке.

Например, команда fh переместит курсор на следующий экземпляр буквы h в текущей строке. Обратите внимание, что ни буква, ни символ, который вы ищете, не будут сразу отображаться в каком-то месте экрана, но символ будет выделен после нажатия клавиши Enter.

Например, это то, что мы получим после нажатия f4 в командном режиме.

 

Search-String-in-Vi

 

б) Поиск всего файла: используйте команду /, за которой следует слово или фраза для поиска. Поиск может быть повторен с использованием предыдущей строки поиска с помощью команды n или следующей (с использованием команды N). Это результат ввода /Jane в командном режиме.

 

Vi-Search-String-in-File

 

 

с) Vi использует команду (аналогичную команде sed) для выполнения операций замещения по диапазону строк или всего файла. Чтобы изменить слово «old» на «young» для всего файла, мы должны ввести следующую команду.

:%s/old/young/g 

 

Примечание: необходимо двоеточие в начале команды.

 

Vi-Search-and-Replace

 

 

Двоеточие (:) запускает команду ex, s в этом случае (для подстановки), % — это сокращение от первой строки до последней строки (диапазон также может быть указан как n, m, что означает «от строки n до строки m«), old — шаблон поиска, а young — заменяющий текст, а g указывает, что подстановка должна выполняться при каждом вхождении строки поиска в файл.

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

:%s/old/young/gc

 

Перед заменой исходного текста на новый, vi/m представит нам следующее сообщение.

 

Replace-String-in-Vi

 

 

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

 

 

Редактирование нескольких файлов за раз

Давайте введем файл vim file1 file2 file3 в нашей командной строке.

# vim file1 file2 file3

 

Сначала vim откроет file1. Чтобы перейти к следующему файлу (file2), нам нужно использовать команду: n. Когда мы захотим вернуться к предыдущему файлу, выполните следующие действия: N.

Чтобы перейти от file1 к file3.

а) Команда: buffers покажет список редактируемого файла.

:buffers

 

Edit-Multiple-Files

 

 

б) Команда: buffer 3 (без s в конце) откроет file3 для редактирования.

На изображении выше знак # указывает, что файл в настоящее время открыт, но в фоновом режиме, а% a отмечает файл, который в настоящее время редактируется. С другой стороны, пробел после номера файла (3 в приведенном выше примере) указывает, что файл еще не открыт.

 

 

Временные буферы vi

Чтобы скопировать пару последовательных строк (к примеру четыре) во временный буфер с именем a (не связанный с файлом) и поместить эти строки в другую часть файла позже в текущем разделе vi, нам нужно:

1. Нажмите клавишу ESC, чтобы убедиться, что мы находимся в режиме командной строки vi.

2. Поместите курсор в первую строку текста, который мы хотим скопировать.

3. Введите «a4yy», чтобы скопировать текущую строку вместе с тремя последующими строками в буфер с именем a. Мы можем продолжить редактирование нашего файла — нам не нужно вставлять скопированные строки немедленно.

4. Когда мы достигнем места для скопированных строк, используйте «a перед командами p или P для вставки строк, скопированных в буфер с именем a:

  • Введите «ap», чтобы вставить строки, скопированные в буфер a после текущей строки, на которой находится курсор.
  • Введите «aP», чтобы вставить строки, скопированные в буфер a перед текущей строкой.

 

Если есть необходимость, мы можем повторить вышеуказанные шаги, чтобы вставить содержимое буфера a в несколько мест в нашем файле.

Как вы заметили, vi/m — мощный и универсальный текстовый редактор для CLI.

 

Бонус. Если вы хотите расширить свои навыки редактора VI, мы бы посоветовали вам прочитать следующие два руководства, которые помогут вам найти полезные советы для редактора VI.

Часть 1: Полезные советы и подсказки для повышения ваших навыков в Vi/Vim — часть 1.

Часть 2: 8 интересных советов и рекомендаций для редактора «Vi / Vim» — часть 2.

 

 

Спасибо за уделенное время на прочтение статьи!

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

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

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco от Академии Ciscoкурсы Linux от Linux Professional Institute на платформе SEDICOMM University.

Курсы Cisco и Linux с трудоустройством!

Спешите подать заявку! Осталось пару мест. Группы стартуют 22 июля, а следующая 19 августа, 23 сентября, 21 октября, 25 ноября, 16 декабря, 20 января, 24 февраля.
Что Вы получите?
  • Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
  • Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проводим вечерние онлайн-лекции на нашей платформе или обучайтесь очно на базе Киевского офиса.
  • Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
  • Если хотите индивидуальный график — обсудим и осуществим.
  • Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
А еще поможем Вам:
  • отредактировать резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроим на работу в Cisco по программе Cisco Incubator, New Graduate и Experienced. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco CCNA Routing & Switching и Linux LPI, подайте заявку или получите бесплатную консультацию.
LFCS

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

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

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

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

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

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

Most Viewed Posts
Меню