Перемещение по тексту

Задача текстовых редакторов

 

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

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

Не стоит путать текстовые редакторы и текстовые процессоры. Текстовые процессоры (например, OpenOffice Writer или Microsoft Word) предназначены для создания документов, в которых, помимо собственно текста, содержится и различная метаинформация(информация об оформлении): размещение текста на странице, шрифт и т.п. Поскольку в текстовом формате не предусмотрено средств для сохранения информации об оформлении (там есть только символы и строки), текстовые процессоры используют собственные форматы для хранения данных. Текст, в котором нет никакой метаинформации об оформлении, называют «plain text» (только текст, «плоский», простой текст).

Важнейшее условие для текстового редактора в Linux – возможность работать в терминале, так как это основной способ управления системой. Поэтому и ввод данных, и редактирование должны полностью осуществляться средствами терминала. Поскольку функциональных клавиш, на которые можно рассчитывать на любом терминале, совсем немного, а команд, которые нужно отдавать редактору, – очень много, требуется способ вводить любые команды ограниченными средствами терминала. Это условие, равно как и требование удобства при работе с разнообразными структурированными текстами, выполнено в двух «главных» текстовых редакторах Linux – Vi и Emacs.

Vi и лучше, чем Vi

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

Примечание: принцип обязательного запуска унаследован Linux’ом от UNIX. Название Vi происходит от visual editor, «визуальный», экранный редактор, поскольку Vi – первый редактор для UNIX, использующий весь экран для отображения текста и позволяющий работать с текстом не построчно, а перемещаясь по нему в любых направлениях, как по странице.

Под именем Vi, на самом деле, может скрываться несколько разных программ. С момента появления Vi в операционной системе UNIX (а это произошло около 30 лет назад) этот редактор стал чем-то вроде стандарта. К настоящему времени существует ряд программ, либо в точности повторяющих вид и поведение «классического» Vi (например, nvi), либо очень похожих на него, но со значительно расширенными возможностями (Vim, elvis). Наибольшей популярностью пользуется Vim, возможности которого огромны – для их описания потребовалось почти сто тысяч строк документации. Когда пользователь Linux набирает в командной строке Vim, скорее всего, будет запущена "облегченная" версия Vi, которая настроена таким образом, чтобы максимально воспроизводить поведение классического редактора Vim. Естественно, в таком режиме часть возможностей Vi недоступна. Все свойства, которыми Vi отличается от Vim, обязательно снабжены в руководстве по Vi указанием "not in vi". В дальнейшем изложении под Vi мы будем понимать именно Vim в режиме совместимости, все возможности, недоступные в этом режиме, будут оговариваться.

Популярность Vi не случайна: этот текстовый редактор позволяет не только производить простые операции редактирования текстовых файлов – он хорошо приспособлен и для максимально быстрого и эффективного решения ряда смежных с редактированием задач. Среди самых важных его возможностей – инструменты для работы с текстами на различных языках программирования и в различных форматах разметки. Vim умеет подсвечивать разными цветами синтаксические конструкции языка программирования или разметки, автоматически выставлять отступы, что облегчает восприятие структуры документа. Кроме того, в Vim есть специальные средства для организации цикла отладки программы: компиляция – правка исходного текста – компиляция... Подробнее об возможностях Vim можно узнать из руководств по Vim. Файл конфигурации для Vim – .vimrc (или .exrc для Vi).

Работа в Vi

 

Для отображения текста и работы с ним Vi использует весь экран терминала – только последняя строка предназначена для диалога с пользователем: вывода информационных сообщений и ввода команд. Пока буфер не заполнен текстом, в начале каждой строки экрана отображается символ «~», обозначающий, что в этом месте буфера нет ничего, даже пустой строки. Символ «#» обозначает курсор.

Чтобы начать сеанс редактирования в Vi, достаточно выполнить команду vi на любом терминале. Чтобы открыть для редактирования уже существующий файл, путь к этому файлу нужно указать в качестве параметра: «vi путь_к_файлу». Вызванный без параметра, редактор откроет пустой буфер – чистый лист для создания нового текста. Для входа в редактор vi можно использовать следующие команды:

vi – редактирует пустой буфер редактирования;

vi +123 <имя файла> – копирует указанный файл для редактирования и переходит на строку с номером 123 указанного файла;

vi +/word <имя файла> - копирует указанный файл для редактирования и ищет первое вхождение слова "word" в указанном файле.

 

Режимы

В Vi проблема разделения команд редактору и вводимого текста решена при помощи режимов:

­ в командном режиме нажатие на любую клавишу – это команда редактору;

­ в режиме вставки -нажатие на клавишу приводит к вставке соответствующего символа в редактируемый текст.

