После запуска программы Вы попадаете в командный режим и редактор ожидает ввода ваших команд. Чтобы создать или отредактировать текст необходимо ввести "а". После чегоможно добавлять или редактировать текст. После окончания работы по редактированию текста необходимо нажать "Esc", чтобы перейти в командный режим.
В общем случае редактирование файла - это добавление, изменение, удаление текста. Чтобы выполнять эти задачи необходимо научиться переходить от одно страницы текста к другой, от одной строки к другой и между определенными точками на строке.
Добавление текста:
В редакторе VI существует две команды для добавления текста: insert "i" и append"a". Чтобы добавить текст с помощью команды "i" нужно подвести курсор в нужно место и нажать "i", после чего можно вводить текст. По завершению редактирования нажать "Esc". Единственное отличие команд "a" от "i" заключается в том что, текст появляется справа и слева (соответственно) от курсора.
Команды открытия "о"и"О" создают строку непосредственно выше или ниже текущей строки и переводят в режим ввода текста.
а- добавить текст после курсора
A- добавить текст в конце текущей строки
i- вставить текст до курсора
I- вставить текст в начале текущей строки до первого ненулевого символа
o- создать текст с начала новой строки, расположенной ниже текущей строки
расположенной ниже текущей строки
O- создать текст с начала новой строки, расположенной выше текущей строки
Удаление текста:
Для удаления символа можно использовать клавишу "х".
Чтобы удалить символ нужно подвести к нему курсор и нажать "х". Перед "х" может стоять число готорое говорит о том, сколько символов подряд нужно удалить.
Если вы находитесьв режиме ввода текста и хотите удалить символ, то воспользуйтесь клавишей "Backspace".
Так же вы можете удалить текст при помощи следующих ключей:
^w- отменить ввод текущего слова
@ - удалить на текущей строке весь введенный во время данного режима ввода текст
^v- удалить специальное значение, если есть, следующих вводимых символов.
Удалить слово или часть слова при помощи команды "d". Переместите курсор к первому удаляемому слову и введите команду "dw". Символ расположенный над курсором и последующие за ним будут стерты. Команда "dw" удаляет одно слово или знак пунктуации и пробелы, которые следуют за ним. Чтобы удалить 3 слова и две запятые, введите "5dw".
Удалить параграф можно при помощи корманды "d{"или"d}". Помните что вы можете восстановить удаленный текст используя команду "u".
xw- удалить текущее слово (где х количество слов)
@ - удалить текущую строку нового текста или весь текст в текущей строке
x - удалить текущий символ
ndx- удалить n-ый обьект текста х
dw- удалить слово над курсором и след. за ним пробел, или знак пунктуации
dd- удалить текущую строку
D - удалить часть строки справа от курсора
d)- удалить текущее предложение от текущей позиции позиции курсора до конца
d}- удалить текущий параграф от текущей позиции до конца
Перемещение курсора:
Передвигать курсор по файлу можно при помощи следующих клавиш:
h-перемещает курсор на один символ влево
l--//-//-//-//- вправо
j--//-//-//-//- на одну строку вниз
k--//-//-//-//- вверх
$- последний символ строки.
0(ноль)- первый символ строки
^- первый не нулевой символ строки
w- перемещает курсор к началу следующего слова
W- игнорирует все знаки пунктуации и перемещает курсор к следующему слову после пробела
e- перемещает курсор к последнему символу в следующем слове
E- -//-//-//- игнорируя все символы кроме пробела
b- перемещает курсор к первому символу предыдущего слова
B- используется подобно пред. команде, кроме того, что слова разделяются только символами пробел и новая строка.
(- перемещает курсор в начало текщуго предложения
)- перемещает курсор в начало следующего предложения
{- перемещает курсор в начало текущего параграфа, который ограничевается пустой строкой
}- перемещает курсор в начало следующего параграфа
H- перемещает курсор к первой строке экрана
M- перемещает курсор к средней строке экрана
L- перемещает курсор к последней строке экрана
Завершение работы с редактором VI:
Завершить работу можно при помощи следующих команд:
Shift+Z(ZZ)-Шифт+двойное нажатие клавиши Z (редактор сохранит имя созданного файла и запишит в него текст из буфера).
:w- запишет буфер в фаил
:q!- завершит работу и выйдет в shell
:wq!-запишет в буфер и выдет из редактора
Поиск символа в строке:
fx- осуществляет поиск указанного символа (х) справа от позиции курсора
Fx- -//-//-//- слева от текущей позиции курсора
tx- осуществляет перемещение курсора вправо на символ до указанного символа (х)
Tx- -//-//-//- влево на символ до указанного символа (х)
;- повторяет предедыдущий поиск символа. Запоминает символ и ищет следущее появление символа в текущей строке.
,- -//-//-//- , но обратном направлении. -//-//-//-
Номера строк:
Каждая трока файла имеет номер, соответствующий ее положению в буфере. Чтобы получить номер конкретной строки, преместите курсор на эту строку и введите команду "^q"
После чего команда выведет информацию следующего содержания:
- имя файла
- был ли буфер модифицирован после последней записи его в файл
- номер строки, на которой находится курсор
- общее количество строк в буфере
Для того что бы пронумеровать все строки или убрать нумерацию существуют команды
- :set nu
- :set nonu (соответсвенно)
- :set number
- :set nonumber
Поиск символов по шаблону:
Для поиска символов по шаблону возможно использование команд "/","?","n","N".
Эти команды позволяют осуществлять поиск вперед и назад в буфере следующего появления указанного шаблона символов. Команды "n","N" позволяют повторить последний поиск.
"/шаблон"- ведет поиск вперед по буферу следующего появления символов, указанных в шаблоне и помещает курсор на первый символ из шаблона.
"?шаблон"- ведет поиск в обратном направлении в буфере первого появления символов, указанныхв шаблоне и помещает курсор на первый символ из шаблона.
n- повторить последнюю команду поиска
N- повторить последнюю команду поиска в обратном напралении
Отмена последней команды:
Удалить последнюю введенную команду можно при помощи следующих команд:
u- отменить последню команду
U- восстановить текущую строку в состояние до произеденных изменений.
Перемещение текста:
Вы можете переместить текст из одного места в буфере в другое, удалив строки, а затем поместив их в требуемое место. Удаленный текст сохраняется во временном буфере. Переместите курсор на то место, куда вы хотите переместить текст и нажмите клавишу "р". Удаленные строки будут добавлены ниже текущей строки.
Также вы можете копировать одну или несколько строк текста во временный буфер и затем поместить копию этого текстана новое место, введите команду "y". Команда "y" имеет следующий общий формат:
[number]y[text_object]
Копирование строк с помощью команды "y" не удаляет их с прежднего места в файле, т.е. вы можете поместить один и тот же кусок текста в нескольких местах.
Способы использования "y"
nyx- копирование n-го обьекта текста типа "х" (предложение или параграф)
yw - создание копии слова
yy - создание копии текущей строки
nyy- создание копии n-го количества строк
y) - создание копии всего текста до конца предложения
y} - создание копии всего текста до конца параграфа
Назначение имени буферам:
Когда вы удаляете,изменяете или копируете текст, оригинальный текст сохраняется (до следующей операции удаления, изменения или копирования) в безымянном буфере, из которого его можно извлечь с помощью p или P. Таким образом, в восстановить из безымянного буфера можно лишь недавно помещенный туда текст.
Если вы хотите удалить,изменить или скопировать несколько секций текста и при этом сохранить их все (вплоть до максимально возможных 26), вы можете задать имя буфера перед командой удаления или копирования.Имя буфера имеет следующий синтаксис "c (двойные кавычки и c).
Например введите "ayy чтобы скопировать текущую строку в буфер с именем a,затем перейдите на другую строку и нажмите "byy чтобы скопировать еT в буфер b. Теперь перейдите в другое место в файле и нажмите "ap и "bp чтобы вставить содержимое буферов a и b.
Несколько других команд использующих буфер:
"a6yy : Копирует шесть строк (текущую и пять следующих) в буфер a
"bd1G : Удаляет все строки от текущей до первой (включая еT),и размещает их в буфере b.
"cy'c : Копирует текст начиная с текущей строки вплоть до строки отмеченной c и помещает скопиррованый фрагмент в буфер c. (отметки и буферы не связаны друг с другом и могут иметь одинаковые имена).
Специальные команды:
Команда "." (точка) повторяет последнюю введенную команду. Очень часто она используется с командой поиска.
Команда "j" обьеденяет строки. Чтобы ввести эту команду, поместите курсор на текущей строке и нажмите "Shift+j". Текуща строка обьединится со следующей. Если другой пользователь системы Юникс посылает Вам сообщение с использованием команды "write", а вы в это время редактируете с помощью VI, то посланное сообщение появится в вашем текущем окне поверх текста, который вы редактируете. Что бы восстановить редактируемый текст, нужно перейти в командный режим и нажать "^l". Редакор сотрет сообщение и востоновит окно в том виде, в котором оно было до прихода сообщения.
Временный возврат к shell:
Когда вы входите в vi, то сожержимое буфера заполняет ваш экран, делая невозможным возврат в shell. И редактор vi предлагает Вам 2 способа временного выхода в shell.
Первый способ это команда ":!x" где "х" это ваша команда shell. Shell запустит вашу команду, напечатов в ответ:
Для продолжения нажмите RETURN или введите команду для продолжения.
После чего редактор обновит экран и вернет курсор на прежнее место.
Второй способ отличается от первого только тем что ведет себя на эране по другому. Из командного режима введите ":sh" и нажмите RETURN. Подсказка команды shell появитсяна следующей строке. Введите ваши команды shell и когда Вам нужно будет вернуться к редактированию текста введите exit или "^d".
При временном преходе к shell даже изменения справочников не мешает возврату к буферу редактора при вводе exit или ^d.
Восстановление потерянного файла:
Если случайно произошло прерывание работы редактора, то не производится запись из буфера обратно в файл. Но vi сохраняет копию буфера. Когда вы вновь зарегистрируетесь в системе. вы можете восстоновить файл с помощью опции "-r". Введите "vi -r filename" и все или почти все изменения, которые вы выполнили до прерывания, вновь появятся в буфере vi, и вы сможете продолжить редактирование файла или записать буфер в файл и завершить работу с vi.
Просмотр файла:
Если Вам необходимо прочитать файл не внося никаких изменений то можно воспользоваться опцией "view file".
Специальные опции vi:
vi file1 file2 file3- ввести три файла в буфер редактора для редактирования
:w- записать файл
:n- и начать редактирование следующего
Замещение текста:
Чтобы заместить один фрагмент текста другим используйте команду :s. Несколько примеров:
:1,$s/the/THE/g Начиная с первой строки до последней (строки $), заместить все встреченные the на THE (g - означает глобальную замену)
:'a,.s/.*/ha ha/ От строки помеченной как a до текущей (строки .), заменить любой текст на строку "ha ha".
Команды начинающиеся с двоеточия:
Когда вы вводите двоеточие в командном режиме,курсор автоматически перемещается на командную строку и ждет ввода команды.
Некоторые примеры таких команд:
:w Записывает содержимое буфера в файл без выхода из vi
:w abc Записывает содержимое буфера в файл abc (если его нет он будет создан,иначе - перезаписан.) не выходя из vi
:1,10w abc Записывает строки с 1 по 10 в файл abc
:'a,$w abc Записывает строки от строки, помеченной как "a", до последней строки abc
:e abc Загружает для редактирования файл abc, вместо текущего файла. Выдает ошибку если изменения в текущем файле не были сохранены.
:e! abc Загружает для редактирования файл abc, не обращая внимание на несохраненные изменения в текущем файле.
:e # Загружает для редактирования предшествующий файл (команда :e# следующий)
:f abc Изменяет имя текущего буфера vi на abc
:q Выходит из редактора, если нет несохраненных изменений
:q! Выходит и уничтожает при этом все несохраненные изменения
:r abc Считывает файл abc в текущий буфер vi, и размещает его за курсором.
:!cmd Выполняет команду (who, sort, ls, etc.)
Комментарии
10 лет 32 недели назад
10 лет 33 недели назад
10 лет 33 недели назад
10 лет 33 недели назад
10 лет 35 недель назад
10 лет 35 недель назад
10 лет 35 недель назад
10 лет 45 недель назад
10 лет 45 недель назад
10 лет 46 недель назад