Смекни!
smekni.com

Работа с редактором Vi. Другие текстовые редакторы UNIX (стр. 2 из 6)

5. Завершение работы c vi

Когда вы закончите работу с текстом, необходимо записать содержимое буфера в файл и возвратить управление shell. Для этого нажмите клавишу SHIFT и дважды нажмите Z(ZZ). Редактор сохранил имя того файла, который вы указали в начале сеанса редактирования, и в этот файл перепишет текст из буфера. Обратите внимание, что внизу экрана дается имя файла и количество строк и символов в файле. Затем shell выдает вам подсказку.

Пример.

<a> This is a text file.<CR> I am adding text to<CR> a temporary buffer and<CR> now it is perfect.<CR> I want to write this file,<CR> and return to the shell.<ESC><ZZ> - - - - "stuff" [New file] 6 lines, 135 characters $

Вы также можете использовать команды :w и :q редактора vi для записи файла и окончания работы с редактором. Команды редактора начинаются с двоеточия (:) и появляются в последней строке экрана. Команда :w записывает буфер в файл. Команда :q завершает работу редактора и возвращает управление shell. Вы можете ввести эти команды раздельно, или в одной команде :wq

6. Перемещение курсора по экрану

Ранее вы познакомились с тем, как перемещать курсор с помощью клавишей h, j, k, l, BACKSPACE и SPACEBAR. В этом подразделе приводятся еще несколько команд, которые помогут вам быстро перемещать курсор по экрану. Эти команды выполняются в командном режиме.

6.1. Позиционирование курсора на символ

Для позиционирования курсора на символ в строке существуют три способа:

  • переместить курсор вправо или влево до нужного символа;
  • переместить курсор в начало или конец строки;
  • поиск символа на строке.

Переместить курсор на первый или последний символ в строке можно следующим образом:

$ - переместить курсор на последний символ в строке;
0(ноль) - переместить курсор на первый символ в строке;
^ - переместить курсор на первый ненулевой символ в строке.

Третий способ позиционирования курсора в строке - это поиск указанного символа на текущей строке. Если символ не найден на текущей строке, то появляется звуковой сигнал и курсор остается на прежнем месте. Существуют команды, которые проводят поиск по шаблону. Они будут описаны далее. Здесь приведем 6 команд для поиска внутри строки: f, F, t, T, ;(двоеточие) и ,(запятая). После f, F, t и T вы можете указать символ:

fx - осуществляет поиск указанного символа x справа от текущей позиции курсора;

Fx - осуществляет поиск указанного символа x слева от текущей позиции курсора;

tx - осуществляет перемещение курсора вправо на символ до указанного символа x;

Tx - осуществляет перемещение курсора влево на символ до указанного символа x;

; - повторяет предыдущий поиск символа. Команда ; запоминает символ и ищет следующее появление символа в текущей строке;

, - повторяет предыдущий поиск символа, но в обратном направлении. Команда ; запоминает символ и ищет следующее появление символа в текущей строке;

Команда - (минус) перемещает курсор на одну строку вверх, позиционируя его на первом ненулевом символе. Чтобы переместить курсор более чем на один символ, укажите пред знаком минус количество строк. Например, чтобы переместить курсор вверх на 13 строк, введите: 13-

Если эти строки находятся выше отраженного экрана, то окно переместится так, чтобы открыть их. Этот способ помогает быстро перемещаться по файлу. Если выше окажется меньше 13-ти строк, то звуковой сигнал подскажет вам, что вы сделали ошибку и курсор останется в своем прежнем положении.

Команда + (плюс) или <CR> перемещает курсор вниз на одну строку и позиционирует на первый непустой символ. Перед командой + можно указать количество строк, на которое вы хотите переместить курсор. Например, чтобы переместить курсор на 9 строк вниз, введите: 9+

Если некоторые строки расположены ниже текущего экрана, то окно переместится вниз, чтобы открыть их.

6.2. Позиционирование слов

Редактор vi предполагает, что слово - это строка символов, которая может включать в себя буквы, цифры и символы подчеркивания. В редакторе vi существует 6 команд позиционирования: w, b, e, W, B и E. Команды w, b, e рассматривают любой символ, отличный от буквы, цифры или подчеркивания, как разделитель, означающий начало или конец слова. Пунктуация до или после пустого пространства является разделителем слов. Символ начала или конца строки также является разделителем.

Команды W, B, E рассматривают пунктуатию как часть слова. Слова разделяются пустым пространством, которое состоит из символов пробел, табуляция и новая строка.

Команды позиционирования:

w - перемещает курсор к началу следующего слова;

nw - перемещает курсор к началу n-го слова; конец строки не останавливает движение курсора. Он продолжает подсчет слов с начала следующей строки;

W - игнорирует все знаки пунктуации и перемещает курсор на следующее после пробела слово;

e - перемещает курсор на последний символ в следующем слове;

E - перемещает курсор на последний символ в слове. Игнорирует все символы пунктуации за исключением пробела. Слова разделяются пробелами;

