У редактора Vi несколько режимов работы (и в этом состоит его главное отличие от других редакторов):
- «Командный режим» — перемещение по файлу, стирание текста и другие редактирующие функции, переход в него из любого другого режима <ESC>, иногда 2 раза;
- «Режим ввода» — ввод текста. Стирание и ввод текста происходит в двух разных режимах;
- «Режим строчного редактора ED» — более глобальные операции над текстом/файлом/редактором (записать файл, настроить редактор…). Переход в него из командного режима — «:».
Открыть/создать файл
vi mamapapa.txt — открыть один файл.
vi mama.txt papa.txt — открыть файл mama.txt, после выхода из него открыть файл papa.txt.
Файл открывается в командном режиме с помощью команды vi. Здесь можно просмотреть файл, переместиться по его содержимому, стереть текст, но внести изменения или ввести текст в этом режиме нельзя.
Создание файла происходит при помощи той же команды. Собственно, создание файла происходит в момент сохранения.
Для открытия или создания нового файла в командном режиме нужно набрать:
:e filename
Перед этим нужно сохранить предыдущий файл:
:w — сохраняет файл с существующим именем или
:sav filename — «Сохранить как».
Перемещение по файлу
Перемещение по файлу происходит с помощью стрелочек. Также можно использовать быстрые клавиши:
^ или 0 — в начало текущей строки;
$ — в конец текущей строки;
w — на слово вправо;
b — на слово влево.
Редактирование файла
Предположим, в нашем файле записан текст, который необходимо отредактировать. Для этого необходимо перейти в режим ввода. Самый простой способ — из командного режима нажатие клавиши «i». После чего можно приступать к вводу текста. <ESC> вернет нас к командному режиму.
Другие важные команды:
Команда |
Описание команды |
R,i |
переход в режим ввода — замена текста под курсором |
I |
переход в режим ввода с начала текущей строки |
o |
переход в режим ввода с новой строки под курсором |
O |
переход в режим ввода с новой строки над курсором |
a |
переход в режим ввода после курсора |
x |
стирание символа под курсором |
X |
стирание символа перед курсором |
dd |
стирание текущей строки |
d<число>d |
стирание числа строк, начиная с текущей |
yy |
копирование текущей строки в неименованный буфер |
y<число>у |
копирование числа строк начиная с текущей в неименованный буфер |
p |
вставка строки из неименованного буфера под курсор |
P |
вставка строки из неименованного буфера над курсором |
J |
слияние текущей строки со следующей |
u |
отмена последней команды |
. |
повтор последней команды |
Запись/выход
<ESC>:w<CR> — записать файл
<ESC>:w!<CR> — записать файл
Эта команда может помочь, если файл заблокирован другим пользователем, либо отсутствуют такие привилегии. При попытке записи без «!» будет выдано соответствующее предупреждение.
<ESC>:w new_file<CR>
Создать новый файл «new_file» и записать в него текущее содержимое. Если файл существует, будет показано предупреждение.
<ECS>:q<CR> — выйти из редактора.
Если файл был изменен, выйти не получится. В таких случаях необходимо добавлять после команды «!»:
<ECS>:q!<CR> — выйти из редактора не сохраняя изменения <ESC>:wq<CR> или <ESC>ZZ<CR> — записать файл и выйти
Коэффициент повторения
Дополнительные команды:
слияние текущей строки со следующей
Команда |
Описание команды |
^G |
показать информацию о файле |
G |
перейти в конец файла |
<number>G |
перейти на конкретную строку <number> |
:<number> |
перейти на <number> строк вперед |
:set nu[mber] |
отобразить слева нумерацию строк (:set nonu[mber] — спрятать нумерацию) |
:set wrap |
переносить длинные строки (:set nowrap — не переносить) |
:syntax on/off |
включить/выключить подсветку синтаксиса |
:colorscheme <name> |
задать цветовую тему (где <name> имя темы, TAB работает как авто-дополнение) |
/мама |
поиск текста «мама» в файле |
n |
повторить поиск |
:h или :help |
список возможной помощи (:viusage, :exusage) |
:set fileformat=dos
:set fileformat=unix |
привести концы строк в файле к виду dos или unix, соответственно |
:set ts=4 |
задать размер табуляции в 4 пробела |