Работа с редактором Vi. Другие текстовые редакторы UNIX
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
Вместо перемещения курсора вы можете указать номер строки. Например,
чтобы вставить файл data после 56-й строки в буфере, введите:
:56r data
18.6. Провести глобальные изменения
:g/pattern/command -
для каждой строки, содержащей pattern выполнить команду command
редактора ex. Построчный редактор напечатает све строки, сождержащие
pattern;
:s/pattern/new_words -
это команда замены. Построчный редактор отыскивает первое появление
символов pattern в текущей строке и заменяет его на new_words;
:s/pattern/new_words/g -
редактор ex заменяет каждое появление pattern в текущей строке;
:g/helix/s//double helix/g -
эта команда осуществляет поиск слова helix. Каждое найденное слово
helix заменяется на double helix. Ограничители после команды "s"
позволяют не вводить слово helix каждый раз. Команда запоминает слово
между ограничителями после команды "g".
19. Завершение работы с редактором vi
Пять основных команд могут быть использованы для завершения работы с
редактором vi. Команды, которым предшествует ":", являются командами
построчного редактора:
:wq - записать содержимое буфера vi в файл, который в данный момент
редактируется и завершить работу с vi;
ZZ - записать содержимое буфера, если он изменялся с момента последней
записи;
:q - записать временный буфер в новый файл filename и завершить работу
с редактором vi;
:q! - завершить работу с редактором vi без записи содержимого буфера в
файл; не учитываются все изменения, проведенные в буфере;
:q - завершить работу с редактором vi без записи содержимого буфера в
файл. Эта команда работает в том случае, если вы не производили изменений в
буфере. В противном случае vi выдаст предупреждающее сообщение о том, что
вы должны сохранить буфер или воспользоваться для завершения работы с vi
командой :q!. Что нужно сделать, чтобы дать файлу другое имя?
Например, вы хотите записать в новый файл junk. Введите команду:
:w junk
Затем завершите работу с vi:
:q
Если вы попытаетесь записать в уже существующий файл, то получите
предупреждающее сообщение. Например, если вы попытаетесь записать в файл
johnson, система выдаст сообщение:
"johnson" File exists - use "w!johnson"
to overwrite
Если вы хотите заменить содержимое существующего файла на содержимое
буфера, то воспользуйтесь командой ":w!":
:w! johnson
20. Специальные опции для vi
Команда vi имеет специальные опции. Они позволяют:
. восстановить потерянный файл, если работа vi была прервана;
. поместить в буфер редактирования несколько файлов и редактировать их
по порядку;
. просмотр файла без риска случайного внесения изменений в него.
20.1. Восстановление потерянного файла
Если случайно произошло прерывание работы редактора vi, то не
производится запись текста из буфера обратно в файл. Но vi сохраняет копию
буфера. Когда вы вновь зарегистрируетесь в системе UNIX, вы можете
восстановить файл с помощью опции -r. Введите:
vi -r filename
Все или почти все изменения, которые вы выполнили до прерывания, вновь
появятся в буфере vi, и вы снова сможете продолжить редактирование файла
или записать буфер в файл и завершить работу с vi.
20.2. Редактирование нескольких файлов
Если вы хотите редактировать в одном сеансе более одного файла, то
введите команду vi, указав имя каждого файла:
vi file1 file2
vi ответит, сколько файлов вы будете редактировать.
Например:
2 files to edit
После того, как вы отредактировали первый файл, запишите все изменения
из буфера в файл file1:
:w
Система ответит на эту команду сообщением в низу экрана. В нем она
напечатает имя файла, число строк и символов в этом файле. Затем вы можете
начать редактировать следующий файл, задав команду:
:n
Система в низу экрана сообщит вам имя следующего файла, который вы
будете редактировать, и число строк и символов в этом файле.
20.3. Просмотр файла
Один из способов просмотра файла, это воспользоваться командами
прокрутки и поиска. Однако вы можете защитить себя от случайного внесения
изменений в файл во время сеанса редактирования. Чтобы воспользоваться
опцией "только чтение", вызовите редактор следующим образом:
view file
21.Другие текстовые редакторы Unix
21.1. Редактор ED.
Редактор текстов ed является диалоговой (интерактивной) программой,
которая позволяет добавлять, перемещать, удалять текст и извлекать его из
других файлов. Имеется возможность замены слова или части слова в тексте
как для одной указанной строки, так и для части файла или всего файла.
Кроме того, можно просмотреть текстовый файл, напечатать его частично или
целиком, напечатать строки, содержащие определенное слово и т.д.
ED работает с копией обрабатываемого файла, которая создается в буфере
редактора и хранится там в течение всей обработки. Это предохраняет
исходный файл от возможных разрушений при совершении грубых ошибок.
Сделанные в копии изменения не влияют на исходный файл до тех пор, пока не
будет выдана команда записи.
Редактор запоминает имя обрабатываемого файла (первоначально - имя
исходного загруженного файла). По желанию пользователя это имя можно
заменять для получения новых вариантов файла.
Если размер файла превышает размер буфера редактора, файл приходится
делить на части с помощью команды split, редактировать его по частям, а
затем снова объединять с помощью команды cat.
Пользователь сообщает редактору, что делать с его текстом, с помощью
определенных инструкций, называемых "командами". Команды редактора имеют
простую структуру, и в большинстве случаев состоят из одной буквы. Каждая
команда печатается на отдельной строке. Иногда перед командой указывается
информация о том, какая строка или строки должны подвергаться действию
команды. ed не отвечает на большинство команд, не печатает подсказки или
сообщения типа "готово".
Все вводимые командные строки должны заканчиваться символом .
21.2. GNU Emacs 19.19
Говоря о текстовых редакторах, разработанных специально под UNIX, в
первую очередь упомянем Emacs, который распространяется бесплатно в рамках
проекта GNU. Некоторые компании распространяют его на коммерческой основе,
исправив имеющиеся ошибки и адаптировав под конкретные платформы с
некоторыми улучшениями возможностей "родного" Emacs. Таковым, например,
является GNU Emacs 19.19 фирмы Ready-to-Run Software, который
распространяется в составе пакета утилит обработки текста. Безусловно,
данный редактор предназначен для квалифицированных программистов, обладая
мощными средствами разработки программ. Однако GNU Emacs требует
основательного изучения; для расширения его возможностей приходится
программировать на языке LISP, что не очень нравится даже квалифицированным
программистам, а уж обыкновенным пользователям - тем более. Для поклонников
Emacs могу сообщить, что исходные тексты версии 19.28 появились на
prep.ai.mit.edu: в каталоге pub/gnu.
21.3. UniPress Emacs 2.20e
Немногим отличается от собрата UniPress Emacs 2.20e, выпущенный
компанией UniPress Software. В отличие от GNU Emacs данный редактор
поставляется с документацией (хотя и неудачно написанной), обладает более
привлекательным интерфейсом, имеет поставляемые за дополнительную плату (от
695 до 995 долларов) языко-ориентированные реализации для С, С++, Fortran и
Ada. В целом, различия между GNU Emacs и UniPress Emacs незначительны. Если
Вы являетесь поклонником Emacs, то, несомненно, будете удовлетворены обеими
реализациями.
21.4. Siren Editor 1.0
Siren Editor разработан компанией Siren Software, целиком основан на
интерфейсе X/Motif и является интуитивным и легким в использовании. Все
команды располагаются в выпадающих меню, хорошо продумана компоновка экрана
и работа с мышью. Инсталляция и запуск редактора под силу даже
неквалифицированному пользователю. Недостатком редактора Siren является то,
что в нем отсутствует какая-либо поддержка процесса программирования, а
также базовые средства форматирования текста. Поэтому Siren Editor может
быть полезен, главным образом, при первичном наборе и минимальном
редактировании текстов. По своей функциональности этот редактор чем-то
напоминает NortonEdit из MS-DOS, который очень удобен, когда в текст надо
быстро внести пару-другую изменений.
21.5. Iris Х Editor 1.3.7
Редактор Iris Х Editor (разработка Iris Computing Laboratory)
предназначен для программистов и имеет собственный интерфейс под Х Window.
При запуске Вы увидите чистый экран - ни меню, ни строки статуса - т.е. все
нацелено на то, чтобы отобразить на экране как можно больше исходного кода
программы. Информация всегда появляется во всплывающих окнах, что поначалу
немного раздражает, но потом привыкаешь. Для работы с блоками текста
предусмотрено четыре буфера временного хранения (clipboard). Вставку текста
из такого буфера можно произвести одним нажатием кнопки мыши, что очень
удобно. Недостатком редактора является полное отсутствие базовых средств
форматирования.
21.6. Nedit 3.1.1
Этот редактор разработан в Национальной Лаборатории Ферми,
распространяется свободно в исходных текстах, имеет стопроцентный
графический пользовательский интерфейс под Motif и рассчитан прежде всего
на программистов и случайных пользователей. Nedit чрезвычайно прост в
установке, изучении и использовании, обладает исчерпывающей Help-системой.
И в то же время в нем отсутствует много возможностей, которые являются
стандартом для профессиональных текстовых редакторов (макро, прямоугольные
блоки, базовые средства форматирования). Nedit имеет реализации практически
для любых рабочих станций с UNIX (SGI, Sun, HP, DEC, IBM), а также для
VAX/VMS. Перенос на другие платформы с X/Motif не вызывает никаких проблем.
21.7. TED 2.la
Редактор TED разработан английской фирмой Eagle Dynamics, имеющей
представительство в Москве, и на сегодняшний день является единственным
полностью русифицированным профессиональным текстовым редактором для UNIX,
распространяемым в России. Редактор работает как на текстовых терминалах,
так и под Х Windows, при этом CUA-интерфейс делает его похожим на редактор
MultiEdit для MS-DOS или среду разработки Borland IDE. Это единственный из
всех редакторов, у которого имеется документация на русском языке (два
тома). TED ориентирован как на профессиональных разработчиков, так и на
неподготовленных пользователей, может быть легко перенастроен в
соответствии с индивидуальными вкусами. Редактор распространяется
практически на любых платформах UNIX. Единственным, но несущественным, по
мнению автора, недостатком редактора является отсутствие развитого
макроязыка, что, впрочем, компенсируется возможностью создания командных и
клавишных макро.
21.8. AUIS ez
В рамках распространяемого бесплатно в исходных текстах для Х11
многофункционального проекта AUIS (The Andrew User Interface System),
разработанного Консорциумом Эндрю (Andrew Consortium), имеется текстовый
редактор ez с модулями поддержки языков программирования С, С++, Modula-2,
и PL/MI. Этот редактор будет интересен разработчикам программного
обеспечения благодаря наличию средств цветового и шрифтового выделения
синтаксиса, перехвата ошибок компиляции, встроенного набора стандартных
языковых конструкций. Средства обработки текстов минимальные, но
достаточные для подготовки простых документов. Исходные тексты имеются для
большого числа платформ.
21.9. VEDIT 2.30
Редакторы семейства VEDIT разработаны фирмой Greenview Data и
предназначены для использования в текстовом режиме под управлением
различных операционных систем на платформе Intel (MS-DOS, QNX, XENIX, UNIX
286/386, FlexOS). Редактор целиком написан на ассемблере, что ограничивает
его переносимость на другие аппаратные платформы, а также исключает
возможность использования в рамках системы Х Window. Интерфейс VEDIT вполне
современный (CUA-подобные меню, окна, интенсивное использование цвета,
напоминает Borland IDE), функциональная раскладка клавиатуры достаточно
интуитивна, возможна эмуляция некоторых известных редакторов и текстовых
процессоров. VEDIT может редактировать любые файлы (в том числе двоичные,
размером до 2 ГБайт), имеет удобный режим шестнадцатеричного
редактирования. Отдельные реализации редактора включают макроязык, который,
однако, чрезмерно мнемоничен, что затрудняет написание и понимание
программ. Так, например, команда удаления текущей строки выглядит как
"0КК". В общем, по своим возможностям VEDIT похож на ранее упомянутый
редактор TED, однако поддержка процесса программирования и интерфейс с
операционной системой здесь явно слабее. К тому же редактор, не
русифицирован.
21.10. Edit*2000 1.40
Компания Computer Innovations известна переносом собственных
компиляторов для языков С и С++, а также средств разработки на различные
платформы (MS-DOS, UnixWare, LynxOS, QNX и др.). Разработанный компанией
редактор Edit*2000 поставляется с хорошей документацией, достаточно легок в
освоении и использовании, хотя имеет менее продуманный интерфейс, чем,
скажем, Siren Editor. Назначение функциональных клавиш произведено на
интуитивном уровне. В целом редактор может быть эффективно использован для
проектов среднего уровня. В числе недостатков Edit*2000 отсутствие
макроязыка, некоторых базовых средств форматирования текста й программной
поддержки (тэги, языковые шаблоны).
21.11. SlickEdit 2. 3
Редактор SlickEdit фирмы MicroEdge известен как "быстрый" редактор для
разработчиков под MS-DOS. Однако его реализация под UNIX с точки зрения
скорости и интерфейса оставляет желать лучшего. Более того, на некоторых из
заявленных платформ редактор функционирует неустойчиво. Представляет
интерес поддержка редктором таких языков программирования, как С, С++,
Pascal, COBOL, dBase, Modula-3, Assembler. Макроязык имеет синтаксис,
схожий с языком REXX, использующимся на мейнфреймах IBM и в OS/2.
Рекомендовать SlickEdit можно лишь тем, кто имел с ним дело на других
платформах.
21.11. YUI 1.0 (бета-версия)
Разработанный Инженерно-Технической Компанией в Ижевске текстовый
редактор YUI распространяется в исполняемом виде как freeware и находится в
стадии бета-тестирования. Заявлено, что бета-версии редактора имеются для
платформ MS-DOS, BSD, Solaris, INTERACTIVE и Linux. Интерфейс реализован в
стиле Turbo Vision, поэтому YUI внешне очень напоминает Borland С++ З.х.
Однако назвать этот продукт редактором для разработчиков нельзя: в нем
отсутствует какая-либо поддержка процесса программирования, да и базовые
средства форматирования представлены не в полной мере. Продукт достаточно
сырой и, по моему мнению, пока может представлять чисто академический
интерес. Поэтому маловероятно, что YUI в ближайшее время привлечет внимание
разработчиков и квалифицированных пользователей.
21.12. Эмуляторы
Эмуляторы редакторов из других операционных систем (как правило, с
мэйнфреймов и суперминикомпьютеров) представляют интерес только для экс-
программистов тех систем, которые перешли под UNIX и не желают привыкать к
какому-либо другому текстовому редактору. Зачастую оказывается, что такой
редактор уже морально устарел: новые редакторы используют новые технологии
обработки текстов. Поэтому рекомендовать редактор-эмулятор новичку можно
лишь с оглядкой на vi.
21.13. nu/TPU 3.0
Редактор nu/TPU компании a/Soft Development эмулирует известный
редактор EVE, использующийся в операционной системе VAX/VMS. Программная
поддержка в данном редакторе явно недостаточна для современных технологий
разработки программ (отсутствует поиск ошибок компиляции, работа с тегами).
Есть определенные проблемы с установкой nu/TPU (файлы описания клавиатуры
имеют ошибки, инструкции по инсталляции иногда непонятны и даже
неправильны), В то же время, руководство по использованию редактора
написано в хорошем стиле. В целом, редактор может удовлетворить только
бывших программистов VAX/VMS.
21.14. REDT
Редактор REDT разработан в Государственном Университете Вашингтона,
базируется на библиотеке curses и следует модели редактирования, принятой в
EDT - известном редакторе из VAX/VMS. Однако чистым эмулятором EDT этот
редактор назвать нельзя: средства обработки текста в REDT выполнены в стиле
редакторов для MS-DOS (выделение в прямоугольник, курсор может выходить за
конец строки, наличие строки статуса). Раскладка функциональной клавиатуры
может быть полностью изменена. REDT по достоинству оценят прежние
пользователи редакторов EVE, EDT и SEDT.
Список источников информации
1. Джек Такет (мл.) и Стив Барнет. Использование Linux. Специальное
издание.:, 5-е изд.: Пер.с англ.: Уч.пос. – М.: Издательский дом «Вильямс»,
2000. – 183 с.
2. Сергей Ивановский. Операционная система Unix. Серия книг
«Справочное руководство пользователя персонального компьютера» - М.:
Познавательная книга плюс, 2000 – 512 с.
3. Internet.: www.unix.kg/rus/misc
4. Internet.: www.linuxshop.ru
Страницы: 1, 2, 3
|