Vi
Материал из Wiki Open Book.
Содержание |
[править] Коротко о редакторе vi
vi — это стандартный текстовый редактор UNIX, который есть в любой UNIX–подобной операционной системе. Первая версия редактора появилась в 1976 году. Редактор построен на базе редактора командной строки ex.
Cуществует множество «клонов» vi: elvis, vim и др. Все они включают идентичный, основной набор команд. В ОС Linux наиболее распространённым является vim. В дистрибутиве Slackware Linux редактором vi по умолчанию является elvis.
В редакторе vi есть следующие основные режимы:
- командный режим
- режим редактирования
- ex-режим или режим последней строки.
По умолчанию, работа начинается в командном режиме. В этом режиме можно перемещаться по файлу и
выполнять некоторые «редактирующие» операции над текстом. Любое нажатие на клавиши в командном режиме воспринимается как команда.
Возврат в командный режим из режима редактирования осуществляется нажатием клавиши <ESC>.
Для входа в режим редактирования, который используется для ввода текста, нужно выполнить одну из команд.
Для входа в режим последней строки необходимо нажать клавишу : . Редактор vi имеет встроенный не экранный редактор, именуемый ex, который используется для некоторых операций редактирования, ориентированных на строки; управления файлами (сохранить, выйти, перечитать) и т.п.
[править] Команды редактора
Ввод команд осуществляется либо в командном режиме, либо в режиме последней строки.
:help # вывод справочной информации в рабочем окружении редактора :q # выход из help
[править] Открытие и создание файлов
Открывать или создавать файлы можно следующим образом:
vi [параметры] файл
например:
$ vi filename # открыть файл filename $ vi +3 filename # открыть файл filename с 3-ей строки $ vi -r filename # открыть файл filename только для чтения $ vi newfile # создать новый файл
Можно открывать сразу несколько файлов. Переход между открытыми файлами осуществляется при помощи команды :n и :N.
$ vi file1 file2 # открыть file1, затем file2 :n # перейти из файла file1 в file2 :N # вернуться из файла file2 в file1
Можно открывать или создавать файлы находясь в рабочем пространстве редактора. Для этого нужно воспользоваться режимом последней строки.
:e filename-2 # открыть файл filename-2. Если файла с таким именем
# не существует, он будет создан и открыт в редакторе
Следует учесть, что в этом случае редактор попросит сохранить текущий рабочий файл, если в него были внесены какие–либо изменения.
Также можно загрузить новый файл в буфер, не завершая работу с текущим файлом.
:r myfile # загрузить файл myfile в буфер :r! lsmod # загрузить вывод программы, например, lsmod в буфер :e! filename # открыть файл filename, отклонив изменения в текущем файле
Можно держать открытыми одновременно несколько буферов, используя команду sp или split. Редактор откроет файл в новом окне, «потеснив» уже открытые. Команда sp (без имени файла) откроет дополнительное окно для активного буфера. Переход между окнами осуществляется при помощи комбинации клавиш <CTRL+w>, нажатых 2 раза подряд.
:sp filename-2 # разделить рабочее окно и открыть файл :split filename-2 # разделить рабочее окно и открыть файл :sp # открыть окно для активного буфера <CTRL+w> (2 раза) # переход, переключение от одного окна к другому
В режиме последней строки работает "автоподстановка" по табуляции.
В случае, если нужно перечитать файл, необходимо воспользоваться командой e!. Все изменения будут отброшены и файл будет представлен в виде на момент его последнего сохранения.
:е! # перезагрузить, перечитать файл :e ++enc=cp1251 # перечитать файл и сменить кодировку символов (работает в vim)
[править] Работа в командном режиме
Выполняются операции перемещения по файлу, удаления, поиска.
При осуществлении перемещения по тексту при помощи команд w, e, b, следует отметить, что, например, «слово» /dev/sda3 редактор определит как 4 различных слова. Чтобы это слово считалось как одно «большое слово», необходимо вводить команды заглавными буквами: W, E, B.
Для поиска начала и конца предложения, абзаца и перемещения по ним следует воспользоваться ( ) и { } .
Команды, используемые для перемещения по тексту:
<ESC> # перейти в командный режим
h # перейти влево на один символ
j # перейти вниз на один символ
k # перейти вверх на один символ
l # перейти вправо на один символ
0 (ноль) или | # перейти в начало строки
$ # перейти в конец строки
w # перейти в начало следующего «слова», вперёд
W # перейти в начало следующего «большого слова», вперёд
e # перейти в конец «слова», вперёд
E # перейти в конец «большого слова», вперёд
b # перейти в начало «слова» или предыдущего «слова», назад
B # перейти в начало «большого слова» или предыдущего «большого слова», назад
( # перейти в начало текущего или предыдущего предложения, назад
) # перейти в начало следующего предложения, вперёд
{ # перейти в начало текущего или предыдущего абзаца, назад
} # перейти в начало следующего абзаца, вперёд
G # перейти в конец файла
<CTRL+B> # перейти на страницу вверх
<CTRL+F> # перейти на страницу вниз
Можно перемещаться по строкам, указав их номера в режиме командной строки:
:1 # перейти в начало файла :47 # перейти, например, к 47-й строке
В современных версиях редактора работают клавиши управления курсором и клавиши <PageUp>, <PageDown>.
Поиск по тексту:
/<текст> # искать <текст> в прямом направлении после курсора ?<текст> # искать <текст> в обратном направлении до курсора n # повторить поиск в прямом направлении N # повторить поиск в обратном направлении / # повтор последнего поиска в прямом направлении ? # повтор последнего поиска в обратном направлении
Операции «простого» редактирования:
x # удалить символ под курсором X # удалить предыдущий символ перед курсором J # объединить текущую строку со следующей r<символ> # заменить символ под курсором на <символ> dd # удалить текущую строку d<место> # удалить текст от курсора до его перемещения u # отменить последнюю операцию U # отменить последнюю операцию в текущей строке . # повторить операцию
[править] Работа в режиме редактирования
Переход в режим для ввода текста осуществляется при помощи следующих команд:
i # перейти в режим редактирования перед курсором a # перейти в режим редактирования за курсором I # перейти в режим редактирования в начале текущей строки A # перейти в режим редактирования в конце текущей строки o # перейти в режим редактирования в новой строке после текущей строки O # перейти в режим редактирования в новой строке перед текущей строкой сс # заменить текущую строку c<место> # заменить текст от курсора до <места> его назначения R # перейти в режим замены символов
В современных версиях vi, таких как vim и elvis, возможно «подсвечивать» текст, для того чтобы в последующем копировать, вырезать и вставлять фрагменты текста. Это, так называемый, визуальный режим. Переход в него осуществляется при помощи клавиши v, V или комбинации клавиш <CTRL+V> Далее, двигая курсор командами перемещения, можно выделить область текста.
v # перейти в визуальный режим для выделения текста посимвольно v<место> # перейти в визуальный режим и выделить текст от курсора до <места> V # перейти в визуальный режим для выделения текста построчно <CTRL+V> # перейти в визуальный режим для выделения прямоугольного участка текста d # вырезать выделенный фрагмент текста y # скопировать выделенный фрагмент текста p # вставить фрагмент текста после курсора P # вставить фрагмент текста перед курсором
Поиск и замена текста осуществляется при помощи команды :s/<regexp>/<replacement>/, где <regexp> — что нужно заменить и <replacement> - на что нужно заменить.
:s/<что>/<чем>/ заменить 1-ое совпадение в текущей строке :s/<что>/<чем>/g заменить все совпадения в текущей строке :%s/<что>/<чем>/g заменить все совпадения в файле :%s/<что>/<чем>/gc заменить все совпадения в файле с подтверждением
[править] Примеры комбинирования команд
Команды в редакторе vi можно комбинировать, указывая, сколько раз команда должна выполняться или несколько команд.
Например,
3G # перейти на строку с номером 3 3l # перейти на 3 символа вправо 4) # перейти на 4 предложения вперёд 2b # перейти на 2 слова назад 12} # перейти на 12 абзацев вперёд 10x # удалить 10 символов с текущей позиции курсора 5dd # удалить 5 строк, начиная с текущей d3w # удалить следующие 3 слова после курсора d} # удалить остаток абзаца после курсора d) # удалить остаток предложения после курсора с) # заменить остаток предложения после курсора c$ # заменить остаток строки после курсора v5l # перейти в экранный режим и выделить 5 символов вправо с текущего положения курсора v$ # перейти в экранный режим и выделить всю строку с текущего положения курсора vG # перейти в экранный режим и выделить весь файл с текущего положения курсора
[править] Некоторые настройки редактора
Редактор 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 в файл <имя файла>

