Комментарии

Галерея

Опрос

Из каких стран идет больше всего спама, попыток взлома на ваши серверы?:

редактор VI

Аватар пользователя maximum

После запуска программы Вы попадаете в командный режим и редактор ожидает ввода ваших команд. Чтобы создать или отредактировать текст необходимо ввести "а". После чегоможно добавлять или редактировать текст. После окончания работы по редактированию текста необходимо нажать "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.)