Vi (vim, vim-tiny) - легендарный текстовый редактор Linux. ОСНОВЫ.

ВВЕДЕНИЕ

Vi (vim) - легендарный текстовый редактор, который по умолчанию включен практически во все UNIX - like операционные системы. Если не включен по умолчанию - то скорее всего существует пакет, который без труда можно установить.
В Kerio Control Linux он также предустановлен.

Для запуска редактора в консоли набираем vi или vim




 А дальше... а дальше если вы не знаете как, то не сможете даже выйти из этого чудного текстового редактора. 
Забегая вперед: если вы уже зашли в него, запутались, и хотите как можно быстрее свалить, нажмите <Esc><Esc>:q!  (т.е. сначала пару раз нажимаем кнопку <Esc>, затем  двоеточие, оно должно появиться слева, снизу, затем маленький символ q и восклицательный знак ! и только потом жмем <Enter>)

Почему я решил написать про vi в этом блоге и почему им полезно уметь пользоваться любому IT профессионалу:

Необыкновенный подход к реализации интерфейса пользователя, объясняется тем, что vi начинали делать еще во времена доисторических компьютеров (1976г). В те времена у компьютеров было очень мало ресурсов и клавиатуры сильно отличались от тех что сейчас лежат у нас на рабочих столах. И хотя уже давным давно компьютеры стали совсем другими, vi по прежнему популярен. На мой взгляд на это есть несколько причин:
Первая причина: как уже говорилось выше, исторически так сложилось что он много где предустановлен, и многие системные администраторы со стажем его просто уже знают.
Вторая причина:  Практически весь перечень команд задействован с помощью клавиш Ctrl, Shift, Esc, верхнего цифрового ряда и Enter конечно. Дело в том, что иногда что то идет не так и из за конфликта терминального клиента и сервера, почему то перестают нормально работать, некоторые сочетания клавиш, клавиши управления курсором (стрелки), функциональные клавиши (F1-F12), backspace и проч. и вот тогда vi становится палочкой выручалочкой.

Vi или Vim или Vim-tiny

Во многих системах набрав vi - вы получите vim. Но это не одно и тоже. Это такая исторически сложившаяся фигня. Сначала был vi, потом его допилили и появился vim (Vi IMproved). Может случится так, что набрав команду vi вы нарветесь на тот самый, старый  vi. Проблема здесь в том, что многие мануалы которые вы найдете на просторах интернета, предназначаются для полноценного vim который Vi IMproved, и многие команды и хоткеи просто не будут работать со старым vi. Ну и что бы окончательно все запутать, есть еще версия vim-tiny - это Vi IMproved, только для экономии места, в нем отключены многие модули. 
Версия vim в Kerio Control:


По сути он ведет себя так как старый злой добрый vi.

Если честно, я не разделяю мнение фанатиков vim, которые проповедуют то что vim лучший, однако учитывая его незыблемость на Linux платформе, считаю что каждый хороший специалист должен уметь работать хотя бы с vim-tiny. т.к. скорее всего именно он подвернется под руку в тяжёлой жизненной ситуации (kerio control cli, vmware esxi cli, ddwrt cli ...). А вот использовать полноценный vim со всеми доступными плагинами для написания скриптов и программ, это уже дело вкуса - личное дело каждого. Существует 100500 современных редакторов и IDE которые, на мой личный взгляд, намного удобнее динозавра из 70х прошлого века. 


НАЧАЛО (читаем очень внимательно)

Самое главное что надо понять, это то что в редакторе vim (здесь и далее под vim понимается версия vim-tiny) есть несколько режимов работы. И в зависимости от того в каком режиме вы сейчас находитесь, очень сильно зависит как среагирует редактор на нажатие одних и тех же клавиш. Например если нажмем i в "основном режиме" - vim перейдет в режим "вставки" (insert), а если нажмем i в режиме "вставки" - vim напечатает символ i. С первого взгляда переключение режимов выглядит по дурацки, но в 70х это был наверное единственный способ сделать редактор более функциональным. 

Итак, в vim есть такие режимы как "Основной"(командный), "Вставка", "Визуальный". Основной режим предназначен для навигации по файлу, управлению окнами, поиску, управлению редактором и проч 100500 функций вима про которые вы никогда не узнаете. 

В основной режим мы попадаем как только запускаем vim. 

Режим "Вставка" предназначен для непосредственного вставки и редактирования текстового фрагмента. Для перехода в режим редактирования, сначала необходимо попасть в основной режим, а затем нажать одну из следующих клавиш: i или a или o

Вот здесь есть неприятный нюанс, остановимся подробнее. Дело в том что в vim-tiny в режиме вставки ведет себя несколько иначе чем обычный vim. В полном vim вы можете нажать i и затем стрелками подогнать курсор правее последнего символа в строке:

после слова text добавляем 123, получается так:


в vim-tiny так сделать не получится, после нажатия i и перемещения курсора клавишами стрелок, vim-tiny сразу же выходит из режима вставки в основной режим: 


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

Итого:
i - переходим в режим вставки и начинаем добавлять текст слева от позиции курсора.
a - переходим в режим вставки и начинаем добавлять текст справа от позиции курсора.
o - переходим в режим вставки и начинаем добавлять текст снизу от позиции курсора.
Что бы перейти из режима вставки в командный режим, нажимаем ESC

Проверяем на практике:
1. Запускаем vim-tiny: vim
2. Нажимаем i затем test text затем ESC
3. Нажимаем :w test.txt затем  жмем Enter - файл сохранен:

Добавляем 123:

1. Подгоняем курсор к последнему символу в слове text:
2. Нажимаем a затем 123 затем ESC
3. Нажимаем :w затем  жмем Enter - файл сохранен (здесь, что бы сохранить, уже не надо вводить имя файла)
4. Нажимаем :q - вышли из vim.

Сейчас можно попробовать открыть файл hosts и добавить туда какое нибудь dns имя: 
1. Открываем файл hosts на редактирование vim /etc/hosts
2. Подгоняем курсор вниз файла, нажимаем o затем набираем 8.8.8.8 google.
3. Нажимаем :wq
Проверяем:  ping google



Несколько советов: 

Vim-tiny в отличие от vim не отображает в каком режиме в данный момент находится редактор. Поэтому если сомневаетесь, перед тем как что то делать, нажмите несколько раз ESC что бы 100% быть уверенным что вы сейчас в командном режиме.

Если все пошло не так и файл после попыток редактирования совсем поломался, жмем <Esc><Esc>:q! таким образом файл будет закрыт без сохранения, можно пробовать редактировать его повторно.

Сейчас я рассмотрел только самые самые азы vim-tiny. Специально очень подробно рассмотрел базовую функцию редактирования текста. Надеюсь что сейчас, процесс изучения возможностей редактора vim будет более простым и понятным.


Комментарии