Краткое описание редактора vi/vim
vi - экранная версия редактора ex. vim - Vi Improved - улучшенный вариант редактора vi
vim полностью эмулирует все команды редактора vi и имеет расширенный набор параметров при вызове и множество дополнительных возможностей. Для вызова редактора можно использовать оба имени. Возможные варианты вызова редактора:
- vi [file_name]
vim [options][file_name]
vim [options] - - (с минусом) файл для редактирования читается с устройства стандартного ввода
vim -o file1 file2 - чтение во внутренние буферы двух файлов и одновременное открытие двух окон
ex - строчный командный режим
view [file_name] - просмотр файла в режиме read-only. Удобен для просмотра больших текстовых файлов, протоколов сообщений Linux, например.
Пути получения справочной информации о редакторе:
- в консоли: man vim
- список команд и их описание (в командном режиме):
- :help
- :help vim-modes
- :help
- :help index.txt
- :help starting
Переход к описанию отдельного термина в help-тексте осуществляется его выделением с помощью курсора и нажатием клавиш Ctrl/] . Переход к первоначальному описанию - Ctrl/t.
Начальные установки работы редактора определяются двумя файлами: /usr/local/etc/.exrc и .exrc в домашнем каталоге, если он есть. Т.к. последним выполняется файл .exrc в корневом домашнем каталоге, то есть возможность самостоятельно отpедактиpовать его, изменив таким образом режим работы.
Например, в файл .exrc можно добавить команды:
- set sm - (showmatch) показывает соответствующую открывающую скобку ( или { после ввода закрывающей.
set smd - (showmode) индикатор режима вставки или замены.
Перед началом использования редактора полезно посмотреть, с какими параметрами вызван редактор. Команда :set (в командном режиме) выводит все параметры, чьи значения отличаются от значений по умолчанию. Редактоp vim имеет более 300 команд!
Режимы работы редактора
Редактор имеет несколько основных режимов:
Двойное нажатие Esc из любого режима приводит в командный.
Командный режим
Ctrl/z - приостановить редактор (или запустить новую оболочку)
Ctrl/w - выбрать команды управления окнами
Перемещение курсора в командном режиме l или R или spacebar - переместиться на один символ вправо
h или или backspace - переместиться на один символ влево
k или - - перейти на одну строку вверх
- (текущая колонка при этом останется прежней)
j или ? - перейти на одну строку вниз
- (текущая колонка при этом останется прежней)
0 - перейти к первой колонке текущей строки
$ - перейти к последнему символу текущей строки
n| - перейти к колонке n текущей строки
^ - перейти к первому печатаемому символу текущей строки
- - подняться вверх на одну строку к первому печатаемому символу
+ или enter - опуститься вниз на одну линию к первому печатаемому символу
- Позиционирование курсора на экране дисплея
H - перейти к первому печатаемому символу верхней строки экрана
M - перейти к первому печатаемому символу строки в середине экрана
L - перейти к первому печатаемому символу последней строки экрана
- "Листание" файла по страницам, содержащим один экран Вашего терминала
CTRL/f - продвинуться на одну страницу вперед
CTRL/b - вернуться на одну страницу назад
CTRL/d - продвинуться вперед на 1/2 страницы
CTRL/u - вернуться на 1/2 страницы
CTRL/e - продвинуться на одну строку вперед
CTRL/y - вернуться на одну строку назад
z +enter - переместить текущую строку наверх экрана
z- - переместить текущую строку вниз экрана
z. - переместить текущую строку в центр экрана
- Передвижение курсора по словам
Под словом в vi/vim понимается последовательность алфавитно-цифровых символов, разделенных не алфавитно-цифровыми символами или пробелами.
w - переместить курсор на одно слово вправо
W - переместить курсор на одно слово, разделенное пробелами, вправо
b - переместить курсор на одно слово влево
B - переместить курсор на одно слово, разделенное пробелами, влево
e - переместить курсор в конец текущего или следующего слова
E - переместить курсор в конец текущего или следующего слова, разделенного пробелами.
- Включение нумерации строк
Для включения нумерации строк следует выполнить команду
- :set nu
В качестве номера строки можно задавать не только номер в явном виде, но и символы:
- $ - это последняя строка
- . - это текущая строка
- % - это сокращение для 1,$, т.е. от первой до последней строки
- Перемещение по файлу
nG - перейти к строке n. Т.е., если набрать 1G, то Вы окажетесь в первой строке редактируемого файла. Если n не указано, то перейти к концу файла.
- Поиск по фрагменту
/фрагмент enter - найти фрагмент в тексте файла, двигаясь к концу файла
?фрагмент enter - найти фрагмент в тексте файла, двигаясь к началу файла
n - повторить предыдущую / или ? команду n раз
N - повторить предыдущую / или ? команду, двигаясь в обратном направлении
:g/фрагмент/nu - поиск строк, содержащих фрагмент по всему тексту, найденные строки будут напечатаны на экране с указанием номера
:v/фрагмент/nu - поиск строк, не содержащих фрагмент, по всему тексту
- Внесение изменений в редактируемый файл
r x - заменить текущий символ на символ x
R текст CTRL/[ - заменить несколько символов на текст
(т.е. Вы нажимаете R, затем набираете текст, на который хотите заменить последующие символы, после чего нажимаете одновременно CTRL и [)
cc текст CTRL/[ - заменить текущую строку на текст
C текст CTRL/[ - заменить символы от текущего до конца строки на текст
s текст CTRL/[ - вставить текст, начиная от текущего символа
S текст CTRL/[ - заменить текущую строку на текст
- Удаление в тексте
dl или x - уничтожить текущий символ
X - уничтожить символ перед текущим
diw - удалить слово
dis - удалить фразу ( набор слов с признаком конца фразы . ? !)
dd - уничтожить текущую строку
D - уничтожить содержимое строки, начиная с текущего символа
:x,y d - уничтожить строки с номерами от x до y
- Отмена и повтор изменений
. - повтор предыдущего изменения
u - отменить предыдущее изменение
U - восстановить первоначальный вид строки (даже если было сделано несколько изменений, но только если Вы не перемещали курсор из данной строки).
- Получение информации о файле
CTRL/g - помещает в командной строке экрана информацию о положении курсора, имени, размере и статусе редактируемого файла.
- Поиск по фрагменту с заменой
:x,y s/фрагмент1/фрагмент2/опции - замена в каждой строке диапазона строк от x до y каждого первого встретившегося в строке фрагмента1 на фрагмент2, где опции:
- g - глобальная замена: заменить все встретившиеся фрагменты1 на фрагмент2
- c - замена с проверкой (если замена нужна, Вы отвечайте "y").
- Копирование и перемещение текста
YY или Y - запомнить текущую строку в буфере
p - поместить содержимое буфера или удаленные строки после текущей строки
P - поместить содержимое буфера или удаленные строки перед текущей строкой
J - соединить текущую и следующую строки в одну
:x,y t z - скопировать строки от x до y после строки с номером z
:x,y m z - переместить строки от x до y после строки z
:n r имя_файла - скопировать файл имя_файла в редактируемый файл после строки с номером n. Если номер не указан, то после текущей строки, а если в качестве номера указан 0, то - перед первой строкой файла
:x,y w имя_файла - записать строки от x до y в файл имя_файла
- Bыход из редактора
ZZ - выход со спасением нового содержимого старого файла
ZQ - выход из редактора без всяких действий и условий
:x - выход со спасением нового содержимого файла
:wq - записать файл и выйти из vi/vim
:q! - выход без сохранения изменений
:e имя_файла - перейти (cо спасением отредактированного содержимого данного файла) к редактированию файла имя_файла
При сбое в работе редактора изменения в файл не заносятся, но сохраняется копия отредактированного текста в рабочих файлах.
vi -r имя_файла - восстановление файла по копии.
Сообщение о сбое и команде восстановления посылается по mail с просьбой не отвечать на это сообщение письмом.
|