referat (664435), страница 3
Текст из файла (страница 3)
Эта команда удаляет текст только на текущей строке.
14. Модификация текста
Один из способов модификации текста представляют команды удаления и команды ввода текста. Другой способ, с помощью которого вы можете изменить текст, это задать команду, позволяющую одновременно удалять и создавать текст. В редакторе vi существуют 3 основные команды изменения текста: r, s и c.
14.1. Замена текста
rx - Заменить текущий символ (символ, на который показывает курсор) на x. Эта команда не устанавливает режим ввода текста и, следовательно, нет необходимости нажимать после нее клавишу ESCAPE.
nrx - Заменить n символов на x. После этой команды также не надо нажимать клавишу ESCAPE.
R - Заменяет только те символы, которые введены в режиме ESCAPE. Если будет достигнут конец строки, то эта команда добавит ввод как новый текст.
Например, вы хотите заменить слово acts на ants в следующем предложении:
The circus has many acts.
Поместите курсор под буквой c в слове acts и введите команду:
rn
Предложение будет иметь вид:
The circus has many ants.
Чтобы заменить слово many на 7777, поместите курсор под буквой m в слове many и введите команду:
4r7
Команда r заменит слово many на четыре цифры 7:
The circus has 7777 ants.
14.2. Подстановка текста
Команда подстановки текста заменяет символы, но затем позволяет вам продолжать ввод текста с того места, где вы нажали клавишу ESCAPE.
s - удалить символ, на который указывает курсор и добавить текст. После окончания ввода текста нажмите клавишу ESCAPE;
ns - удалить n символов и добавить текст. После окончания ввода текста нажмите клавишу ESCAPE;
S - заменить все символы в строке.
Когда вы вводите команду s, последний символ в строке символов, который будет заменен, переписывается со знаком $. Символ не стирается с экрана, пока вы не введете на его место новый символ, или не нажмете клавишу ESCAPE.
14.3. Изменение текста
Команда подстановки заменяет символы. Команда изменения заменяет объект текста и затем продолжает добавлять текст с этого места до тех пор, пока вы не нажмете клавишу ESCAPE.
Команда изменения может содержать аргумент text_object. Вы можете заменить символ, слово и так далее на новый текст:
ncx - заменить n-ый объект текста типа x (предложение, параграф);
cw - заменить слово или оставшиеся символы в слове на новый текст. Редактор vi печатает знак $, чтобы показать последний символ, который будет заменен;
ncw - заменить n слов;
cc - заменить все символы в строке;
ncc - заменить все символы в текущей строке и n верхних строк;
C - заменить оставшиеся символы в строке от курсора до конца строки; dfn nC заменить оставшиеся символы, начиная от курсора в текущей строке и во всех n верхних строках.
Команда "c" использует знак $, чтобы отметить последний символ, который должен быть замещен. После того как выполнилась команда изменения, вы находитесь в режиме ввода текста и можете вводить любой текст. Тескт будет храниться в буфере, пока вы не нажмете клавишу ESCAPE.
15. Извлечение и присоединение текста
Редактор vi предоставляет набор команд, которые разбивают текст в файл и набор команд, которые копируют часть текста и помещают в другое место в файле.
15.1. Перемещение текста
Вы можете переместить текст из одного места в буфере редактора vi в другое, удалив строки, а затем поместив их в требуемое место. Удаленный текст сохраняется во временном буфере. Переместите курсор на то место, куда вы хотите поместить текст и нажмите клавишу "p". Удаленные строки будут добавлены ниже текущей строки.
p - поместить содержимое временного буфера после курсора или ниже текущей строки.
Удаленная с помощью команды удаления строка может быть помещена в середине другой строки. Позиционируйте курсор между двумя словами, затем нажмите клавишу "p". Удаленная строка будет помещена после курсора.
Так как временный буфер сохраняет результат только последней команды, то команда "p" должна использоваться сразу же после команды удаления. Команда "p" используется также для копирования текста, помещенного во временный буфер командой "y"
15.2. Перемещение букв
Быстрым способом перемещения букв является комбинация команд "x" и "p" (xp). Команда "x" удаляет букву, "p" - помещает ее после следующего символа. Например, в следующем предложении есть ошибка:
A line of tetx
Поместите курсор под буквой "t" в комбинации "tx" и затем нажмите клавиши "x" и "p". В результате получим:
A line of text
15.3. Копирование текста
Вы можете копировать одну или несколько строк текста во временный буфер и затем поместить копию этого текста в определенное место в файле. Чтобы поместить текст на новое место, введите команду "y". Команда "y" имеет следующий общий формат:
[number]y[text_object]
Копирование строк с помощью команды "y" не удаляет их с прежнего места в файле, т.е. вы можете поместить один и тот же кусок текста в нескольких местах.
Обратите внимание, что эта команда позволяет указывать номер объекта текста, который будет копироваться.
16. Копирование и перемещение текста с использованием регистров
Редактор vi предоставляет набор команд, которые разбивают текст в файл и набор команд, которые копируют часть текста и помещают в другое место в файле.
Перемещение и копирование нескольких разделов текста в различные части файла является утомительной работой. Редактор vi предлагает вам использовать так называемые регистры, в которых вы можете хранить текст до тех пор, пока он вам не понадобится. Сохранить текст вы можете либо с помощью команды "y", либо с помощью команды удаления. Использование регистров особенно полезно, если часть текста должна появиться во многих местах в файле. Извлекаемый текст остается в указанном регистре пока вы не завершите работу с ним, либо закончите работу с редактором, либо поместите в этот регистр другой текст.
Общий формат команды:
[number]["X]command[text_object]
где X - имя регистра, состоящее из одной буквы верхнего регистра. Имени регистра должны предшествовать двойные кавычки.
17. Специальные команды
В этом подразделе приведены специальные команды, которые будут вам весьма полезны:
. - повторить последнюю команду;
j - объединить две строки;
^l - очистить экран и вновь отобразить его;
~ - заменить нижний регистр на верхний и vice versa (?).
17.1. Повторить последнюю команду
Команда "." (точка) повторяет последнюю введенную команду. Очень часто она используется с командой поиска.
17.2. Объединение строк
Команда "j" объединяет строки. Чтобы ввести эту команду, поместите курсор на текущей строке и нажмите клавиши SHIFT и j одновременно. Текущая строка объединяется со следующей строкой.
Например, вы имеете две строки текста:
Dear Mr.
Smith:
Объединим эти две строки в одну. Поместите курсор под любым символом в первой строке и введите команду "j". На экране появится строка:
Dear Mr. Smith:
Обратите внимание, что редактор vi автоматически ставит пробел между последним словом в первой строке и первым словом второй строки.
17.3. Очистить окно и восстановить текст
Если другой пользователь системы UNIX посылает вам собщение с использованием команды write, а вы в это время редактируете с помощью vi, то посланное сообщение появится в вашем текущем окне поверх текста, который вы редактируете. Чтобы восстановить редактируемый текст после того, как вы прочтете посланное сообщение, нужно перейти в командный режим. Если вы находитесь в режиме ввода текста, то нажмите "^l". Редактор vi сотрет сообщение и восстановит окно в том виде, в котором оно было до прихода сообщения.
17.4. Заменить нижний регистр на верхний и vice versa
Чтобы быстро заменить букву нижнего регистра на букву верхнего регистра, надо поместить курсор под этой буквой и нажать клавишу "~" (тильда). Вы можете заменить несколько букв, нажав столько же раз клавишу "~", либо поставив перед тильдой число требуемых замен.
18. Использование команд построчного редактора
Редактор vi имеет доступ ко многим командам построчного редактора ex. В этом подразделе обсуждаются некоторые наиболее часто используемые команды.
Команды редактора ex очень похожи на команды редактора ed.
Команды построчного редактора начинаются с символа ":" (двоеточие). После того, как вы введете двоеточие, курсор опускается в низ экрана и отображает двоеточие. Оставшаяся часть команды тоже появляется внизу экрана.
18.1. Временный возврат к shell
Когда вы входите в vi, то содержимое буфера заполняет ваш экран, делая невозможным выдачу команд для shell. Однако вам может это понадобиться. Например, вам необходимо будет получить информацию из другого файла для присоединения ее к текущему тексту. Вы можете получить эту информацию, запустив одну из команд shell, которая отображает текст файла на экране. Например, cat или pg. Однако процедура завершения работы с редактором и повторный вход в редактор потребуют времени и сил. Редактор vi предлагает вам два способа временного выхода из редактора для того, чтобы вы могли ввести команды shell (и даже редактировать другие файлы) не покидая сам редактор. Это команды :sh и :!.
Команда :! позволяет вам выйти из редактора и запустить команду shell одной командной строкой. Находясь в командном режиме редактора vi, введите :!. Эти символы будут напечатаны в низу экрана. Сразу же после символа ! введите команду shell. Shell запустит вашу команду, даст вам ответ и напечатает сообщение:
Hit return to continue
После того, как вы нажмете клавишу RETURN, vi обновит экран и курсор примет свое прежнее положение.
Команда редактора :sh позволяет вам делать то же самое, но ведет по другому себя на экране. Из командного режима редактора vi введите :sh и нажмите клавишу RETURN. Подсказка команды shell появится на следующей строке. Ведите ваши команды после подсказки так, будто бы вы работаете в нормальном режиме с shell. Когда вы будете готовы вернуться к редактору vi, введите ^d или exit. Экран обновит информация из вашего буфера и курсор вновь переместится на прежнее место.
При временном переходе к shell даже изменение справочников не мешает возврату к буферу редактора vi при вводе ^d или exit.
18.2. Запись текста в новый файл
Команда "w" позволяет вам создавать файл, копируя строки текста из файла, который вы в данный момент редактируете, в файл, который вы указали. Чтобы создать новый файл нужно указать строку или строки (номера строк) и имя нового файла в командной строке. Общий формат этой команды:
:line_number[, line_number]w filename
Например, чтобы записать третью строку буфера в файл three, введите:
:3w three
При успешном создании нового файла, редактор vi напечатает следующую информацию:
"three" [New file] 1 line, 20 characters
Чтобы записать текущую строку в файл, укажите . (точку) как адрес строки:
:.w junk
Создастся новый файл с именем junk. Он будет содержать только текущую строку буфера vi.
Вы можете записать часть буфера в новый файл, обозначив границы строк. Например, чтобы строки с 23-й по 37-ю записать в файл, введите следующую команду:
:23,37w newfile
18.3. Переход к указанной строке
Вы можете переместить курсор к любой строке в буфере, если введете команду:
:n
где n - номер строки в буфере.
18.4. Удалить остаток буфера
Одним из самых простых способов удаления всех строк от текущей строки и до конца буфера является использование команды "d" построчного редактора со специальнымим символами для текущей и последней строк:
:.,$d
где .(точка) - обозначает текущую строку;
$ - обозначает последнюю строку.
18.5. Добавить файл в буфер
Чтобы добавить текст из файла ниже указанной строки в буфер редактора, воспользуйтесь командой "r". Например, чтобы перенести содержимое файла data в ваш текущий файл, поместите курсор на то место, где должен стоять текст и введите команду:
:r data