Шпаргалка по Vi-образным

Историческая справка

История редактора vi началась в начале 70-тых, когда основным редактором для Unix систем был ed. Он считался очень сложным. Тогда Джордж Колоурис (George Coulouris), британский программист из Лондонского колледжа Королевы Марии, разработал редактор em (редактор для смертных) и привез его в Беркли, где за его доработку взялся Билл Джой, бывший руководитель исследовательского отдела Sun Microsystems. С его именем связаны NFS, командная оболочка sch. Он модифицировал редактор em и назвал его en, а позднее ex, на котором основан нынешний vi. На текущий момент самым распространённым в Unix системах редактором является Vim, автор которого Брам Моленар. Кстати, Vim имеет графическую версию, так называемый GVIM. В настоящее время Брам Моленар работает в Google. Можно только представить всю мощь, которую впитал код современного vim. Отчасти, становятся очевидны причины огромного количества поклонников редактора. Единственный недостаток редактора Vi, ощущения, которые испытает любой человек, открывший его впервые или после продолжительного перерыва. Для того, чтобы минимизировать неприятные моменты в ощущениях от использования «минималистского» редактора, рождена настоящая запись.

Как приучить виобразного

Существует прекрасный учебник, переведённый на русский язык. Для того, чтобы им воспользоваться мне понабилось набрать в терминале:

vimtutor

Ещё есть неплохой wiki учебник

Режимы работы

Проще всего для понимая уяснить сразу одну важную деталь. Vi образные редакторы имеют модальный интерфейс. Это значит, что одни и те же кнопки клавиатуры могут выполнять различные функции в зависимости от текущего режима работы. Сейчас важно запомнить эти режимы, остальное дело привычки.

Основные:
1. Командный режим или обычный (normal mode) — переключаемся — «ESC»
2. Режим редактирования или режим ввода, вставки — переключаемся « (от insert)
3. Ex-режим или режим последней строки — переключаемся — «:»

Дополнительные:
4. Режим поиска — переключаемся «/»
5. Визуальный режим — переключаемся «v»

Не забываем, изменению режима всегда предшествует нажатие клавиши «ESC». Это важно.

Как открыть файл в редакторе Vi

Тут все просто, но есть некоторые интересные моменты:

vi имя_файла

Таким образом, мы открываем существующий файл или создаем новый. Если мы желаем просто просмотреть файл, то это можно осуществить командой:

view имя_файла

Файл откроется в режиме «только чтение». А ещё можно открыть файл и приступить к редактированию определённой строки. Это очень часто оказывается полезным для правки конфигурационных файлов. Представьте, необходимость внести изменения 134 строчку какого нибудь файла. Всё просто:

vi +134 имя_файла

Как набирать текст в Vi

Теперь приступаем к редактированию текста. Сразу сделать это не поучиться, так как vi работает в командном режиме или обычном режиме (normal mode). Он ожидает ввода команд. Например, команды навигации.


h # перейти влево на один символ
j # перейти вниз на один символ
k # перейти вверх на один символ
l # перейти вправо на один символ

Небольшой трюк для запоминания — j похожа на стрелку вниз.

Чтобы вставить текст необходимо нажать клавишу «i». После того как ввод текста закончен, нажать ESC. Пожалуй, это самое сложное, научиться не забывать давить на неё при переходе от одной команды к другой, но к счастью это быстро запоминается, так как каждое забытое нажатие ESC порождает ещё несколько переключений для исправления ошибочно вставленного текста. Vi, как бы сам тренирует организм. Есть несколько команд, дающих радость вставки текста:


a # Добавление текста после текущей позиции курсора
A # Добавление текста в конец строки
i # Вставка текста в текущую позицию курсора (insert)
I # Вставка текста в начало строки
o # Вставить строку ниже текущей (сразу переходит и в режим ввода текста)
O # Вставить строку выше текущей (сразу переходит и в режим ввода текста)
R # Перейти в режим ввода с забиванием текста
r # Заменить один символ

И еще несколько команд, дающие радость редактирования:

x # удалить символ под курсором
X # удалить предыдущий символ перед курсором
J # объединить текущую строку со следующей
r<символ> # заменить символ под курсором на <символ>
dd # удалить текущую строку
d<место> # удалить текст от курсора до его перемещения
u # отменить последнюю операцию
U # отменить последнюю операцию в текущей строке
. # повторить операцию
с # команда аналогичная d, но после удаление переходит в режим ввода. Очень удобная альтернатива команде R
d<число>d # стирание числа строк начиная с текущей
yy # копирование текущей строки в неименованный буфер
y<число>y # копирование числа строк начиная с текущей в неименованный буфер
p # вставка содержимого неименнованного буфера под курсором
P # вставка содержимого неименнованного буфера перед курсором