Поэтому при работе с Vi пользователю всегда нужно обращать внимание на то, в каком режиме находится редактор.

Различают три режима Vi, в которых он по-разному обрабатывает нажатия клавиш:

1 командный -нажатие любой клавиши считается командой и немедленно исполняется;

2 вставки -нажатие клавиши печатного символа приводит к вставке этого символа в текст;

3 командной строки -для ввода длинных команд, отображаемых на экране; ввод завершается Enter.

Редактор Vi всегда начинает работу в командном режиме. В этом режиме есть два способа отдавать команды редактору. Во-первых, нажатие практически на любую клавишу редактор воспринимает как команду. При нажатии на эти клавиши вводимые команды нигде не отображаются – они просто исполняются! Во-вторых, у Vi есть своя командная строка: чтобы ее вызвать, нужно ввести в командном режиме «:». В результате в начале последней строки экрана появится двоеточие – это приглашение командной строки, где возможно вводить сложные команды. Команды передаются Vi клавишей Enter. В современных версиях Vim с командной строкой можно работать так же, как и в shell: редактировать ее, достраивать команды клавишей Tab, пользоваться историей команд. Наконец, чтобы ввести текст, нужно перейти из командного режима в режим вставки, нажав клавишу «i» (от «i nsert» – «вставка»). В этот момент в последней строке появится сообщение о том, что редактор находится в режиме вставки: «--INSERT--» или «--ВСТАВКА--», в зависимости от установленного языка системных сообщений. Чтобы перейти из режима вставки обратно в командный режим, нужно нажать ESC.

Каждую аббревиатуру команды Vim может достраивать до полного слова при помощи нажатия Tab после буквы команды. Например, «w» – это сокращение от англ. «w rite», «записать».

Работа с файлами

Редактируя текст в Vi, пользователь работает не непосредственно с файлом, а с буфером. Если открывается уже существующий файл, Vi копирует его содержимое в буфер и отображает буфер на экране. Все изменения, которые производит пользователь, происходят именно в содержимом буфера – открытый файл пока остается неизменным.

В Vim никогда не следует вручную повторять одну и ту же команду: если нужно перейти на три слова вперед, не следует трижды нажимать «w» – для повторения команды используется множитель. Множитель – это любое число, набранное перед командой Vi: команда будет повторена соответствующее число раз. Например, «3w» – означает «трижды переместить курсор на слово вперед», иначе говоря, переместить курсор на три слова вперед. Обратите внимание, что множители могут применяться не только с командами перемещения, но и с любыми командами Vi.

Перемещение по тексту

Самый очевидный и простой способ перемещения по тексту это, конечно же, с помощью клавиш со стрелками. Нажатие на одну из этих клавиш обычно заставляет курсор перемещаться на один символ влево/вправо или на одну строку вверх/вниз. В Vi для каждого не посимвольного перемещения предусмотрены специальные команды, обычно состоящие в нажатии одной клавиши в командном режиме. Используя их, можно не только переместиться на любое расстояние в тексте, но и двигаться по структурным элементам, переходя к предыдущему/следующему слову, предложению, абзацу, скобке и т. д.

0 (ноль) - передвинуть курсор на начало текущей строки.

^ -передвинуть курсор на первый непробельный символ в строке.

$ - передвинуть курсор в конец строки.

 

Абзацами Vi считает фрагменты текста, разделенные пустой строкой.

{ и } - передвинуть курсор к началу предыдущего/следующего абзаца.

G - передвинуть курсор в самый конец файла.

gg - передвинуть курсор в самое начало файла.

w (от «word», слово) - передвинуть курсор вперед на начало следующего слова.

b (от «b ackward», назад) - передвинуть курсор на начало предыдущего слова.

( и ) - передвинуть курсор к началу предыдущего/следующего предложений.

 

Вставка текста

Для того чтобы вставлять текст в файл, необходимо перейти в режим вставки. Воспользуйтесь командой i редактора vi (т.е. нажмите клавишу i) и начинайте набор текста. Для завершения работы в режиме вставки и для возврата в командный режим нажмите Esc. В командном режиме вы можете использовать клавиши со стрелками для перемещения по файлу.

Команда i – вставляет текст на место курсора.

Команда a – добавляет в текст сразу после курсора.

Команда o – добавляет новую строку ниже текущей и вставляет в нее текст.

Команда О – добавляет новую строку над текущей и вставляет в нее текст.

Если слово, которое нужно ввести, уже встречалось в тексте, можно набрать только первые буквы и нажать ^P («previous») – Vim попробует сам завершить его. Если Vim не угадал и предложил не то слово, можно продолжить перебирать варианты. Команда ^N («next») подставляет слова, которые встречаются ниже по тексту.

 

Удаление текста

Команда x – удаляет символ под курсором.

Команда X – удаляет символ, расположенный перед курсором.

Команда dd (т.е. нажимая d дважды) – удаляет целые строки.

Команда D – удаляет все от позиции курсора, включая ее, до конца текущей строки.

Команда dw – удаляет слово, на котором находится курсор.

Команда u – уничтожает результат выполнения последней команды вставки или удаления.

Команда U – восстанавливает текущую строку в ее первоначальном состоянии, независимо от того, сколько раз она редактировалась с того момента, когда вы перешли на нее.

Изменение текста

Команда R – заменяет фрагменты текста. Использование команды R для редактирования текста очень похоже на команды i и a, но R заменяет прежний текст вместо вставки в него.

Команда r – заменяет один символ, отмеченный курсором.

Команда ~ – изменяет размер буквы, отмеченной курсором - делает большую маленькой и наоборот.

Сохранение файла

Команда q! – позволяет выйти из vi без внесения изменений в ранее существовавший файл.

Команда :wq и аналогичная команда ZZ (без:)–изменения в файл (сохраняет), а затем выходит из vi.

Команда :w – записывает файл без выхода из vi.

 

Настройка Vi и Vim

Вид и поведение Vi и Vim можно существенно изменить при помощи настроек, приспособив редактор именно к своим вкусам и привычкам. Прямо во время работы редактора можно менять настройки из командной строки Vi при помощи команды :set имя_настройки. Кроме того, можно сделать настройку постоянной, вписав все нужные значения в конфигурационный файл .vimrc (или .exrc – для Vi) в домашнем каталоге пользователя. При каждом запуске Vim/Vi читает этот файл и исполняет все содержащиеся в нем команды. Чтобы оценить возможности настройки, можно выполнить в Vim (но не в Vi!) команду :options, по которой будет выведен список всех доступных опций с кратким описанием их смысла.

Emacs

Главное свойство, которое сделало Emacs таким популярным и многофункциональным редактором – это заложенная в нем с самого начала принципиальная расширяемость. Файл конфигурации Emacs – .emacsrc. Emacs почти полностью написан на специально созданном для него языке программирования Emacs Lisp, и у любого пользователя есть возможность запрограммировать необходимые именно ему функции и подключить их в качестве модуля к Emacs. При этом сам Emacs никак изменять не требуется. Сообщество программистов не замедлило воспользоваться расширяемостью Emacs, и к настоящему времени важнейшее достоинство этого редактора состоит именно в свободно распространяемых пакетах расширений, содержащих инструменты для решения самых разнообразных задач, связанных с редактированием текста. На сегодняшний день наиболее распространёнными являются варианты GNU Emacs и XEmacs. Оба являются свободным ПО, распространяемым на условиях GNU GPL. XEmacs является «вилкой» (от англ. fork) от GNU Emacs. Современный Emacs – это не просто текстовый редактор, а интегрированная среда для работы в системе. Основная идея сообщества разработчиков и пользователей Emacs состоит в том, что Emacs позволяет работать с любыми данными, которые могут быть представлены как текст. В зависимости от ситуации, Emacs может быть:

­ текстовым редактором;

­ программой для чтения почты и новостей Usenet;

­ интегрированной средой разработки (IDE);

­ операционной системой и всем, чем угодно.

В Emacs для работы с текстами разного типа используются режимы.

Основной режим – это набор функций и настроек Emacs, приспособленных для редактирования текста определенного вида. Каждый основной режим по-своему переопределяет некоторые управляющие символы, так что наиболее доступными становятся команды, чаще всего именно для работы с текстом данного типа. Команды, специфичные для текущего основного режима, обычно начинаются с управляющего символа C-c (одновременно нажатые клавиши Ctrl и c). Некоторое представление о возможностях Emacs может дать весьма неполный список тех текстов, для которых существуют основные режимы:

­ список файлов в каталоге;

­ программы на самых разных языках программирования, от С и до самых экзотических;

­ тексты в различных форматах разметки: XML, HTML, TeX;

­ словари;

­ электронная почта (режим позволяет не только читать и писать письма, но и отправлять и получать их);

­ календарь;

­ дневник и личное расписание, и многое другое.

Когда требуется много и быстро работать с текстом на каком-либо искусственном языке (языке программирования, разметки и пр.), возможно, Emacs – это лучший выбор. Не хуже в Emacs развиты и средства работы с текстами на разных естественных языках с самыми экзотическими письменностями. Просто для оценки возможностей Emacs в этой области можно выполнить команду C-h h, по которой будет выведен файл, изображающий приветствие на разных языках.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: