Э. Сивер, С. Спейнауэр, С. Фиггинс, Дж. П. Хекман - Linux cправочник - 3-е издание (1114666), страница 94
Текст из файла (страница 94)
Шаблоны и поиск640Примеры поиска и заменыВ следующих примерах используются метасимволы, доступные в sed или vi.Обратите внимание, что команды vi начинаются с двоеточия. Пробел обозначен символом п. Табуляция обозначается как tab.КомандаРезультатВоспроизвести строку с добавлением скобокs/.*/mv & &.old/Преобразовать список слов (по одному слову в строке) в наборкоманд mv/"$/dУдалить пустые строки:g/"$/dТо же, но в редакторе viУдалить пустые строки и строки, содержащие пробелы илисимволы табуляции:g/-[a«a6]*$/dТо же, но в редакторе vis/m*/n/gСократить непрерывную последовательность пробелов (болееодного подряд) до одного пробела:%s/nu*/n/gТо же, но в редакторе vi:s/[0-9]/Item &:/Преобразовать число в item-метку (в текущей строке):sПовторить подстановку при первом соответствии:&Тоже:sgТо же, но для всех вхождений в строке:&gТоже:%&gГлобальная замена вхождений:.,$s/Fortran/\U&/g Преобразовать регистр символов слова в верхний во всех вхождениях от текущей строки и до конца файла:%s/.*/\L&/Преобразовать регистр всех символов файла в нижний:s/\<./\u&/gПреобразовать в прописную все первые буквы слов текущейстроки (полезно для оформления названий):% s/yes/No/gПроизвести глобальную замену слова yes на No:%s/Yes/-/gЗаменить все другие слова словом No (используется предыдущая подстановка)В заключение приведем некоторые примеры для перестановки слов с помощью sed.
Простая перестановка двух слов может выглядеть так:s/die or do/do or die/Перестановка словНастоящим мастерством является использование буферов для замены. Например, так:s/\([Dd]ie\) or \([Dd]o\)/\2 or \1/Перестановка с помощью буферовГлава 10Редактор EmacsВ этой главе рассмотрены следующие темы:• Введение• Типичные проблемы• Конспект команд Emacs по группам• Конспект команд Emacs по клавишам•Конспект команд Emacs по именамВведениеНесмотря на то что Emacs не является частью Linux, этот текстовый редактор присутствует во многих Unix-системах в качестве распространеннойальтернативы редактору vi. Существует несколько вариантов Emacs. Здесьрассматривается GNU Emacs, предоставляемый фондом FSF (Free SoftwareFoundation) (Кембридж, Массачусетс).
За более подробной информацией обращайтесь к выпущенной издательством O'Reilly книге «Learning GNUEmacs» (Изучаем GNU Emacs) Дебры Кэмерон (Debra Cameron), Билла Розенблатта (Bill Rosenblatt) и Эрика Рэймонда (Eric Raymond).Для того чтобы начать работу с Emacs, наберите:emacs [file]Типичные проблемыОчень часто пользователи сталкиваются с тем, что на их терминале клавиша<Del> или <Backspace> не удаляет символ перед курсором, как это должнобыло бы происходить. Вместо этого появляется строка подсказки. Данная642Глава 10. Редактор Emacsпроблема вызвана несовместимостью терминала. Достаточно надежным способом исправления этой ситуации является создание файла .emacs в домашнем каталоге пользователя (или редактирование уже существующего) и дополнение его следующими строками:(keyboard translate ?\C-h VXC- 7 )(keyboard translate ?\C-\\ ?\C-h)Теперь удаление клавишами <Del> или <Backspace> должно работать, авызвать справку можно, нажав клавиши <Ctrl>+<\> (сочетание выбранопроизвольно).Еще одна проблема, которая может возникнуть при работе с удаленноготерминала, - комбинация <Ctrl>+<s> (Ctrl-s) может вызвать зависание терминала.
Причиной этого является старый протокол установления связимежду терминалом и системой. Терминал перезапускается нажатием клавиш Ctrl-q, но это не устранит невозможность ввода команд, содержащихкомбинацию Ctrl-s. Единственным решением (если не рассматривать применение более современного протокола соединения) может быть либо созданиеновой комбинации клавиш для замены Ctrl-s, либо ввод команды посредством последовательности <Meta>+<x> имя_команды.Примечания к таблицамВ командах Emacs активно используются клавиши <Ctrl> и <Meta>.
Набольшинстве современных терминалов существует клавиша <Alt>, заменяющая клавишу <Meta>. В этой главе запись <Ctrl>+ (или С-) означает, что<Ctrl> нажимается одновременно с последующим символом, тогда как запись <Meta>+ (или М-) означает аналогичное нажатие клавиши <Meta> или<Alt>. Вместо <Meta> можно использовать клавишу <Esc>: нажать ее, отпустить, затем ввести символ.
Этот вариант выручает, если текущее окно покакой-либо причине не в состоянии перехватить нажатие клавиши <Alt>(такое иногда случается).В таблицах с командами первая колонка всегда описывает комбинацию клавиш, а последняя - происходящее действие. Если присутствует средняя колонка, в ней находятся имена команд. Команды можно выполнять, нажавклавиши <Meta>+<x>, а затем введя имя команды. Этим вариантом приходится пользоваться, если комбинация клавиш для команды отсутствует(обозначена как «нет»). Если вы точно не помните имя, нажмите пробел иликлавишу <Enter> в процессе набора команды, и Emacs перечислит возможные дополнения команды до конечного вида.Emacs является полнофункциональным редактором и по этой причине содержит сотни команд.
Некоторые команды нам пришлось опустить, чтобы сохранить дух краткого справочника. Нажатие комбинации <Ctrl>+<h> (C-h)позволяет получить справку о наборе команд; нажав <Meta>+<x> (M-x), aзатем <пробел> или <ТаЬ>, можно вывести имена команд. Также можноТипичные проблемы643ввести <Ctrl>+<h>, а затем <Ь> для получения перечня комбинаций клавиш1 и связанных с ними команд.РежимыОдной из особенностей, которые делают Emacs популярным, являются егорежимы редактирования.
Режим представляет собой окружение на основередактора Emacs, разработанное специально для редактирования конкретного вида файлов. Режим может включать такие возможности, как назначение особых сочетаний клавиш для контекстных действий, автоматическоеформатирование текста в соответствии с соглашениями, принятыми для данного типа документов, и т. д. Существуют режимы для различных языковпрограммирования (например, С и Perl), для работы с текстами (напримерSGML или обычными текстовыми файлами) и многие другие.
Одним из наиболее полезных режимов является Dired (Directory Editor, редактор каталогов), предоставляющий команды для работы с каталогами. Более подробно режимы описаны в книге «Learning GNU Emacs», упомянутой в началеэтой главы, а также в системе документации Emacs Info (<Ctrl>+<h> <i>).Самые необходимые командыПриведем список наиболее важных команд для начинающих знакомство сEmacs:Комбинация ДействиеC-hСистема встроенной справкиС-х C-sСохранение файлаС-х С-сЗавершение работы с EmacsС-хиОтмена последнего редактирования (команда может повторяться)C-gПрекратить набор текущей командыС-рК предыдущей строкеС-пК следующей строкеC-fК следующему символуC-bК предыдущему символуC-vК следующей экранной странице текстаM-vК предыдущей экранной странице текстаC-sПоиск строки в прямом направленииСоздание собственных сочетаний клавиш описано в книге издательства O'Reilly«Learning Gnu Emacs » (Изучаем GNU Emacs).644Глава 10.
Редактор EmacsКомбинацияДействиеС-гПоиск строки в обратном направленииC-dУдаление текущего символаDelУдаление символа перед курсоромBackspaceУдаление символа перед курсоромКонспект команд по группамВ таблицах перечислены клавиатурные комбинации, имена команд и выполняемые действия. Напоминаем, что «О» - это клавиша <Ctrl>, a «M-» <Meta>.Команды работы с файламиКомбинация КомандаДействиеС-х C-ffind-fileПоиск и чтение файлаС-х C-vfind-alternate-fileЧтение другого файла; файл заменяет прочитанный по С-х C-fС-х iinsert-fileВставить файл в текущей позиции курсораС-х C-ssave-bufferСохранить файлС-х C-wwrite-fileЗаписать содержимое буфера в файлС-х С-сsave-buffers-kill-emacsЗавершить работу с EmacsC-zsuspend-emacsПриостановить выполнение Emacs (возвратпо команде exit или fg)Команды навигацииДля того чтобы облегчить запоминание, в столбце Действие некоторые словавыделены курсивом.Комбинация КомандаДействиеC-fforward-charПереход к следующему символу (вправо)C-bbackward-charПереход к предыдущему символу (влево)С-рprevious-lineПереход к предыдущей строке (вверх)С-пnext-lineПереход к следующей строке (вниз)M-fforward-wordПереход к следующему слову (вперед)M-bbackward-wordПереход к предыдущему слову (назад)Конспект команд по группам645Комбинация КомандаДействиеС-аbeginning-of-lineПереход к началу строкиС-еend-of-lineПереход к концу строкиМ-аbackward-sentenceПереход к предыдущему предложениюМ-еforward-sentenceПереход к следующему предложениюМ-{backward-paragraph Переход к предыдущему абзацуМ-}forward-paragraphПереход к следующему абзацуC-vscroll-upПереход к следующей экранной страницеM-vscroll-downПереход к предыдущей экранной страницеС-х [backward-pageПереход к предыдущей странице текстаС-х ]forward-pageПереход к следующей странице текстам->м-<end-of -bufferПереход к концу текстаbeginning-of -buffer Переход к началу текста(нет)goto-lineПерейти к строке п файла(нет)goto-charПерейти к символу п файлаС-1recenterОбновить окно с текстом так, чтобы текущаястрока с курсором оказалась в центре окнаМ-геdigit-argumentПовторить следующую команду п разC-u nuniversal-argumentПовторить следующую команду п разКоманды удаленияКомбинация КомандаДействиеDelbackward-delete-charУдаление символа перед курсоромC-ddelete-charУдаление символа под курсоромM-Delbackward-kill-wordУдаление предыдущего словаM-dkill-wordУдаление слова под курсоромC-kkill-lineУдаление от курсора и до конца строкиM-kkill-sentenceУдаление предложения, на котором находится курсорC-x Delbackward-kill-sentenceУдаление предыдущего предложенияC-yyankВозврат удаленного текстаC-wkill-regionУдаление выделенной области (см.
следующую таблицу)646Глава 10. Редактор EmacsДействиеКомбинация Команда(нет)backward-kill-paragraph Удаление предыдущего абзаца(нет)kill -paragraphУдаление текста от курсора и до конца абзацаАбзацы и области текстаДействиеКомбинация КомандаС-@set-mark-commandОтметить начало (или конец) областиС-пробелset-mark-commandОтметить начало (или конец) областиС-х С-рmark-pageВыделить страницуС-х С-хexchange-point-and-mark Обменять местами курсор и отметкуС-х hmark-whole-bufferВыделить буферM-qfill-paragraphПереформатировать абзац(нет)fill-regionПереформатировать отдельные абзацы выделенной областиM-hmark-paragraphВыделить абзацМ-{backward-paragraphПеремещение к предыдущему абзацуМ-}forward-paragraphПеремещение к следующему абзацу(нет)backward-kill-paragraphУдаление предыдущего абзаца(нет)kill-paragraphУдаление текста от курсора и до конца абзацаПрерывание и откат командКомбинация КомандаДействиеc-gkeyboard-quitПрекратить набор командыС-х иadvertised-undoМногоуровневая отмена последнего редактирования(нет)revert-bufferВосстановить редактируемый текст из сохраненногоили автоматически сохраненного файлаКоманды перестановкиКомбинация КомандаДействиеC-ttranspose-charsПерестановка (обмен местами) пары буквM-ttranspose-wordsПерестановка пары^ловС-х C-ttranspose-linesПерестановка пары строкКонспект команд по группам647Комбинация КомандаДействие(нет)transpose-sentencesПерестановка пары предложений(нет)transpose-paragraphs Перестановка пары абзацевКоманды преобразования регистровКомбинация КомандаДействиеМ-сcapitalize-wordСделать прописной первую букву словаМ-иupcase-wordСделать прописными все буквы словаМ-1downcase-wordСделать строчными все буквы словаМ- - М-сnegative-argument;capitalize-wordСделать прописной первую букву предыдущегословаМ- - М-иnegative-argument;upcase-wordСделать прописными все буквы предыдущегословаМ- - М-1negative-argument;downcase-wordСделать строчными все буквы предыдущего слова(нет)capitalize-regionСделать прописными первые буквы слов выделенной областиС-х С-иupcase-regionСделать прописными все буквы в выделеннойобластиС-х С-1downcase-regionСделать строчными все буквы в выделенной областиКоманды пошагового поискаКомбинация КомандаДействиеC-sisearch-forwardНачать или повторить прямой пошаговыйпоискС-гisearch-backwardНачать или повторить обратный пошаговыйпоискEnter(нет)Завершить успешный поискC-gkeyboard-quitОтменить пошаговый поиск; вернуться к начальному положению в текстеDel(нет)Удалить неверный символ в строке поискаM-C-risearch-backward-regexp Обратный пошаговый поиск по регулярномувыражениюM-C-sisearch-forward-regexpПрямой пошаговый поиск по регулярномувыражениюГлава 10.