Про редактор VI, ходит много анекдотов в интернете, но что самое интересное — знать его нужно — это неотъемлемая часть всех Unix систем.

На любой особенно легковесной системе, скажем так каком нибудь роутере с флешкой не всегда есть возможность проинсталить nano, mc и др., поэтому приходится использовать именно VI.

Молодые администраторы, или пользователи недавно познакомившиеся с любой Unix системой, очень сильно пугаются когда какой-либо файл открывается в VI и они не знают что делать дальше, как редактировать, как сохранить, или наоборот — выйти без сохранения.

Именно поэтому, я и решил написать эту статью, что бы немного помочь в этом разобраться.

Вообще, про VI можно писать и писать, но я хочу затронуть только самое важное — то что чаще всего может пригодится, особенно новичкам.

Итак, VI — стандартный текстовый редактор UNIX, который есть в любой UNIX–подобной операционной системе. Первая версия редактора появилась в 1976 году.

В редакторе VI есть следующие основные режимы:
командный режим
режим редактирования
ex-режим или режим последней строки.

По умолчанию, работа начинается в командном режиме. В данном режиме можно перемещаться по файлу и выполнять некоторые «редактирующие» операции над текстом. Любое нажатие на клавиши в командном режиме воспринимается как команда. Возврат в командный режим из режима редактирования осуществляется нажатием клавиши .

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

Для входа в режим последней строки необходимо нажать клавишу «Shift» и символ «:». Редактор vi имеет встроенный не экранный редактор, именуемый ex, который используется для некоторых операций редактирования, ориентированных на строки; управления файлами (сохранить, выйти, перечитать и т.п.)

Команды редактора VI:

:help             # вывод справочной информации в рабочем окружении редактора
:q                # выход из help

Открытие и создание файлов:

$ vi [параметры] файл

например:

$ vi filename         # открыть файл filename
$ vi +3 filename      # открыть файл filename с 3-ей строки
$ vi -r filename      # открыть файл filename только для чтения
$ vi newfile          # создать новый файл

Работа в командном режиме:

Команды, используемые для перемещения по тексту:

<ESC>  	               # перейти в командный режим
h 	               # перейти влево на один символ
j 	               # перейти вниз на один символ
k 	               # перейти вверх на один символ
l 	               # перейти вправо на один символ
0 (ноль) или |         # перейти в начало строки
$ 	               # перейти в конец строки
w 	               # перейти в начало следующего «слова», вперёд
W 	               # перейти в начало следующего «большого слова», вперёд
e 	               # перейти в конец «слова», вперёд
E 	               # перейти в конец «большого слова», вперёд
b 	               # перейти в начало «слова» или предыдущего «слова», назад
B 	               # перейти в начало «большого слова» или предыдущего «большого слова», назад
( 	               # перейти в начало текущего или предыдущего предложения, назад
) 	               # перейти в начало следующего предложения, вперёд
{ 	               # перейти в начало текущего или предыдущего абзаца, назад
} 	               # перейти в начало следующего  абзаца, вперёд
G 	               # перейти в конец файла
<CTRL+B> 	       # перейти на страницу вверх
<CTRL+F> 	       # перейти на страницу вниз

Можно перемещаться по строкам, указав их номера в режиме командной строки:

:1 	               # перейти в начало файла
:14 	               # перейти, например, к 14-й строке

Поиск по тексту:

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

Операции «простого» редактирования:

x 	               # удалить символ под курсором
X 	               # удалить предыдущий символ перед курсором
J 	               # объединить текущую строку со следующей
r<символ> 	       # заменить символ под курсором на <символ> 
dd 	               # удалить текущую строку
d<место> 	       # удалить текст от курсора до его перемещения
u 	               # отменить последнюю операцию
U                      # отменить последнюю операцию в текущей строке
. 	               # повторить операцию

Работа в режиме редактирования:

Переход в режим для ввода текста осуществляется при помощи следующих команд:

i  	               # перейти в режим редактирования перед курсором
a  	               # перейти в режим редактирования за курсором
I 	               # перейти в режим редактирования в начале текущей строки
A 	               # перейти в режим редактирования в конце текущей строки
o 	               # перейти в режим редактирования в новой строке после текущей строки
O 	               # перейти в режим редактирования в новой строке перед текущей строкой
сс 	               # заменить текущую строку
c<место> 	       # заменить текст от курсора до <места> его назначения
R 	               # перейти в режим замены символов

Переход в визуальный режим осуществляется при помощи клавиши v, V или комбинации клавиш Далее, двигая курсор командами перемещения, можно выделить область текста

v	                # перейти в визуальный режим для выделения текста посимвольно
v<место>	        # перейти в визуальный режим и выделить текст от курсора до <места>
V                       # перейти в визуальный режим для выделения текста построчно
<CTRL+V>                # перейти в визуальный режим для выделения прямоугольного участка текста
d		        # вырезать выделенный фрагмент текста
y		        # скопировать выделенный фрагмент текста
p		        # вставить фрагмент текста после курсора
P		        # вставить фрагмент текста перед курсором

Поиск и замена текста осуществляется при помощи команды :s///, где — что нужно заменить и — на что нужно заменить.

:s/<что>/<чем>/			заменить 1-ое совпадение в текущей строке
:s/<что>/<чем>/g		заменить все совпадения в текущей строке
:%s/<что>/<чем>/g		заменить все совпадения в файле
:%s/<что>/<чем>/gc		заменить все совпадения в файле с подтверждением

Некоторые настройки редактора:

Редактор vi поддерживает автоматический отступ при редактировании исходных текстов программ. Современные версии редактора могут самостоятельно включать автоматический абзацный отступ. Можно также включить его вручную выполнив команду :set autoindent.

:set autoindent	          # включить абзацный отступ
<CTRL+D>	          # увеличить уровень отступа
<CTRL+T>	          # уменьшить уровень отступа
:set tabstop=4	          # установить абзацный отступ в 4 символа

Полезными также могут оказаться следующие команды:

: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)

Завершение работы:

Завершение работы в редакторе осуществляется при помощи следующих команд, или их комбинаций:

:q		                # выход из файла (если не внесено никаких изменений)
:q!		                # выход из файла без сохранения
:wq		                # выход из файла с сохранением
:x		                # выход из файла с сохранением
:ZZ                             # выход из файла с сохранением
:w		                # сохранить файл без выхода
:w <имя файла>	                # сохранить буфер в файле <имя файла>
:5,125 w <имя файла>            # сохранить файл c 5 строки по 125 в файл <имя файла>

Думаю, что этого вполне достаточно, что бы овладеть минимальными необходимыми знаниями по редактору VI.

Напоминаю всем копирующим мой контент о существовании закона "Об авторском праве".
В связи с этим, прошу во избежании конфликтов при копировании данного материала, ставить на него ссылку:

http://noted.org.ua/1345


Также, вы можете отблагодарить меня переслав любую сумму на любой кошелек WebMoney, для поддержания данного ресурса. Или просто админу на пиво ;)

Кошельки для получения благодарности:
R386985788805
U234140473141
Z147712360455

На данной странице нет комментариев, возможно они закрыты. Если Вы хотите оставить свой комментарий, перейдите на специально созданный раздел

Add your comment now

Please note: JavaScript is required to post comments.