Про редактор 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/?p=1345


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

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

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

Add your comment now

You must be logged in to post a comment.