И так, теперь мы теперь знаем обычный командный режим и режим редактирования.

Ex-режим или режим последней строки.

Чтобы переключиться в данный режим необходимо в командном режиме нажать «:». Теперь мы можем сохранять файлы и использовать команды надстройки.

Команды сохранения файла:


:w # Сохранить изменения
:w # имя_файла Cохранить в файл с именем имя_файла и остаться в нем
:wq! # Сохранить и выйти
:q! # Выйти без сохранения

Например, аналогом «сохранить как», будет команда:

:w filename # сохраняет файл с новым именем

Впрочем, сделав своё грязное дело, выскочить из vi можно и из обычного командного режима:

ZQ - выйти без сохранения
ZZ - записать файл и выйти

А ещё можно:

Ctrl-G /Ctrl-L - показать/спрятать информацию о файле.
Ctrl-R - перерисовать экран.

Команды надстройки:

Вводятся также — в режиме последней строки. Посмотреть весь перечень надстроек можно так:

:set all

Установленных просто:

:set

Вот ещё полезные надстройки:


:set ic # игнорировать регистр при поиске
:set hls # подсвечивать текст при поиске
:set wrap # переносить «длинные» строки
:set nowrap # отключить перенос «длинных» строк
:set nu[mber] # отобразить слева нумерацию строк
:set nonu[mber] # скрыть нумерацию строк
:set fileformat=dos # привести концы строк в файле к формату dos
:set fileformat=unix # привести концы строк в файле к формату unix
:syntax on/off # включить/выключить подсветку синтаксиса (работает в vim)
:set list # отобразить непечатные символы
:set autoindent # включить абзацный отступ
:set tabstop=4 # установить абзацный отступ в 4 символа

Ещё, можно перечитать файл заново. Например, мы что то набрали, запутались и решили выйти без изменений и зайти заново. Это равнозначно:

:e! # перечитать файл

Переход к нужной строке:

:135 # перейти на к 135-ой строке текстового файла

Режим поиска

В некоторых руководствах данную возможность выделяют как дополнительный режим — режим поиска. Используются команды:


/<текст> # искать <текст> в прямом направлении после курсора
?<текст> # искать <текст> в обратном направлении до курсора
n # повторить поиск в прямом направлении
N # повторить поиск в обратном направлении
/ # повтор последнего поиска в прямом направлении
? # повтор последнего поиска в обратном направлении

Можно использовать команды «:set ignorecase» для включения регистронезависимого поиска и «:set noignorecase» для его выключения.

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

Лучше не напрягаться и запомнить одну лишь команду:

:%s/TEXT1/TEXT2/g

Где,
g — заменить все найденные слова;
c - подтверждать каждую замену;
i - игнорировать регистр.

Поясню, уберем g — замена будет произведена только в первом найденном слове. Уберете %, поиск и замена будет произведена только в текущей строке, а не во всем документе. Можно ещё так:

:%s/TEXT1/TEXT2/gc
:%s/TEXT1/TEXT2/gi

Визуальный режим

Можно выделять текст. Для того чтобы перейти в визуальный режим, используется клавиша «v». Большая «V» выделяет текст строками. С выделенным текстом можно проводить стандартные операции, например, копирование «yy», удаление «d».

Для удовольствия

Что же приводит в восторг при использовании редактора? Наверное, факт того, что человечеству удалось создать мощный инструмент, заточенный под определённый круг задач, не перегруженный мастерами настройки, слоями абстракции и опциями, выносящими разум хозяину. Быстрый и удобный, идеологически правильный, идеальный пример совместимости версий. Vi имеет всё то, чего лишено большинство современных продуктов, пострадавших от маркетинговых компаний и погоней за баблом. Он не напоминает позолоченную какашку. Более того, он приятен в использовании и затягивает.

Метки в тексте

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

ma

Чтобы вернуться к метке

'a

Коэффициент повторения

Всем командам можно задать количество повторений. Например, можно что-нибудь скопировать «yy» и вставить 10 раз — «10p». А потом удалить — «10dd». Ещё можно так «10i», потом вводите текст и после нажатия ESC результат повторяется 10 раз.

Проверяем парные скобки

Для того чтобы найти парную скобку, необходимо на первую поставить курсор и нажать «%».

Запуск внешних команд прямо из редактора

:!<команда>, например
:!ls

Надеюсь собранные справочные материалы окажутся полезны не только мне, но спасут нервы желающих выйти из Vi и случайно заблудшие в него души =)) или же подтолкнут любопытных…

One Comment

  1. klnm:

    Большинство шпаргалок по vi начинаются со строчки

    :q! # Выйти без сохранения

    и ей же и заканчиваются.

Leave a Reply

*