b - перемещает курсор к первому символу предыдущего слова;

nb - перемещает курсор к первому символу n-го предыдущего слова. Команда b не останавливается в начале строки и продолжает движение к началу строки;

B - используется подобно команде b, за исключением того, что слова разделяются только символами пробел и новая строка. Она рассматривает все другие символы пунктуации как буквы.

6.3. Позиционирование курсора на предложение

Редактор vi также распознает предложения. В редакторе vi предложение заканчивается знаками !, . или ?. Если эти разделители появляются в середине строки, то за ними должны стоять два пробела, чтобы vi их мог распознать.

Вы можете перемещать курсор от предложения к предложению в файле с помощью команд ( - открывающая скобка и ) - закрывающая скобка.

( - перемещает курсор в начало текущего предложения;

n( - перемещает курсор в начало n-го предложения выше текущего предложения;

) - перемещает курсор в начало следующего предложения;

n) - перемещает курсор в начало n-го предложения, следующего за текущим предложением.

6.4. Позиционирование курсора по параграфам

Параграфы распознаются редактором vi, если они начинаются после пустой строки. Если вы хотите перемещать курсор по параграфам, то при создании текста не забудьте в конце каждого параграфа поставить пустую строку.

{ - переместить курсор в начало текущего параграфа, который ограничивается пустой строкой;

n{ - переместить курсор в начало n-го параграфа, следующего за текущим параграфом;

} - переместить курсор в начало следующего параграфа;

n} - переместить курсор в начало n-го параграфа ниже текущей строки.

6.5. Позиционирование в окне

Редактор vi предоставляет вам 3 команды, которые позволяют вам позиционировать курсор в окне. Эти команды должны быть введены на верхнем регистре:

H - переместить курсор к первой строке экрана;
M - переместить курсор к средней строке экрана;
L - переместить курсор к последней строке экрана.

7. Позиционирование курсора на неотображаемом тексте

В этом подразделе описывается, как переместить курсор на текст, который не отображен на текущем экране. Вы можете сделать это следующим образом:

  • прокрутка вперед и назад файла;
  • перейти к указанной строке в файле;
  • поиск по шаблону в файле.

Четыре команды редактора vi позволяют вам осуществлять прокрутку текста файла. Команды ^f (<CTRL>f) и ^d (<CTRL>d) проводят прокрутку экрана вперед, а команды ^b (<CTRL>b) и ^u (<CTRL>u) - прокрутку экрана назад.

Команда ^f осуществляет прокрутку вперед на одно окно текста, расположенного ниже текущего окна. Редактор vi очищает экран и выводит новое окно. Две последние строки текущего окна отображаются в верхней части нового окна. Если окно дополнено пустыми строками, то они помечаются знаком ~ (тильда)

Команда ^d осуществляет прокрутку на половину экрана, чтобы отобразить текст, расположенный ниже окна. Если курсор находится на последней строке файла и вы нажмете ^d, то vi подаст звуковой сигнал.

Команда ^b осуществляет прокрутку экрана назад на полное окно, чтобы отобразить текст, который находится выше текущего экрана. Редактор vi очищает экран и отображает новое окно. В отличие от команды ^f, команда ^b не оставляет в новом окне строки из текущего окна.

Команда ^u осуществляет прокрутку половины экрана, чтобы отобразить текст, расположенный выше окна. Если курсор достигнет начала файла, то vi подаст звуковой сигнал.

8. Переход на указанную строку

Команда G позиционирует курсор на указанную строку в окне. Если эта строка не находится в текущем экране, то G очищает экран и отображает окно, содержащее эту строку. Если не указана строка, то команда G перемещает курсор на последнюю строку файла:
G - переместить курсор на последнюю строку в файле;
nG - переместить курсор на строку n.

9. Номера строк

Каждая строка файла имеет номер, соответствующий ее положению в буфере. Чтобы получить номер конкретной строки, переместите курсор на эту строку и введите команду: ^g

В нижней части экрана команда ^g поместит информацию:

  • имя файла;
  • был ли буфер модифицирован после поледней записи его в файл;
  • номер строки, на которой находится курсор;
  • общее количество строк в буфере.

10. Поиск символов по шаблону: команды / и ?

Для поиска символов по шаблону вы можете использовать команды /, ?, n и N. Эти команды позволяют осуществлять поиск вперед и назад в буфере следующего появления указанного шаблона символов. Команды n и N позволяют вам повторить последний поиск.

Команда / и следующий за ней шаблон (/pattern) ведет поиск вперед по буферу следующего появления символов, указанных в шаблоне и помещает курсор на первый символ из шаблона. Например, командная строка:

/Hello world<CR>

находит первое появление в буфере слов Hello world и помещает курсор под буквой H.

Команда ? и следующий за ней шаблон (?pattern) ведет поиск в обратном направлении в буфере первого появления символов, указанных в шаблоне и помещает курсор на первый из этих символов. Например, командная строка: