
\chapter{Работа с содержанием текста}
\section{Что такое текст}
Под текстовым файлом в компьютерном деле понимается файл, содержащий
только буквы и знаки препинания. Если в файле кроме собственно текста
содержатся какие-то указания на то, как он должен выглядеть на печати
(шрифты, способ выравнивания абзацев), то это уже не текст. Это
документ. Способы работы с документами мы рассмотрим в главе
\ref{documents}. 

В наше время практически никто не использует текстовые файлы для
хранения документов, которые нужно печатать и читать на
бумаге\footnote{Если не считать того, что текст на языке разметки это
тоже текстовый файл}. Как правило, текстовые файлы используются в тех
случаях, когда текст предназначен в первую очередь для обработки
какой-нибудь программой. Например, тексты программ, которые будут
обрабатываться компилятором или интерпретатором, обычно хранятся в
текстовых файлах. 

Другим распространенным случаем применения текстовых файлов является
электронная почта и новости Usenet. 

Оба этих случая объединяет то, что смысл текста намного важнее способа
его оформления.

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

К сожалению в этом вопросе не все так хорошо, как хотелось бы.
Во-первых, разные системы по разному обозначают конец строки~---
UNIX использует для этого символ с кодом 10 (LineFeed), MacOS~--- символ
с кодом 13 (Carrige Return), а DOS, Windows и OS/2~---
последовательность CarrigeReturn Linefeed.

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

Дадим формальное определение текстового файла:
\begin{quote}
Текстовым файлом называется файл, которые может содержать только
печатаемые символы (буквы, цифры и знаки препинания, а также пробел и
знак табуляции), сгруппированнные в
строки переменной длины, разделяемые принятым в данной операционной
системе разделителем строк.
\end{quote}

Основным инструментом для работы с текстовыми файлами является текстовый
редактор. Это программа, которая позволяет увидеть на экране достаточно
солидный кусок текста (сколько уместится), перемещаться по нему и
изменять его. Практически все, что будет сказано о текстовых редакторах,
применимо и к процессорам документов, типа StarOffice или ApplixWare,
поскольку документ отличается от текстового файла в основном тем, что
помимо собственно текста, содержит информацию об его оформлении.
\section{Режимные и безрежимные редакторы}

Текстовые редакторы делятся на два больших класса~--- режимные и
безрежимные. Режимные редактор имеет несколько режимов работы, например
режим ввода, в котором можно вводить новый текст и править во-время
замеченные опечатки, и режим команд, в котором удобно вносить небольшие
поправки в уже существующий текст.

В безрежимных редакторах буквы используются только для ввода текста, а
все операции редактирования выполняются комбинациями клавиш с
модификаторами Control и Alt и специальными клавишами. 

Из тех редакторов которые распространены в настоящее время, режимными
являются только vi и его клоны, а практически все редакторы на
платформе Windows/Dos и распространенный в UNIX Emacs относятся к классу
безрежимных.

Почему же в данной книге мы рассматриваем в деталях именно vi (точнее,
его <<улучшенную>> версию~--- vim). Во-первых, потому, что автор
пользуется именно этим редактором. Во-вторых, по-мнению автора, режимные
редакторы лучше иллюстрируют концепцию редактирования текста.

\section{режимы редактирования vim}
\label{vi}
\subsection{Ввод текста}
\subsection{Редактирование}
\subsubsection{Перемещение по тексту}
\subsubsection{Вырезание и вклеивание }
\subsubsection{Прочие полезные мелочи}
\subsection{Командный режим}
\section{поиск}
\label{regexp}
\subsection{глобальные замены}
\section{Команды Unix для работы с текстом}
\label{textut}
\subsection{Проверка орфографии}
\subsection{Поиск и потоковое редактирование}

\subsection{сравнение текстов и системы обработки версий}
\subsection{Текст, организованный по столбцам}
\subsection{Языки awk и perl}

