АнглийскийФранцузскийИспанский

Ad


Значок OnWorks

Exposix - Интернет в облаке

Запуск Exixix в бесплатном хостинг-провайдере OnWorks через Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS

Это командная экспозиция, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.

ПРОГРАММА:

ИМЯ


ex - текстовый редактор

СИНТАКСИС


ex [−rR] [−s | −v] [−с команду] [теговая строка] [-w размер] [файл...]

ОПИСАНИЕ


Ассоциация ex Утилита - это строчно-ориентированный текстовый редактор. Есть два других режима редактора:
открытый и визуальный - в котором доступно редактирование с ориентацией на экран. Это описано больше
полностью ex открытый и визуальный команды и в vi.

Если операнд '-', результаты не указаны.

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

Некоторые терминалы не обладают всеми возможностями, необходимыми для поддержки полного ex
определение, например, команды полноэкранного редактирования (визуальный Режим or открытый Режим). когда
эти команды не могут поддерживаться на таких терминалах, это условие не должно вызывать
сообщение об ошибке, такое как `` не команда редактора '', или сообщение об ошибке синтаксиса. В
реализация может либо принимать команды, либо выводить на экран результаты, которые
результат неудачной попытки выполнить требования этого тома
POSIX.1-2008 или сообщить об ошибке с описанием недостатка, связанного с терминалом.

ДОПОЛНИТЕЛЬНЫЕ УСЛУГИ, НЕ ВКЛЮЧЕННЫЕ В ПАКЕТ


Ассоциация ex утилита должна соответствовать тому Базовые определения POSIX.1-2008, Раздел 12.2,
утилита Синтаксис Инструкции, за исключением неуказанного использования '-', И что '+' может быть
распознается как разделитель опций, а также '-'.

Поддерживаются следующие варианты:

−с команду
Укажите начальную команду, которая будет выполняться в первом буфере редактирования, загруженном из
существующий файл (см. РАСШИРЕННОЕ ОПИСАНИЕ). Реализации могут
поддерживать более одного −с вариант. В таких реализациях указанные
команды должны выполняться в порядке, указанном в командной строке.

-r Восстановите указанные файлы (см. РАСШИРЕННОЕ ОПИСАНИЕ). Восстановление
информация для файла должна сохраняться при сбое редактора или системы (для
Например, когда редактор прерывается сигналом, который редактор может уловить),
или после использования ex сохранять команда.

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

Если нет файл даны операнды и вариант не указан, все остальные
варианты, ВЫХОД переменная и любые .exrc файлы игнорируются; список
все восстанавливаемые файлы, доступные вызывающему пользователю, должны быть записаны, а
редактор должен выйти в обычном режиме без дальнейших действий.

−R Поставьте только для чтения вариант редактирования.

−с Подготовить ex для пакетного использования, выполнив следующие действия:

* Подавить написание подсказок и информационных (но не диагностических) сообщений.

* Игнорировать значение СРОК и любой тип терминала по умолчанию для реализации и
предположим, что терминал не поддерживает открытый или визуальный режимы;
см. визуальный команда и описание vi.

* Подавить использование ВЫХОД переменная окружения и чтение любых
.exrc файл; см. РАСШИРЕННОЕ ОПИСАНИЕ.

* Подавить автоинденцию, игнорируя значение автоиндент вариант редактирования.

теговая строка
Отредактируйте файл, содержащий указанный теговая строка; увидеть Ctags. Функция тегов
представлена теговая строка и день команда не обязательна. Это должно быть
предоставляется в любой системе, которая также обеспечивает соответствующую реализацию Ctags;
в противном случае использование дает неопределенные результаты. В любой системе это должно быть
ошибка указать более одного опцию.

-v Начните в визуальном режиме (см. vi).

-w размер Установите значение окно возможность редактора размер.

ОПЕРАНДЫ


Поддерживается следующий операнд:

файл Путь к редактируемому файлу.

СТАНДИН


Стандартный ввод состоит из серии команд и вводимого текста, как описано в
РАСШИРЕННОЕ ОПИСАНИЕ. Реализация может ограничить каждую строку стандартного ввода до
длина {LINE_MAX}.

Если стандартный ввод не является оконечным устройством, он должен быть таким, как если бы −с вариант был
указано.

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

ВХОД FILES


Входные файлы должны быть текстовыми файлами или файлами, которые были бы текстовыми файлами, за исключением неполного
последняя строка, длина которой не превышает {LINE_MAX} -1 байт и не содержит NUL
символы. По умолчанию любая неполная последняя строка обрабатывается так, как если бы она имела завершающую
. Редактирование других форм файлов может дополнительно быть разрешено ex
Реализации.

Ассоциация .exrc файлы и исходные файлы должны быть текстовыми файлами, состоящими из ex команды; увидеть
РАСШИРЕННОЕ ОПИСАНИЕ.

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

ОКРУЖАЮЩАЯ СРЕДА ПЕРЕМЕННЫЕ


Следующие переменные среды должны влиять на выполнение ex:

КОЛОННЫ Отменить выбранный системой горизонтальный размер экрана. См. Базовые определения
том POSIX.1‐2008, Глава 8, Окружающая среда Переменные для допустимых значений и
результаты, когда он не установлен или равен нулю.

ВЫХОД Составьте список ex команды, которые выполняются при запуске редактора. Увидеть
РАСШИРЕННОЕ ОПИСАНИЕ для получения более подробной информации о фазе инициализации.

ГЛАВНАЯ Определите путь к каталогу, в котором будет производиться поиск при запуске редактора.
файл с именем .exrc; см. РАСШИРЕННОЕ ОПИСАНИЕ.

ДЛИННЫЙ Задайте значение по умолчанию для переменных интернационализации, которые не установлены или
нулевой. (См. Том Базовых определений POSIX.1-2008, Раздел 8.2,
Интернационализация Переменные за приоритет интернационализации
переменные, используемые для определения значений категорий локали.)

LC_ALL Если установлено непустое строковое значение, переопределить значения всех остальных
переменные интернационализации.

LC_COLLATE
Определите локаль для поведения диапазонов, классов эквивалентности и мульти-
элементы сопоставления символов в регулярных выражениях.

LC_CTYPE Определите локаль для интерпретации последовательностей байтов текстовых данных
как символы (например, однобайтовые, а не многобайтовые символы в
аргументы и входные файлы), поведение классов символов в обычных
выражения, классификация символов как прописные или строчные буквы,
преобразование регистра букв и определение границ слов.

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

ЛИНИИ Отменить выбранный системой вертикальный размер экрана, используемый в качестве количества строк
в полном экране и размер экрана по вертикали в визуальном режиме. Посмотреть базу
Том определений POSIX.1-2008, Глава 8, Окружающая среда Переменные для действительного
значения и результаты, если он не установлен или равен нулю.

НЛПСАТ Определите расположение каталогов сообщений для обработки LC_MESSAGES.

PATH Определите путь поиска для команды оболочки, указанной в ex редактор
команды !, оболочка, читатькачества записывать, а также команда открытого и визуального режима !; увидеть
описание поиска и выполнения команд в Раздел 2.9.1.1, Command
Поиск и Типы.

SHELL Определите предпочтительный интерпретатор командной строки для использования в качестве значения по умолчанию
домен оболочка вариант редактирования.

СРОК Определите название типа терминала. Если эта переменная не установлена ​​или равна нулю,
неуказанный тип терминала по умолчанию должен использоваться.

АСИНХРОННЫЙ СОБЫТИЯ


Следующий термин используется в этом и следующих разделах для обозначения команды и
асинхронные действия при событии:

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

При получении сигналов производятся следующие действия:

SIGINT Если стандартный ввод не является оконечным устройством, ex не должен записывать файл или
вернуться в режим ввода команд или текста и выйти с ненулевым выходом
Статус.

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

В противном случае:

1. При выполнении ex команда режима ввода текста, все строки ввода, которые были
полностью введенные должны быть разрешены в буфере редактирования, а любые частично
введенная строка будет отброшена.

2. Если в данный момент выполняется команда, она должна быть прервана и сообщение
отображается. Если иное не указано в ex or vi описания команд,
не указано, появляются ли какие-либо строки, измененные выполняющейся командой
изменены, или как они были до изменения выполняющейся командой, в
буфер.

Если выполняемая в данный момент команда была командой движения, связанная с ней
команда должна быть отброшена.

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

4. После этого редактор вернется в командный режим.

SIGCONT Экран должен обновляться в открытом или визуальном режиме.

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

SIGTERM См. SIGHUP.

Действия, предпринимаемые для всех остальных сигналов, не указаны.

стандартный вывод


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

СТДЕРР


Стандартная ошибка должна использоваться только для диагностических сообщений.

ВЫВОД FILES


Выход из ex должны быть текстовыми файлами.

РАСПРОСТРАНЕНИЯ ОПИСАНИЕ


Только ex режим редактора описан в этом разделе. Видеть vi для дополнительного редактирования
возможности доступны в ex.

При возникновении ошибки ex напишу сообщение. Если терминал поддерживает режим standout
(например, обратное видео), сообщение должно быть написано в автономном режиме. Если терминал
не поддерживает выдающийся режим, а возможность редактирования колокольчики установлено, предупреждающее действие
должно предшествовать сообщению об ошибке.

По умолчанию ex запускается в командном режиме, что обозначается значком : незамедлительный; видеть
домен подсказка команда. В режим ввода текста можно войти, нажав добавлять, вставитьили изменение
команды; из него можно выйти (и снова войти в командный режим), набрав ('') в одиночестве
в начале строки.

Инициализация in ex и vi
Следующие символы используются в этом и следующих разделах для указания местоположений в
редактировать буфер:

заместитель и текущий пути
Два пути с именем текущий и заместитель, поддерживаются редактором. Любой ex
команды, которые принимают имена файлов в качестве аргументов, должны устанавливать их следующим образом:

1. Если файл аргумент указывается в ex отредактировать , exили оправляться команды, или если
an ex день команда заменяет содержимое буфера редактирования.

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

б. В противном случае альтернативный путь должен быть установлен на файл аргумент.

2. Если файл аргумент указывается в ex следующий команда:

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

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

4. Если файл аргумент указывается в ex читать и записывать команды (то есть, когда
чтение или запись файла, а не в программу, названную оболочка отредактировать
вариант), или файл аргумент указывается в ex хи команда:

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

б. В противном случае альтернативный путь должен быть установлен на файл аргумент.

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

текущий линия
Строка буфера редактирования, на которую указывает курсор. Описание каждой команды
указывает текущую строку после выполнения команды, поскольку текущий линия
ценностное . Когда буфер редактирования не содержит строк, текущая строка должна быть нулевой; видеть
адресация in ex.

текущий обзор
Столбец текущей строки дисплея, занятый курсором. (Столбцы должны быть
пронумерованы, начиная с 1.) В каждом описании команды указывается текущий столбец.
после выполнения команды, поскольку текущий обзор ценить. Этот столбец
идеальный столбец, который запоминается на протяжении всей жизни редактора. Фактический дисплей
столбец строки, на котором стоит курсор, может отличаться от текущего столбца;
см. обсуждение позиционирования курсора в Command Описание in vi.

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

Длина строк в буфере редактирования может быть ограничена до {LINE_MAX} байтов. В открытом и
в визуальном режиме длина строк в буфере редактирования может быть ограничена количеством
символы, которые уместятся на дисплее. Если во время редактирования будет превышен какой-либо предел,
должно быть написано сообщение об ошибке. Если какой-либо предел превышен строкой, считанной из файла,
должно быть написано сообщение об ошибке, и сеанс редактирования может быть прекращен.

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

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

1. Если переменная среды ВЫХОД установлен, редактор выполняет ex команды
содержится в этой переменной.

2. Если ВЫХОД переменная не установлена, и все следующее верно:

а. В ГЛАВНАЯ переменная окружения не пуста и не пуста.

б. Файл .exrc в каталоге, на который ссылается ГЛАВНАЯ переменная окружения:

я. Существуют

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

iii. Не доступен для записи никому, кроме владельца

редактор оформляет ex команды, содержащиеся в этом файле.

3. Если и только если выполняются все следующие условия:

а. Текущий каталог не упоминается ГЛАВНАЯ переменная среды.

б. Команда в ВЫХОД переменная среды или команда в .exrc подать в
каталог, на который ссылается ГЛАВНАЯ переменная среды устанавливает параметр редактора
отл..

c. .exrc файл в текущем каталоге:

я. Существуют

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

iii. Не доступен для записи никому, кроме владельца

редактор должен попытаться выполнить ex команды, содержащиеся в этом файле.

Линии в любом .exrc файл с пустыми строками игнорируется. Если есть .exrc Файл существует,
но не читается по причинам владения или разрешения, это будет ошибкой.

После ВЫХОД переменная и любые .exrc файлы обрабатываются, первый файл, указанный в
пользователь должен быть отредактирован следующим образом:

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

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

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

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

Если же линия индикатора −с была указана опция, когда в первый раз уже существующий файл (включая
файл, который может не существовать, но для которого доступна информация для восстановления, когда -r
задана опция) заменяет или инициализирует содержимое буфера редактирования, текущий
строка должна быть установлена ​​на последнюю строку буфера редактирования, текущий столбец должен быть установлен на
не- , а ex команды, указанные с помощью −с опцион должен быть исполнен. В этом
случае, текущая строка и текущий столбец не должны быть установлены, как описано для команды
связанные с заменой или инициализацией содержимого буфера редактирования. Однако если
домен вариант или день команда связана с этим действием, −с команды опций
выполняется, а затем выполняется переход к тегу.

В текущем списке аргументов должны быть изначально установлены имена файлов, указанные пользователем на
командная строка. Если пользователь не указал имена файлов, текущий список аргументов
будет пустым. Если была указана опция, не указано, есть ли какое-либо имя файла
результат обработки тега должен быть добавлен к текущему списку аргументов. В этом случае
где имя файла добавляется в качестве префикса к текущему списку аргументов, текущий аргумент
Ссылка списка должна быть установлена ​​на это имя файла. В случае, если имя файла не добавлено
в качестве префикса к текущему списку аргументов ссылка на текущий список аргументов должна
логически располагаться перед первым из имен файлов, указанных в командной строке (для
пример, последующий ex следующий команда должна отредактировать первое имя файла из команды
линия). Если опция не была указана, текущая ссылка на список аргументов должна быть
первое из имен файлов в командной строке.

адресация in ex
Обращаясь в ex относится к текущей строке и текущему столбцу; адрес строки
это его номер строки, отсчитываемый от 1, адрес столбца - это его отсчет с отсчетом от 1 от
начало строки. Как правило, текущая строка - это последняя строка, на которую воздействует команда.
Номер текущей строки - это адрес текущей строки. В описании каждой команды
описывается влияние команды на текущий номер строки и текущий столбец.

Адреса строятся следующим образом:

1. Характер '' (точка) должна указывать на текущую строку.

2. Характер '$' должен обращаться к последней строке буфера редактирования.

3. Положительное десятичное число. n обращается к n-я строка буфера редактирования.

4. Адрес "'Икс" относится к строке, отмеченной символом имени метки 'X', который
должен быть строчной буквой из переносимого набора символов, символом обратной кавычки,
или символ одиночной кавычки. Будет ошибкой, если отмеченная строка не
в настоящее время присутствует в буфере редактирования или отметка не установлена. Линии могут быть отмечены
с ex отметка or k команды, или vi m команда.

5. Регулярное выражение, заключенное в символы ('/') должен обращаться к первой строке
найдено путем поиска вперед от строки, следующей за текущей строкой, к концу
буфер редактирования и остановка на первой строке, для которой строка, исключая
прекращение соответствует регулярному выражению. Как указано в Стандарт Expressions
in ex, адрес, состоящий из нулевого регулярного выражения, разделенного
персонажи ("//") должен адресовать следующую строку, для которой строка, исключая
прекращение соответствует последнему встреченному регулярному выражению. Кроме того,
секунда можно не указывать в конце командной строки. Если обертка отредактировать
установлена ​​опция, поиск будет продолжен до начала буфера редактирования и
продолжить до текущей строки включительно, так что весь буфер редактирования
искал. В регулярном выражении последовательность "\ /" представляет собой буквальный
вместо разделителя регулярного выражения.

6. Регулярное выражение, заключенное в символы (';') обращается к
первая строка найдена путем поиска назад от строки, предшествующей текущей строке
к началу буфера редактирования и остановка на первой строке, для которой
линия, исключая завершающую соответствует регулярному выражению. Адрес
состоящий из нулевого регулярного выражения, разделенного символы ("??")
должен обращаться к предыдущей строке, для которой строка, исключая завершающую
соответствует последнему встреченному регулярному выражению. Кроме того, второй
знак> можно опустить в конце командной строки. Если обертка опция редактирования установлена,
поиск должен выполняться по кругу от начала буфера редактирования до конца
изменить буфер и продолжить до текущей строки включительно, чтобы все
буфер ищется. В регулярном выражении последовательность "\?" представляет собой
буквальный вместо разделителя RE.

7. А ('+') или знак минус ('-'), за которым следует десятичное число, должно указывать
текущая строка плюс или минус число. А '+' or '-' без десятичной дроби
число должно указывать на текущую строку плюс или минус 1.

Адреса могут сопровождаться нулевым или более адресным смещением, необязательно. -отдельно.
Смещения адресов строятся следующим образом:

1. '+' or '-' сразу после десятичного числа должно сложить (вычесть)
указанное количество строк до (от) адреса. А '+' or '-' не сопровождаемый
десятичное число должно прибавлять (вычитать) 1 к (из) адреса.

2. Десятичное число добавляет к адресу указанное количество строк.

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

Команды принимают ноль, один или два адреса; см. описания 1адрес и 2адрес in
Command Описание in ex. Если предоставлено более необходимого количества адресов
команда, требующая нулевых адресов, будет ошибкой. В противном случае, если больше, чем
Требуемое количество адресов передается команде, адреса указываются первыми
должны быть оценены и затем отброшены до тех пор, пока не останется максимальное количество действительных адресов.

Адреса отделяются друг от друга знаком ('') или (';').
Если адрес не указан до или после или разделитель, он должен быть
как если бы адрес текущей строки был указан до или после разделителя. в
случай разделитель, текущая строка ('') устанавливается на первое
адрес, и только тогда будет рассчитан следующий адрес. Эта функция может быть использована для
определить начальную линию для прямого и обратного поиска (см. правила 5. и 6.).

А ('%') будет эквивалентно вводу двух адресов «1, $».

Любое разграничение символы между адресами, разделители адресов или адрес
зачеты должны быть отброшены.

Command линия анализ in ex
Следующий символ используется в этом и следующих разделах для описания поведения синтаксического анализа:

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

Анализ командной строки должен выполняться в следующих шагах. Для каждого шага символы
уже оцененные должны быть проигнорированы; то есть фраза `` ведущий персонаж '' относится к
следующий символ, который еще не был оценен.

1. Ведущий символы должны быть пропущены.

2. Ведущий символы должны быть пропущены.

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

4. Начальные символы, которые можно интерпретировать как адреса, должны оцениваться; видеть
адресация in ex.

5. Ведущий символы должны быть пропущены.

6. Если следующий символ - персонаж или :

а. Если следующий символ - :

я. Если ex находится в открытом или визуальном режиме, текущая строка должна быть установлена ​​на последнюю
адрес указан, если есть.

II. В противном случае, если последняя команда была прервана персонаж,
никаких действий предприниматься не должно; например, команда "|| " должен
выполнить две подразумеваемые команды, а не три.

iii. В противном случае, шаг 6.b. будет применен.

б. В противном случае подразумеваемая команда должна быть Распечатать команда. Последний #, pкачества l
флаги, указанные для любых ex команда должна быть запомнена и применяться к этому
подразумеваемая команда. Выполнение ex номер, Распечататьили список команда устанавливает
запомнил флаги #, ничего и lсоответственно плюс любые другие флаги
указанное для этого исполнения номер, Распечататьили список команда.

If ex в настоящее время не выполняет Глобальный or v команда, а не адрес или счет
указано, текущая строка должна быть увеличена на 1, прежде чем команда будет
выполнен. Если увеличение текущей строки приведет к получению адреса за
последняя строка в буфере редактирования, команда не будет выполнена, и приращение не будет
произошло.

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

7. Имя команды должно состоять из следующего символа (если символ не
алфавитный), или следующий символ и любые последующие буквенные символы (если
является буквенным), за следующими исключениями:

а. Команды, состоящие из любого префикса символов в имени команды удалять,
сразу за которым следует любой из персонажей 'l', 'п', '+', '-'или '#' должен быть
интерпретируется как удалять команда, за которой следует , за которым следуют символы
которые не были частью префикса удалять команда. Максимальное количество
символы должны быть сопоставлены с именем команды удалять; например, "дель" должен
не рассматриваться как "де" за которым следует флаг l.

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

c. Команды, состоящие из символа 'S', за которым следуют символы, которые могут быть
интерпретируется как допустимые варианты для s команда, должна быть эквивалентом s
команда без каких-либо шаблонов или значений замены, за которой следует ,
за которым следуют символы после 'S'.

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

┌───┬────────┬┬───┬───────┬┬───┬────────
aдобавлять ││nследующий ││tt
cизменение ││pРаспечатать ││uотменить
chизменение ││prРаспечатать ││unотменить
eотредактировать ││rчитать ││vv
mдвигаться ││reчитать ││wзаписывать
maотметка ││ss ││ │ │
└───┴────────┴┴───┴───────┴┴───┴───────
Расширения реализации с именами, вызывающими подобные неоднозначности, не должны проверяться.
для совпадения, пока все возможные совпадения для команд, указанных в POSIX.1-2008, не будут
проверено.

9. Если команда ! команда, или если команда читать команда, за которой следует ноль
или больше персонажи и !, или если команда записывать команда, за которой следует
один или больше персонажи и !, остальная часть команды должна включать все
символы до не- -экранированный . В должен быть
отбрасывается, и любые последующие символы должны анализироваться как отдельные ex команда.

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

а. Любой '!' символ, следующий сразу за командой, должен быть пропущен и быть частью
команды.

б. Любой ведущий символы должны быть пропущены и быть частью команды.

c. Если следующий символ - '+', символы до первого не- -экранированный
или не -экранированный должны быть пропущены и быть частью
команда.

d. Остальная часть команды определяется шагами, указанными в параграфе
12.

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

а. Любой ведущий символы должны быть пропущены и быть частью команды.

б. Если следующий символ не является буквенно-цифровым, двойные кавычки, ,
, или персонаж:

я. Следующий символ должен использоваться как разделитель команд.

II. Если команда Глобальный, открытыйили v команда, символы до первого
не- -экранированный , или первый не- -экранированный разделитель
символ, должен быть пропущен и быть частью команды.

iii. Если команда является s команда, символы до первого
не- -экранированный , или второй не- -экранированный
символ-разделитель, должен быть пропущен и быть частью команды.

c. Если команда Глобальный or v команда, символы до первого
не- -экранированный должен быть пропущен и быть частью команды.

d. В противном случае остальная часть команды должна определяться шагами, указанными в
абзац 12.

12. В противном случае:

а. Если бы команда была карта, отменить отображение, сокращатьили несокращенный команда, персонажи
до первого не- -V-сбежал , , или дважды
символ кавычки должен быть пропущен и быть частью команды.

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

c. Если бы команда была добавлять, изменениеили вставить команду и шаг 12.b. закончился
на символ, любые последующие символы, до следующего
не- -экранированный должен использоваться как вводимый текст для команды.

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

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

Аргументы команды должны анализироваться, как описано в Сводке и описании каждого
individual ex команда. Этот разбор не будет -чувствительный, за исключением !
аргумент, который должен следовать за именем команды без вмешательства персонажи и
где иначе было бы двусмысленно. Например, считать и флажок аргументы не должны быть
-отделено, потому что "d22p" не двусмысленно, но файл аргументы в ex следующий
команда должна быть разделена одним или несколькими символы. Любой в команде
аргументы в пользу сокращать, несокращенный, картакачества отменить отображение команды могут быть -V-
сбежал, и в этом случае не должен использоваться в качестве разделителя аргументов. Любой
в аргументе команды для любой другой команды может быть -escaped, и в этом случае
что не должен использоваться в качестве разделителя аргументов.

Внутри командных аргументов для сокращать, несокращенный, картакачества отменить отображение команды, любые
персонаж может быть -V-сбежал. Все такие экранированные символы подлежат обработке.
буквально и не имеет особого значения. Внутри командных аргументов для всех остальных ex
команды, не являющиеся регулярными выражениями или заменяющими строками, любой символ, который
иначе иметь особое значение может быть - сбежал. Экранированные символы должны быть
трактуется буквально, без особого значения, как символы расширения оболочки или '!', '%'качества
'#' символы расширения. Видеть Стандарт Expressions in ex и Замена Струны in ex для
описания аргументов команды, которые являются регулярными выражениями или заменяющими строками.

Не- -экранированный '%' персонажи, появляющиеся в файл аргументы к любым ex командование должно
заменить на текущий путь; неэкранированный '#' символы заменяются на
альтернативный путь. Будет ошибкой, если '%' or '#' персонажи появляются без экранирования в
аргумент и соответствующие им значения не установлены.

Не- -экранированный '!' символы в аргументах либо ex ! команды или
открытый и визуальный режим ! команда, или в аргументах к ex читать команда, где
первый не- после имени команды стоит '!' символ, или в аргументах к
ex записывать команда, где за именем команды следует один или несколько персонажи и
первый не- после имени команды стоит '!' символ, заменяется на
аргументы последней из этих трех команд, как они появились после всех неэкранированных
'%', '#'качества '!' были заменены символы. Будет ошибкой, если '!' символы
отображаются без экранирования в одной из этих команд, и ранее ни одна из них не выполнялась
этих команд.

Если ошибка возникает во время синтаксического анализа или выполнения ex команда:

* Об этом должно быть написано информационное сообщение. Выполнение ex команду
остановится, а курсор (например, текущая строка и столбец) не будет
доработан.

* Если ex команда появилась в результате расширения карты, все символы с этой карты
расширение должно быть отклонено, если иное не указано в карта команда.

* В противном случае, если ex команда, полученная в результате обработки ВЫХОД охрана окружающей среды
переменная, a .exrc файл, :источник команда, −с вариант, или +команду указан
ex отредактировать , ex, следующийили визуальный команда, никаких дальнейших команд из источника
команды должны выполняться.

* В противном случае, если ex команда возникла в результате выполнения буфера или Глобальный or v
команда, никакие дальнейшие команды, вызванные выполнением буфера или Глобальный or v
команда должна быть выполнена.

* В противном случае, если ex команда не была прервана , все символы до
и включая следующие не- -экранированный должны быть отброшены.

вход Редактирование in ex
Следующий символ используется в этом и следующих разделах для указания команды
действия:

слово В локали POSIX слово состоит из максимальной последовательности букв, цифр,
и подчеркивания, разделенные с обоих концов символами, кроме букв,
цифры или символы подчеркивания, либо в начале или в конце строки, либо в буфере редактирования.

При приеме вводимых символов от пользователя в любом ex командный режим или ex ввод текста
Режим, ex должен включать обработку ввода в каноническом режиме, как определено в Системных интерфейсах.
том POSIX.1‐2008.

Если в ex режим ввода текста:

1. Если номер опция редактирования установлена, ex должен запрашивать ввод, используя номер строки,
будет назначен строке, если она введена, в формате, указанном для ex
номер команда.

2. Если автоиндент опция редактирования установлена, ex должен запрашивать ввод с помощью автоиндент
персонажей, как описано автоиндент вариант редактирования. автоиндент персонажи должны
следуйте за номером строки, если таковая имеется.

Если в ex командный режим:

1. Если подсказка установлен параметр редактирования, при вводе будет предложено использовать один ':'
персонаж; в противном случае не будет никаких подсказок.

Вводимые символы в следующих разделах должны иметь следующие эффекты на
строка ввода.

манускрипт
конспект:
ВФ

См. Описание стти ВФ символ в стти.

Если в ex командный режим:

Если же линия индикатора ВФ символ - это первый символ, введенный в строку, строка должна быть
оценивается, как если бы он содержал два символа: a -D и .

В противном случае ВФ символ не имеет особого значения.

Если в ex режим ввода текста:

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

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

В противном случае, если курсор следует за '^', который следует за автоиндент характер и
домен '^' был предыдущим символом ввода текста, '^' и все автоиндент
символы в строке будут отброшены, и пользователю снова будет предложено ввести
ввод для той же строки. В дополнение автоиндент уровень для следующей строки ввода
должен быть получен из той же строки, из которой автоиндент уровень для текущего
входная строка была выведена.

В противном случае, если нет автоиндент или символы ввода текста в строке, ВФ
символ должен быть отброшен.

В противном случае ВФ символ не имеет особого значения.


конспект:

-J

Если в ex командный режим:

Вызвать синтаксический анализ командной строки; -J должен быть сопоставлен с
.

Если в ex режим ввода текста:

Завершить текущую строку. Если нет других символов, кроме автоиндент
символы в строке, все символы в строке должны быть отброшены.

Запрашивать ввод текста на новой строке после текущей строки. Если автоиндент отредактировать
опция установлена, соответствующее количество автоиндент символы должны быть добавлены как
префикс к строке, как описано ex автоиндент вариант редактирования.


конспект:


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

-V
конспект:
-V

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

Если функциональность `` буквального следующего '' выполняется базовой системой, она
определяется реализацией, является ли символ, отличный от -V выполняет эту функцию.

-W
конспект:
-W

Отбросьте -W и предшествующее ему слово в строке ввода, включая любые
символы, следующие за словом и предшествующие -W. Если слово
стирание '' выполняется базовой системой, она определяется реализацией
ли персонаж кроме -W выполняет эту функцию.

Command Описание in ex
Следующие символы используются в этом разделе для обозначения модификаторов команд. Некоторые из
эти модификаторы можно опустить, и в этом случае должны использоваться указанные значения по умолчанию.

1адрес Однострочный адрес, указанный в любой из форм, описанных в адресация in ex;
по умолчанию должна быть текущая строка (''), если не указано иное.

Если адрес строки равен нулю, это будет ошибкой, если иное не указано в
следующие описания команд.

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

2адрес Два адреса, определяющие включающий диапазон строк. Если нет адресов
указано, значение по умолчанию для 2адрес должна быть только текущая строка (".,."), если
иначе указано в следующих описаниях команд. Если один адрес
указано, 2адрес должен указывать только эту строку, если иное не указано в
следующие описания команд.

Будет ошибкой, если первый адрес больше, чем второй адрес.

Если буфер редактирования пуст, а два адреса указаны с помощью команды
кроме !, записывать, wqили хи команд, либо адрес не равен нулю, это
будет ошибкой.

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

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

Флаги Один или несколько персонажей '+', '-', '#', 'п'или 'l' (ell). Флаг
персонажи могут быть по отдельности, и в любом порядке и в любом сочетании. В
символы '#', 'п'качества 'l' приводит к тому, что строки будут записаны в формате
определяется Распечатать команда с указанным Флаги.

Записываемые строки следующие:

1. Все строки буфера редактирования, записанные во время выполнения ex &, ~, список,
номер, открытый, Распечатать, s, визуальныйкачества z команды должны быть написаны как указано
by Флаги.

2. После завершения ex команда с флагом в качестве аргумента,
текущая строка должна быть записана, как указано в Флаги, если текущая строка
была последней строкой, написанной командой.

Персонажи '+' и '-' вызвать значение текущей строки после
выполнение ex команда, которая должна быть скорректирована с помощью адреса смещения, как описано в
адресация in ex. Эта корректировка должна произойти до того, как текущая строка будет
написано, как описано в 2. выше.

По умолчанию для Флаги не будет.

буфер Одна из нескольких именованных областей для хранения текста. Указаны именованные буферы
буквенно-цифровыми символами языкового стандарта POSIX. Также должен быть один
`` безымянный '' буфер. Если буфер не указан для команд редактора, использующих
буфер, должен использоваться безымянный буфер. Команды, сохраняющие текст в буферы
сохранит текст в том виде, в каком он был до того, как команда вступила в силу, и сохранит
текст, встречающийся раньше в файле, до текста, встречающегося позже в файле,
независимо от того, как была указана текстовая область. Команды, сохраняющие текст в
буферы должны хранить текст в безымянном буфере, а также в любом указанном
буфера.

In ex команд, имена буферов указываются как имя само по себе. В открытом или
Команды визуального режима перед названием ставят двойные кавычки ('"') персонаж.

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

Также должны быть буферы с номерами от 1 до 9. В открытом и визуальном виде
режим, если область текста, содержащая символы из более чем одной строки,
модифицируется vi c or d команд, персонаж движения, связанный с
домен c or d указывает, что текст буфера должен быть в строчном режиме, или
команды %, `, /, ?, (, ), N, n, {или } используются для определения области текста для
домен c or d команд, содержимое буферов с 1 по 8 должно быть перемещено в
буфер, названный следующим численно большим значением, содержимое буфера 9
отбрасывается, а область текста копируется в буфер 1. Это
должен быть в дополнение к копированию текста в указанный пользователем буфер или безымянный
буфер или и то, и другое. Числовые буферы могут быть указаны как исходный буфер для открытых
и команды визуального режима; однако, указав числовой буфер как запись
цель команды открытого или визуального режима должна иметь неопределенные результаты.

Текст каждого буфера должен иметь свойство быть либо в строке, либо в
символьный режим. Добавление текста в непустой буфер должно установить соответствующий режим
характеристика добавляемого текста. Добавление текста в буфер должно
вызвать создание как минимум одной дополнительной строки в буфере. Весь текст
хранится в буферах ex команды должны быть в строчном режиме. В ex команды, которые
использовать буферы в качестве источника текста. Укажите индивидуально, как буферы разных
режимы обрабатываются. Каждая команда открытого или визуального режима, использующая буферы для любых
цель определяет индивидуально режим текста, хранящегося в буфере, и
как обрабатываются буферы разных режимов.

файл Текст команды, используемый для получения имени пути. По умолчанию должен быть текущий
имя пути, как определено ранее, и в этом случае, если текущее имя пути еще не
установлено, что это ошибка, за исключением случаев, специально отмеченных в
индивидуальные описания команд, которые следуют ниже. Если текст команды содержит какие-либо
персонажей '~', '{', '[', '*', ';', '$', '"', обратная кавычка, одинарная кавычка,
а также , он должен быть подвергнут процессу `` расширения оболочки '',
как описано ниже; если результат более одного пути и команда
ожидает только одного, это будет ошибка.

Процесс расширения оболочки в редакторе осуществляется следующим образом. В ex
Утилита должна передать два аргумента программе, названной параметром редактирования оболочки;
первый должен быть −с, а вторым будет строка "эхо" и команда
текст как единственный аргумент. Стандартный вывод и стандартная ошибка этого
команда заменяет текст команды.

! Символ, который можно добавить к имени команды, чтобы изменить ее работу, как
подробно описано в отдельных описаниях команд. За исключением ex
читать, записыватькачества ! команды, '!' символ должен действовать как модификатор, только если
нет символы между ним и именем команды.

помнила по области применения направление
Ассоциация vi команды N и n начать поиск в прямом или обратном направлении в
буфер редактирования на основе запомненного направления поиска, которое изначально
не установлен, и устанавливается ex Глобальный, v, sкачества день команды, а vi / и ?
команды.

Сокращать
конспект:
ab [бревиат][л.ш. шк]

If л.ш. и шк не указаны, пишем текущий список сокращений и ничего не делаем
больше.

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

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

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

Набор проверяемых символов определяется следующим образом:

1. Если перед словом не вставлены символы, а не слова или символы
, инициировавшего проверку, набор знаков должен состоять из символа слова.

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

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

Не уточняется, был ли л.ш. аргумент введен для ex сокращать и несокращенный
команды заменяются таким образом. Независимо от того, произойдет ли замена,
действие команды должно быть таким, как если бы замена не произошла.

Текущий линия: Без изменений.

Текущий обзор: Без изменений.

присоединять
конспект:
[1адрес] a[добавить][!]

Enter ex режим ввода текста; вводимый текст размещается после указанной строки. Если линия
ноль, текст должен быть помещен в начало буфера редактирования.

На эту команду влияет номер и автоиндент параметры редактирования; после
имя команды с '!' вызовет автоиндент изменить настройку параметра для переключения для
только продолжительность этой команды.

Текущий линия: Установить на последнюю строку ввода; если строки не были введены, установите указанное
строка, или к первой строке буфера редактирования, если была указана строка с нулем, или с нулем, если
буфер редактирования пуст.

Текущий обзор: Установите не- .

аргументы
конспект:
ar [gs]

Записать текущий список аргументов с текущей записью списка аргументов, если есть, между '['
и ']' символы.

Текущий линия: Без изменений.

Текущий обзор: Без изменений.

Изменить
конспект:
[2адрес] c[висящий][!][считать]

Enter ex режим ввода текста; вводимый текст должен заменять указанные строки. Указанный
строки должны быть скопированы в безымянный буфер, который станет буфером линейного режима.

На эту команду влияет номер и автоиндент параметры редактирования; после
имя команды с '!' вызовет автоиндент изменить настройку параметра для переключения для
только продолжительность этой команды.

Текущий линия: Установить на последнюю строку ввода; если строки не были введены, установите на строку перед
к первому адресу или к первой строке буфера редактирования, если нет предшествующих строк
первый адрес или до нуля, если буфер редактирования пуст.

Текущий обзор: Установите не- .

Изменить Каталог
конспект:
chd [ir][!][каталог]
cd[!][каталог]

Измените текущий рабочий каталог на каталог.

Если нет каталог указан аргумент, а ГЛАВНАЯ переменная среды установлена ​​в значение, отличное от
нулевое и непустое значение, каталог по умолчанию используется значение, указанное в ГЛАВНАЯ
переменная окружения. Если ГЛАВНАЯ переменная среды пуста или не определена,
значение по умолчанию каталог определяется реализацией.

Если нет '!' добавляется к имени команды, и буфер редактирования был изменен с
последняя полная запись, и текущий путь не начинается с '/', это должно быть
ошибка.

Текущий линия: Без изменений.

Текущий обзор: Без изменений.

Копировать
конспект:
[2адрес] co[py] 1адрес [Флаги]
[2адрес] t 1адрес [Флаги]

Скопируйте указанные строки после указанной строки назначения; нулевая строка указывает, что
строки должны быть помещены в начало буфера редактирования.

Текущий линия: Установить на последнюю скопированную строку.

Текущий обзор: Установите не- .

Удалить
конспект:
[2адрес] d[далить][буфер][считать][Флаги]

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

Флаги могут следовать сразу за именем команды; видеть Command линия анализ in ex.

Текущий линия: Установить на строку, следующую за удаленными строками, или на последнюю строку в редактировании.
buffer, если эта строка находится за пределами буфера редактирования, или до нуля, если буфер редактирования
пустой.

Текущий обзор: Установите не- .

Редактировать
конспект:
e[указанный][!][+команду][файл]
ex[!][+команду][файл]

Если нет '!' добавляется к имени команды, и буфер редактирования был изменен с
последняя полная запись, это будет ошибка.

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

Ассоциация +команду вариант должен быть -деограниченный; персонажей в +команду может
можно избежать, поставив перед ними персонаж. В +команду должен быть
интерпретируется как ex команда сразу после того, как содержимое буфера редактирования было
заменены, и текущая строка и столбец были установлены.

Если буфер редактирования пуст:

Текущий линия: Установить на 0.

Текущий обзор: Установить на 1.

В противном случае, если выполняется в ex командный режим или если +команду указан аргумент:

Текущий линия: Установить на последнюю строку буфера редактирования.

Текущий обзор: Установите не- .

В противном случае, если файл опускается или приводит к текущему имени пути:

Текущий линия: Установить в первую строку буфера редактирования.

Текущий обзор: Установите не- .

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

Текущий линия: Установить последнее значение, сохраненное при последнем редактировании этого файла. Если это значение
недопустимая строка в новом буфере редактирования, установлена ​​в первую строку буфера редактирования.

Текущий обзор: Если текущая строка была установлена ​​на последнее значение, сохраненное, когда файл был последним
edited, устанавливается на последнее значение, сохраненное при последнем редактировании файла. В противном случае, или если
последнее значение не является допустимым столбцом в новом буфере редактирования, установлено не- .

В противном случае:

Текущий линия: Установить в первую строку буфера редактирования.

Текущий обзор: Установите не- .

Файл
конспект:
f[с][файл]

Если файл аргумент, альтернативный путь должен быть установлен на текущий
имя пути, а текущее имя пути должно быть установлено на файл.

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

Текущий линия: Без изменений.

Текущий обзор: Без изменений.

Глобальный
конспект:
[2адрес] g[ЛОБАЛЬНЫЕ] /описания/ [команды]
[2адрес] в/описания/ [команды]

Необязательный '!' персонаж после Глобальный команда должна быть такой же, как выполнение v
команда.

If описания пусто (например, "//") или не указано, последнее использованное регулярное выражение
в редакторе команда должна использоваться как описания, описания может быть разделен
символы (показаны в Синопсисе), а также любые не буквенно-цифровые или нецифровые
Кроме как , , , или двойные кавычки.

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

Ассоциация Глобальный и v Команды логически являются двухпроходными операциями. Сначала отметьте линии внутри
указанные строки, для которых строка, исключая завершающую Матчи
(Глобальный) или не соответствует (v or Глобальный!) указанный шаблон. Во-вторых, выполните ex
команды, данные команды, с текущей строкой ('') устанавливается на каждую отмеченную строку. Если
во время этого процесса возникает ошибка, или содержимое буфера редактирования заменяется (для
например, по ex редактирование: команда) должно быть написано сообщение об ошибке и больше никаких команд
в результате выполнения этой команды должны быть обработаны.

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

Если команды не указаны:

1. Если в ex командный режим должен быть таким, как если бы Распечатать команда была указана.

2. В противном случае никакая команда не будет выполнена.

Для того, чтобы получить добавлять, изменениекачества вставить команд, вводимый текст должен быть включен как часть
команда, а завершающая может быть опущено, если команда завершает список
команды. В открытый и визуальный команды можно указать как одну из команд, в которой
в случае, если каждая отмеченная строка приведет к переходу редактора в открытый или визуальный режим. Если открыто или
Выход из визуального режима осуществляется с помощью кнопки vi Q команда, текущая строка должна быть установлена ​​на следующую
отмеченная линия и повторно войдите в открытый или визуальный режим, пока список отмеченных линий не будет
истощены.

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

Если запомненное направление поиска не задано, Глобальный и v команды должны установить его на
вперед.

Ассоциация автопечать и автоиндент опции редактирования должны быть запрещены на время g or
v команда.

Текущий линия: Если никакие команды не выполняются, установить на последнюю отмеченную строку. В противном случае, как
указан для исполненных ex команды.

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

Вставить
конспект:
[1адрес] i[nsert][!]

Enter ex режим ввода текста; вводимый текст размещается перед указанной строкой. Если
строка равна нулю или 1, текст должен быть помещен в начало буфера редактирования.

На эту команду влияет номер и автоиндент параметры редактирования; после
имя команды с '!' вызовет автоиндент изменить настройку параметра для переключения для
только продолжительность этой команды.

Текущий линия: Установить на последнюю строку ввода; если строки не были введены, установите на строку перед
к указанной строке или к первой строке буфера редактирования, если строк нет
перед указанной строкой, или ноль, если буфер редактирования пуст.

Текущий обзор: Установите не- .

Присоединиться
конспект:
[2адрес] j[ойн][!][считать][Флаги]

If считать указано:

Если адрес не указан, присоединиться команда должна вести себя так, как если бы 2адрес были
текущая строка и текущая строка плюс считать (.,. + считать).

Если был указан один адрес, присоединиться команда должна вести себя так, как если бы 2адрес были
указанный адрес и указанный адрес плюс считать (адр,адр + считать).

Если были указаны два адреса, присоединиться команда должна вести себя так, как если бы дополнительная
адрес, равный последнему адресу плюс считать −1 (адрес1,адрес2,адрес2 + считать −1),
было указано.

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

Если нет считать указано:

Если адрес не указан, присоединиться команда должна вести себя так, как если бы 2адрес были
текущая строка и следующая строка (.,. +1).

Если был указан один адрес, присоединиться команда должна вести себя так, как если бы 2адрес были
указанный адрес и следующая строка (адр,адр + 1).

Объедините текст из указанных строк в одну строку, которая заменит
указанные строки.

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

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

1. Отбросить ведущие символы из соединяемой строки.

2. Если соединяемая линия теперь пуста, удалите ее и пропустите шаги с 3 по 5.

3. Если текущая строка заканчивается на , или первый символ соединяемой строки
- это ')' символ, соедините строки без дальнейших изменений.

4. Если последний символ текущей строки - '', соедините строки двумя
символы между ними.

5. В противном случае соедините строки одним между ними.

Текущий линия: Установить на первую указанную строку.

Текущий обзор: Установите не- .

Список
конспект:
[2адрес] l[является][считать][Флаги]

Эта команда должна быть эквивалентна ex команда:

[2адрес] p[ечать][считать] l[Флаги]

Читать Печать / PDF.

Карта
конспект:
карта[!][л.ш. шк]

If л.ш. и шк не указаны:

1. Если '!' указано, запишите текущий список карт режима ввода текста.

2. В противном случае запишите текущий список карт командного режима.

3. Больше ничего не делать.

Реализации могут ограничивать набор символов, принимаемых в л.ш. or шк, Кроме этого
печатные символы и символы не должны быть ограничены. Дополнительный
ограничения должны определяться реализацией. В обоих л.ш. и шк, любой персонаж может быть
сбежал с -V, и в этом случае символ не должен использоваться для разграничения л.ш.
от шк, и убегающий -V следует выбросить.

Если персонаж '!' добавляется к карта имя команды, отображение должно быть эффективным
в режиме открытого или визуального ввода текста, а не открытый or визуальный командный режим. Это позволяет
л.ш. иметь два разных карта определения одновременно: одно для командного режима и одно
для режима ввода текста.

Для сопоставлений командного режима:

Когда л.ш. вводится как любая часть vi команда в открытом или визуальном режиме (но не
как часть аргументов команды) действие должно быть таким, как если бы
соответствующий шк был введен.

Если любой символ в команде, кроме первого, экранирован с помощью
-V, этот символ не должен совпадать с л.ш..

Не указано, должны ли реализации поддерживать карта команды, где л.ш.
длиной более одного символа, где первый символ л.ш. is
для печати.

If л.ш. содержит более одного символа, и первый символ '#', с последующим
последовательность цифр, соответствующая пронумерованной функциональной клавише, тогда, когда это
функциональная клавиша набрана, она должна быть сопоставлена шк. Символы, отличные от цифр
следуя за '#' символ также представляет функциональную клавишу, названную символами
в л.ш. после '#' и может быть сопоставлен с шк. Не указано, как
названы функциональные клавиши или какие функциональные клавиши поддерживаются.

Для сопоставлений режима ввода текста:

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

Если какой-либо символ во входном тексте экранирован с помощью -V, что
персонаж не должен быть частью совпадения с л.ш..

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

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

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

На терминалах блочного режима отображение не обязательно должно происходить немедленно (например, это может произойти
после того, как терминал передает в систему группу символов), но он должен достичь
такие же результаты, как если бы это произошло немедленно.

Текущий линия: Без изменений.

Текущий обзор: Без изменений.

Отметьте
конспект:
[1адрес] ma[rk] персонаж
[1адрес] k персонаж

Реализации должны поддерживать персонаж значения одной строчной буквы POSIX
языковой стандарт и символы обратной кавычки и одинарной кавычки; поддержка других персонажей есть
определяется реализацией.

При выполнении vi m , установите указанную метку на текущую строку и начните с 1
пронумерованный символ, на который ссылается текущий столбец, если таковой имеется; в противном случае позиция столбца 1.

В противном случае установите указанную метку на указанную строку и сначала пронумеровав ее с 1.
не- не- в строке, если есть; в противном случае последний не- в
линия, если есть; в противном случае позиция столбца 1.

Метка должна оставаться связанной с линией до тех пор, пока метка не будет сброшена или линия не будет сброшена.
удалено. Если удаленная строка восстанавливается последующим отменить команда, любые отметки ранее
связанные с линией, которые не были сброшены, также должны быть восстановлены. Любое использование
метка, не связанная с текущей строкой в ​​буфере редактирования, будет ошибкой.

Знаки ` и ' должен быть установлен, как описано ранее, непосредственно перед следующим
в редакторе происходят события:

1. Использование '$' как ex адрес

2. Использование положительного десятичного числа в качестве ex адрес

3. Использование поисковой команды в качестве ex адрес

4. Использование ссылки на товарный знак в качестве ex адрес

5. Использование следующих команд открытого и визуального режима: -], %, (, ), [, ], {,
}

6. Использование следующих команд открытого и визуального режима: ', G, H, L, M, z если
текущая строка изменится в результате выполнения команды

7. Использование команд открытого и визуального режима: /, ?, N, `, n если текущая строка или
столбец изменится в результате команды

8. Использование ex команды режима: z, отменить, Глобальный, v

Для правил 1., 2., 3. и 4. ` и ' отметки не ставятся, если ex команда
анализируется в соответствии с правилом 6.a. в Command линия анализ in ex.

Для правил 5., 6. и 7. ` и ' отметки не ставятся, если команды используются как
команды движения в открытом и визуальном режиме.

Для правил 1., 2., 3., 4., 5., 6., 7. и 8. ` и ' отметки не ставятся, если
команда не работает.

Ассоциация ` и ' отметки должны быть установлены, как описано ранее, каждый раз, когда содержание редактирования
буфер заменяется (включая редактирование исходного буфера), если он открыт или визуально
режим, или если в ex режим и буфер редактирования не пуст, перед какими-либо командами или движениями
(включая команды или движения, указанные −с or варианты или +команду
аргумент) выполняются в буфере редактирования. В открытом или визуальном режиме отметки должны быть
установить, как если бы выполнение vi m команда; в противном случае, как если бы ex отметка команда.

При переходе с ex режим для открытия или визуальный режим, если ` и ' отметки еще не
установить ` и ' отметки должны быть установлены, как описано ранее.

Текущий линия: Без изменений.

Текущий обзор: Без изменений.

Двигаемся
конспект:
[2адрес] m[Ове] 1адрес [Флаги]

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

Текущий линия: Установить на последнюю из перемещенных строк.

Текущий обзор: Установите не- .

Следующая
конспект:
n[Ext][!][+команду][файл ...]

Если нет '!' добавляется к имени команды, и буфер редактирования был изменен с
последняя полная запись, это будет ошибкой, если файл не будет успешно записан как
определяется автозапись опцию.

Если указан один или несколько файлов:

1. Задайте в списке аргументов указанные имена файлов.

2. Установите ссылку на текущий список аргументов как первую запись в списке аргументов.

3. Установите текущий путь на первое указанное имя файла.

В противном случае:

1. Будет ошибкой, если в списке аргументов после
имя файла, на которое в настоящее время ссылается.

2. Установите текущий путь и ссылку в текущем списке аргументов на имя файла после
имя файла, на которое имеется ссылка в списке аргументов.

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

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

Ассоциация +команду вариант должен быть -деограниченный; символы могут быть экранированы
предшествующий им персонаж. В +команду толкуется как ex
сразу после замены содержимого буфера редактирования и команды
текущая строка и столбец установлены.

Текущий линия: Установите, как описано для отредактировать команда.

Текущий обзор: Установите, как описано для отредактировать команда.

Номер регистрации
конспект:
[2адрес] nu[mber][считать][Флаги]
[2адрес] #[считать][Флаги]

Эти команды должны быть эквивалентны ex команда:

[2адрес] p[ечать][считать] #[Флаги]

Читать Печать / PDF.

Откройте
конспект:
[1адрес] o[ручка] /описания/ [Флаги]

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

Войдите в открытый режим.

Конечный разделитель можно не указывать в описания в конце командной строки. Если
описания пусто (например, "//") или не указано, последнее регулярное выражение, используемое в
в качестве шаблона должен использоваться редактор. Образец можно разделить
символы (показаны в Синопсисе), а также любые буквенно-цифровые или не- Кроме как
, , , или двойные кавычки.

Текущий линия: Установить на указанную строку.

Текущий обзор: Установите не- .

Сохранять
конспект:
pre [служить]

Сохраните буфер редактирования в форме, которую впоследствии можно будет восстановить с помощью -r вариант или
используя ex оправляться команда. После сохранения файла необходимо отправить почтовое сообщение.
отправлено пользователю. Это сообщение должно быть доступно для чтения при вызове mailx утилита. В
сообщение должно содержать имя файла, время сохранения и ex команду
который можно использовать для восстановления файла. Дополнительная информация может быть отправлена ​​по почте.
сообщение.

Текущий линия: Без изменений.

Текущий обзор: Без изменений.

Печать / PDF
конспект:
[2адрес] p[ечать][считать][Флаги]

Напишите адресные строки. Поведение не указано, если количество столбцов в
display меньше, чем количество столбцов, необходимых для записи любого одиночного символа в
пишутся строки.

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

Если же линия индикатора # указан флаг или номер опция редактирования установлена, каждая строка должна предшествовать
по номеру строки в следующем формате:

"% 6d ", <линия номер>

Если же линия индикатора l указан флаг или список установлена ​​опция редактирования:

1. Символы, перечисленные в томе Базовых определений POSIX.1-2008, Настольные 5-1,
Побег Последовательности и ассоциированный Действия записывается как соответствующий escape
последовательность.

2. Непечатаемые символы, отсутствующие в томе базовых определений POSIX.1-2008, Настольные
5-1, Побег Последовательности и ассоциированный Действия записывается в виде одной трехзначной восьмеричной
номер (с предшествующим ) для каждого байта в символе (наиболее значимый
сначала байт).

3. Конец каждой строки должен быть отмечен знаком. '$', и буквальный '$' символы в пределах
строка должна быть написана с предшествующей .

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

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

Текущий линия: Установить на последнюю написанную строку.

Текущий обзор: Без изменений, если текущая строка не изменилась; в противном случае установите не- .

Ставить
конспект:
[1адрес] pu[t][буфер]

Добавить текст из указанного буфера (по умолчанию безымянный буфер) в указанный
линия; нулевая строка указывает, что текст должен быть помещен в начало редактирования
буфер. Каждая часть строки в буфере должна стать новой строкой в ​​буфере редактирования,
независимо от режима буфера.

Текущий линия: Установить на последнюю строку, введенную в буфер редактирования.

Текущий обзор: Установите не- .

Выход
конспект:
q[ПИФ][!]

Если нет '!' добавляется к имени команды:

1. Если буфер редактирования был изменен с момента последней полной записи, он должен быть
ошибка.

2. Если есть имена файлов в списке аргументов после имени файла, на которое в настоящее время ссылаются,
и последняя команда не была выход, wq, хиили ZZ (См. Выход) команда, это будет
ошибка.

В противном случае прервите сеанс редактирования.

Читать
конспект:
[1адрес] r[EAD][!][файл]

If '!' не первый не- чтобы следовать за именем команды, копия указанного
файл должен быть добавлен в буфер редактирования после указанной строки; нулевая строка указывает
что копия должна быть помещена в начало буфера редактирования. Количество строк и
прочитанные байты должны быть записаны. Если нет файл назван, текущий путь должен быть
дефолт. Если нет текущего пути, тогда файл станет текущим путем. Если
нет текущего пути или файл операнд, это должна быть ошибка. Указание файл который
не относится к типу "обычный", результаты не указаны.

В противном случае, если файл предшествует '!', остальная часть строки после '!' должен иметь '%',
'#'качества '!' символы развернуты, как описано в Command линия анализ in ex.

Ассоциация ex Затем утилита должна передать два аргумента программе, названной оболочкой edit
вариант; первый должен быть −с а вторым - развернутые аргументы в пользу читать
команда как единственный аргумент. Стандартный ввод программы должен быть установлен на
стандартный ввод ex программа, когда она была вызвана. Стандартная ошибка и стандарт
вывод программы должен быть добавлен в буфер редактирования после указанной строки.

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

Особое значение '!' после читать команда может быть отменена путем экранирования
это с персонаж.

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

Текущий обзор: Установите не- .

Recover
конспект:
rec [за][!] файл

Если нет '!' добавляется к имени команды, и буфер редактирования был изменен с
последняя полная запись, это будет ошибка.

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

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

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

Текущий файл: Установите, как описано для отредактировать команда.

Текущий обзор: Установите, как описано для отредактировать команда.

Перемотка
конспект:
rew [инд][!]

Если нет '!' добавляется к имени команды, и буфер редактирования был изменен с
последняя полная запись, это будет ошибкой, если файл не будет успешно записан как
определяется автозапись опцию.

Если список аргументов пуст, это будет ошибкой.

Ссылка на текущий список аргументов и текущий путь должны быть установлены на первое
имя файла в списке аргументов.

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

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

Текущий линия: Установите, как описано для отредактировать команда.

Текущий обзор: Установите, как описано для отредактировать команда.

Поставьте
конспект:
se [t][вариант[=[ценностное ]] ...][нетвариант ...][вариант? ...][Найти]

Если аргументы не указаны, запишите значение срок вариант редактирования и эти параметры
чьи значения были изменены по сравнению с настройками по умолчанию; когда аргумент Найти is
указано, запишите все значения параметров.

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

Читать Редактировать Опции in ex для получения подробной информации о конкретных вариантах.

Текущий линия: Без изменений.

Текущий обзор: Без изменений.

Оболочка
конспект:
ш [ELL]

Вызовите программу, указанную в оболочка вариант редактирования с одним аргументом −я (интерактивный
Режим). Редактирование возобновится после выхода из программы.

Текущий линия: Без изменений.

Текущий обзор: Без изменений.

Источник
конспект:
так[urcan в] файл

Прочтите и выполните ex команды от файл. Строки в файле, которые являются пустыми, должны быть
игнорируются.

Текущий линия: Как указано для человека ex команды.

Текущий обзор: Как указано для человека ex команды.

Замена
конспект:
[2адрес] s[институт][/описания/РЕПЛ/[кредита][считать][Флаги]]
[2адрес] &[кредита][считать][Флаги]]
[2адрес] ~[кредита][считать][Флаги]]

Заменить первый экземпляр узора описания по строке РЕПЛ по каждому указанному
линия. (Видеть Стандарт Expressions in ex и Замена Струны in ex.) Любые не алфавитные,
не- разделитель кроме , '|', , или можно использовать двойные кавычки
вместо '/'. символы могут использоваться для экранирования разделителей,
символы и другие специальные символы.

Конечный разделитель можно не указывать в описания или РЕПЛ в конце команды
линия. Если оба описания и РЕПЛ не указаны или пусты (например, "//")
последний s команда должна быть повторена. Если только описания не указано или пусто, последний
в качестве шаблона должно использоваться регулярное выражение, используемое в редакторе. Если только РЕПЛ Не
указано или пусто, образец не должен быть заменен ничем. Если весь
образец замены '%', последний шаблон замены на s команда должна использоваться.

Вход в в РЕПЛ (что требует побега в ex Режим
и бегство -V в открытом или vi mode) разделит строку в этой точке,
создание новой строки в буфере редактирования. В должны быть отброшены.

If кредита включает письмо 'грамм' (Глобальный), все неперекрывающиеся экземпляры шаблона
в строке следует заменить.

If кредита включает письмо «С» (подтвердить), то перед каждой заменой строка должна
быть написанным; написанная строка должна отражать все предыдущие замены. О следующих
линия, символы должны быть написаны под символами из строки, которые
до описания быть замененным, и '^' символы, написанные под персонажами
включен в описания подлежит замене. В ex затем утилита должна дождаться ответа от
Пользователь. Положительный ответ означает, что замена будет произведена, в то время как любой другой ответ
ввод не должен производить замену. Положительный ответ должен состоять из строки
с утвердительным ответом (как определено текущим языком) в начале
линия. Эта строка подлежит редактированию так же, как и ex командная строка.

В случае прерывания (см. Раздел АСИНХРОННЫЕ СОБЫТИЯ) любые изменения, подтвержденные
Пользователь должен сохраниться в буфере редактирования после прерывания.

Если запомненное направление поиска не задано, s команда должна установить его на пересылку.

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

s/описания/РЕПЛ/

в котором описания и РЕПЛ как указано в предыдущем s, &или ~ команда.

В третьем Сводке ~ команда должна повторить предыдущую замену, как если бы '~'
были заменены на:

s/описания/РЕПЛ/

в котором описания должно быть последним регулярным выражением, указанным для редактора, и РЕПЛ должен
быть из предыдущей замены (включая & и ~) команда.

Эти команды должны зависеть от LC_MESSAGES переменная среды.

Текущий линия: Установить на последнюю строку, в которой произошла замена, или без изменений, если нет
произошла замена.

Текущий обзор: Установите не- .

Приостанавливать
конспект:
su [тратить][!]
st[op][!]

Разрешить возвращение управления процессу вызова; ex приостанавливается, как если бы
получил сигнал SIGTSTP. Приостановка происходит только в том случае, если управление заданиями включено в
вызывающая оболочка (см. описание набор −м).

Эти команды должны зависеть от автозапись и писать любой параметры редактирования.

В настоящее время Susp характер (см. стти) должен быть эквивалентен приостановить команда.

Тег
конспект:
та [g][!] теговая строка

Результаты не указаны, если формат файла тегов не соответствует указанному в Ctags
утилита (см. Ctags) описание.

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

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

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

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

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

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

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

Без сокращений
конспект:
una [bбрев] л.ш.

If л.ш. не входит в текущий список сокращений (см. Сокращать), это должно быть
ошибка. В противном случае удалите л.ш. из списка сокращений.

Текущий линия: Без изменений.

Текущий обзор: Без изменений.

расстегивать
конспект:
u[NDO]

Отменить изменения, внесенные последней командой, которая изменила содержимое редактирования
буфер, в том числе отменить. Для этого Глобальный, v, открытыйкачества визуальный команды и
команды, возникающие в результате выполнения буфера и расширения отображаемых символов, считаются
одиночные команды.

Если действие, которое можно отменить, не предшествовало отменить команда, это будет ошибка.

Если же линия индикатора отменить команда восстанавливает строки, которые были отмечены, отметка также должна быть восстановлена
если он не был сброшен после удаления строк.

Текущий линия:

1. Если в файл добавляются или изменяются строки, установите значение первой добавленной или измененной строки.

2. Установите строку перед удалением первой строки, если она существует.

3. Установите значение 1, если буфер редактирования не пуст.

4. Установить на ноль.

Текущий обзор: Установите не- .

Отменить отображение
конспект:
unm [ap][!] л.ш.

If '!' добавляется к имени команды, и если л.ш. не является записью в списке текста
определения карты режима ввода, это должно быть ошибкой. В противном случае удалите л.ш. из списка
определения карты режима ввода текста.

Если нет '!' добавляется к имени команды, и если л.ш. не входит в список
определения карты командного режима, это должно быть ошибкой. В противном случае удалите л.ш. из списка
определения карты командного режима.

Текущий линия: Без изменений.

Текущий обзор: Без изменений.

Версия
конспект:
ве [рсьон]

Напишите сообщение, содержащее информацию о версии для редактора. Формат сообщения
не указано.

Текущий линия: Без изменений.

Текущий обзор: Без изменений.

визуальный
конспект:
[1адрес] vi[Суал][напишите][считать][Флаги]

If ex в данный момент находится в открытом или визуальном режиме, Краткое описание и поведение визуальной команды
должен быть таким же, как отредактировать команда, как указано Редактировать.

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

If считать указано значение окно опция редактирования должна быть установлена ​​на считать (в виде
описанный в окно). Если '^' также был указан символ типа, окно отредактировать
опция должна быть установлена ​​перед использованием символом типа.

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

+ Поместите начало указанной строки вверху дисплея.

- Поместите конец указанной строки внизу дисплея.

. Поместите начало указанной строки в середину дисплея.

^ Если указанная строка меньше или равна значению окно вариант редактирования,
установите строку на 1; в противном случае уменьшите строку на значение окно отредактировать
вариант минус 1. Поместите начало этой строки как можно ближе к низу
отображаемых строк, насколько это возможно, при этом отображая значение окно отредактировать
вариант количества строк.

Текущий линия: Установить на указанную строку.

Текущий обзор: Установите не- .

Написать
конспект:
[2адрес] w[обряд][!][>>][файл]
[2адрес] w[обряд][!][файл]
[2адрес] wq[!][>>][файл]

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

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

Если после имени команды нет одного или нескольких персонажи, или файл Не
предшествует '!' характер, записывать должен быть в файл.

1. Если >> аргумент указан, а файл уже существует, строки должны быть
добавляется к файлу вместо замены его содержимого. Если >> аргумент
указано, а файл еще не существует, не указано, была ли запись
будет действовать так, как если бы >> аргумент не был указан, или если запись не удастся.

2. Если только для чтения установлена ​​опция редактирования (см. только для чтения) записывать потерпит неудачу.

3. Если файл указан, и не является текущим путем, и файл существует, записывать
потерпит неудачу.

4. Если файл не указан, будет использоваться текущий путь. Если нет тока
путь, записывать команда не будет выполнена.

5. Если используется текущий путь, а текущий путь был изменен файл
or читать команды, и файл существует, записывать потерпит неудачу. Если записывать is
успешный, последующий записыватьs не должен выходить из строя по этой причине (если текущая
путь снова изменен).

6. Если не записывается весь буфер редактирования, а записываемый файл существует,
записывать потерпит неудачу.

Для правил 1., 2., 3. и 5. записывать можно принудительно добавить, добавив символ '!' в
имя команды.

Для правил 2., 3. и 5. записывать можно принудительно установить, установив писать любой вариант редактирования.

Дополнительные тесты, определяемые реализацией, могут вызвать записывать потерпеть неудачу.

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

Информационное сообщение должно быть написано с указанием количества записанных строк и байтов.

В противном случае, если за командой следует один или несколько символов, и файл
предшествует '!', остальная часть строки после '!' должен иметь '%', '#'качества '!'
символы развернуты, как описано в Command линия анализ in ex.

Ассоциация ex затем утилита должна передать два аргумента программе, названной оболочка отредактировать
вариант; первый должен быть −с а вторым - развернутые аргументы в пользу записывать
команда как единственный аргумент. Указанные строки должны быть записаны на стандартный ввод
команды. Стандартная ошибка и стандартный вывод программы, если таковые имеются, должны быть
написано, как описано для Распечатать команда. Если последний символ в этом выводе не
, а пишется в конце вывода.

Особое значение '!' после записывать команда может быть отменена путем экранирования
это с персонаж.

Текущий линия: Без изменений.

Текущий обзор: Без изменений.

Написать и Выход
конспект:
[2адрес] x[it][!][файл]

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

В противном случае хи должен быть эквивалентен wq команда, или если '!' добавляется к
имя команды, чтобы ВК!.

Текущий линия: Без изменений.

Текущий обзор: Без изменений.

дергать
конспект:
[2адрес] ya[nk][буфер][считать]

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

Текущий линия: Без изменений.

Текущий обзор: Без изменений.

Регулировать Окно
конспект:
[1адрес] z[!][напишите ...][считать][Флаги]

Если строка не указана, по умолчанию будет использоваться текущая строка; если напишите опускается как
Что ж, текущее значение строки сначала должно быть увеличено на 1. При увеличении текущего значения
строка приведет к тому, что она будет больше, чем последняя строка в буфере редактирования, она должна быть
ошибка.

Если есть персонажи между напишите аргумент и предыдущий z имя команды
или дополнительный '!' характер, это будет ошибка.

If считать указано значение окно опция редактирования должна быть установлена ​​на считать (в виде
описанный в окно). если считать опущен, по умолчанию он должен быть в 2 раза больше значения
пролистать вариант редактирования, или если ! было указано, количество строк на дисплее минус 1.

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

Ассоциация напишите аргумент должен изменить строки, которые будут записаны. Возможные значения напишите являются
следующим образом:

- Указанная строка должна быть уменьшена на следующее значение:

(((количество of `` - '' персонажи) x считать) −1)

Если в результате вычислений будет получено число меньше 1, это будет ошибкой. Напишите
строки из буфера редактирования, начиная с нового значения строки, до считать линии или
последняя строка в буфере редактирования была записана.

+ Указанная строка должна быть увеличена на следующее значение:

(((количество of `` + '' персонажи) -1) x считать) +1

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

знак равно Если более одного '' or знак равно указано, это будет ошибка. Следующий
должны быть предприняты шаги:

1. Если считать равно нулю, ничего писать не надо.

2. Напишите как можно больше N строки перед текущей строкой в ​​буфере редактирования как
существовать. Если считать or '!' было указано, N должен быть:

(считать −1) / 2

В противном случае N должен быть:

(считать -3) /2

If N число меньше 3, строки не пишутся.

3. Если знак равно был указан как символ типа, напишите строку, состоящую из
меньшее из количества столбцов на дисплее, деленное на два, или 40 '-'
символы.

4. Напишите текущую строку.

5. Повторите шаг 3.

6. Напишите как можно больше N строки после текущей строки в буфере редактирования как существующие.
N определяется, как в шаге 2. Если N число меньше 3, строки не должны быть
написано. Если считать меньше 3, строки не пишутся.

^ Указанная строка должна быть уменьшена на следующее значение:

(((количество of `` ^ '' персонажи) + 1) x считать) −1

Если в результате вычислений будет получено число меньше 1, это будет ошибкой. Напишите
строки из буфера редактирования, начиная с нового значения строки, до считать линии или
последняя строка в буфере редактирования была записана.

Текущий линия: Установить на последнюю написанную строку, если тип не =, в этом случае установите
указанная строка.

Текущий обзор: Установите не- .

Побег
конспект:
! команду
[адр]! команду

Содержимое строки после '!' должен иметь '%', '#'качества '!' символы расширены
как описано в Command линия анализ in ex. Если раскрытие вызывает текст строки
для изменения он должен быть отображен повторно, перед ним должен стоять один '!' характер.

Ассоциация ex утилита должна выполнить программу, названную оболочка вариант редактирования. Пройдет два
аргументы к программе; первый должен быть −с, а второй будет расширенным
аргументы в ! команда как единственный аргумент.

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

Если строки указаны, они должны быть переданы программе как стандартный ввод, а
стандартный вывод и стандартная ошибка программы заменяют эти строки при редактировании
буфер. Каждая строка в выводе программы (разделенная персонажи или конец
вывода, если ему непосредственно не предшествует ), должна быть отдельной строкой
в буфере редактирования. Любые случаи а также пары на выходе
считается холостым символы. Указанные строки копируются в
безымянный буфер перед их заменой, а безымянный буфер должен стать строкой-
буфер режима.

Если в ex режим, одиночный '!' символ должен быть записан, когда программа завершится.

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

Текущий линия:

1. Если строки не указаны, без изменений.

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

3. В противном случае установите строку перед первой из указанных строк, если эта строка
существует.

4. В противном случае установите первую строку буфера редактирования, если буфер редактирования не пуст.

5. В противном случае установите на ноль.

Текущий обзор: Если строки не указаны, без изменений. В противном случае установите не- .

Shift левый
конспект:
[2адрес] <[<...][считать][Флаги]

Сдвинуть указанные строки в начало строки; количество позиций столбца, которое будет
сдвинуто должно быть количество командных символов, умноженное на значение ширина смены отредактировать
вариант. Только ведущий символы должны быть удалены или заменены на другие
символы в смещении; другие персонажи не будут затронуты.

Строки, подлежащие сдвигу, должны быть скопированы в безымянный буфер, который станет строкой-
буфер режима.

На эту команду влияет автопечать вариант редактирования.

Текущий линия: Установить на последнюю строку в указанных строках.

Текущий обзор: Установите не- .

Shift Правильно
конспект:
[2адрес] >[> ...][считать][Флаги]

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

Строки, подлежащие сдвигу, должны быть скопированы в безымянный буфер, который станет строкой-
буфер режима.

На эту команду влияет автопечать вариант редактирования.

Текущий линия: Установить на последнюю строку в указанных строках.

Текущий обзор: Установите не- .

-D
конспект:
-D

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

Текущий линия: Установить на последнюю написанную строку.

Текущий обзор: Установите не- .

Написать линия Номер регистрации
конспект:
[1адрес] = [Флаги]

If линия не указан, по умолчанию используется последняя строка в буфере редактирования. Написать
номер строки указанной строки.

Текущий линия: Без изменений.

Текущий обзор: Без изменений.

Выполнить
конспект:
[2адрес] @ буфер
[2адрес] * буфер

Если буфер не указан или указан как '@' or '*', последний выполненный буфер должен быть
использовал. Если предыдущий буфер не был выполнен, это будет ошибкой.

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

Если во время этого процесса возникает ошибка, или строка, указанная адресами, не
существует, когда текущая строка будет установлена ​​для него, или было указано более одной строки
адресами, а содержимое буфера редактирования заменяется (например, на ex
редактирование: команда) должно быть написано сообщение об ошибке, и больше никаких команд, возникающих в результате
выполнение этой команды должно быть обработано.

Текущий линия: Как указано для человека ex команды.

Текущий обзор: Как указано для человека ex команды.

Стандарт Expressions in ex
Ассоциация ex утилита должна поддерживать регулярные выражения, которые являются надмножеством основных регулярных выражений.
выражения, описанные в томе Базовых определений POSIX.1-2008, Раздел 9.3, Базовый
Стандарт Expressions. Нулевое регулярное выражение ("//") должен быть эквивалентен последнему
обнаружено регулярное выражение.

Регулярные выражения могут использоваться в адресах для указания строк, а в некоторых командах (для
Например, замена command), чтобы указать части строки, которые нужно заменить.

Следующие конструкции могут использоваться для улучшения основных регулярных выражений:

\ <Соответствует началу слово. (См. Определение слово В начале
Command Описание in ex.)

\> Сопоставьте конец слово.

~ Подберите заменяющую часть последнего замена команда. В ('~')
можно экранировать в регулярном выражении, чтобы он стал обычным символом с
особого смысла нет. В должны быть отброшены.

Когда опция редактора магия не установлен, только символы со специальным значением должны
be '^' в начале узора, '$' в конце узора и . В
символы '', '*', '['качества '~' должны рассматриваться как обычные символы, если не указано иное
по ; когда ему предшествует они вернут свое особое значение,
или в случае , обрабатываться как единый . символы
используемые для экранирования других символов должны быть отброшены.

Замена Струны in ex
Характер '&' ('\ &' если опция редактора магия не установлен) в заменяющей строке
будет означать текст, соответствующий заменяемому шаблону. Персонаж '~' ('\ ~' if
магия не установлен) заменяется на заменяющую часть предыдущего замена
команда. Последовательность '\ n', Где n является целым числом, заменяется совпадающим текстом
соответствующим выражением обратной ссылки. Если соответствующая обратная ссылка
выражение не совпадает, то символы '\ n' заменяется пустой строкой.

Струны '\ l', '\ u', '\ L'качества '\ U' может использоваться для изменения регистра элементов в
строка замены (с использованием '\ &' or "\"цифра) обозначение. Струна '\ l' ('\ u') должен
вызывает преобразование следующего символа в нижний (верхний) регистр. Струна '\ L'
('\ U') должен приводить к преобразованию всех следующих за ним символов в нижний регистр
(верхний регистр) по мере их вставки при подстановке до тех пор, пока строка '\ e' or '\ E', или
конец строки замены, встречается.

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

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

:p
Ассоциация кошка Сб on домен мат.
:s / \ <. at \> / \ u & / gp
Ассоциация Кошка Сб on домен Мат.
:s / S \ (. * \) M / S \ U \ 1 \ eM / p
Ассоциация Кошка Сб ON Мат.

Редактировать Опции in ex
Ассоциация ex У утилиты есть несколько параметров, которые изменяют ее поведение. Эти варианты имеют
настройки по умолчанию, которые можно изменить с помощью набор команда.

Параметры являются логическими, если не указано иное.

автоиндент ai
[Дефолт сброшен]

If автоиндент установлен, каждая строка в режиме ввода должна иметь отступ (используя сначала столько
как можно больше символов, как определено опцией редактора табуляция, а затем используя
символов), чтобы выровнять его с другой строкой, как показано ниже:

1. Если в открытом или визуальном режиме ввод текста является частью строчно-ориентированной команды (см.
РАСШИРЕННОЕ ОПИСАНИЕ в vi), выровняйте по первому столбцу.

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

а. Если строка была ранее вставлена ​​как часть этой команды, она должна быть установлена ​​в
отступ последней вставленной строки по умолчанию, или как иначе указано для
в Символ -D в вход режим Команды in vi.

б. В противном случае он должен быть установлен на отступ предыдущей текущей строки, если
любой; в противном случае - к первому столбцу.

3. Для ex a, iкачества c команд, отступ для каждой строки должен быть установлен следующим образом:

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

б. В противном случае, если команда ex a команда, она должна быть установлена ​​в строку
добавляется после, если есть; в противном случае - к первому столбцу.

c. В противном случае, если команда ex i команда, она должна быть установлена ​​в строку
вставлен раньше, если есть; в противном случае - к первому столбцу.

d. В противном случае, если команда ex c команда, она должна быть установлена ​​на отступ
строки заменены.

автопечать ap
[Дефолт набор]

If автопечать установлен, текущая строка должна быть записана после каждого ex команда, которая изменяет
содержимое текущего буфера редактирования, и после каждого день команда, для которой тег
найден шаблон поиска или номер строки тега действителен, если:

1. Команда была выполнена в открытом или визуальном режиме.

2. Команда была выполнена как часть Глобальный or v команды или @ буферное исполнение.

3. Команда была формой читать команда, которая считывает файл в буфер редактирования.

4. Команда была добавлять, изменениеили вставить команда.

5. Команда не была прервана .

6. Текущая строка должна быть записана флагом, указанным в команде; Например,
удалять # должен записать текущую строку, как указано для модификатора flag, в удалять
команда, а не как указано в автопечать вариант редактирования.

автозапись aw
[Дефолт сброшен]

If автозапись установлен, и буфер редактирования был изменен с момента его последнего полного
записано в любой файл, содержимое буфера редактирования должно быть записано так, как если бы ex записывать
команда была указана без аргументов перед каждой командой, на которую влияет
автозапись вариант редактирования выполняется. Добавление персонажа '!' к имени команды любого
ex команды кроме '!' предотвращает запись. Если запись не удалась, это должно быть
ошибка и команда не должна выполняться.

украсить bf
[Дефолт сброшен]

If украшать установлен, все непечатаемые символы, кроме , , а также
feed> должны быть исключены из текста, считываемого из файлов.

каталог директория
[Дефолт определяется реализацией]

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

Эдсовместимый, ed
[Дефолт сброшен]

Вызывает наличие g и c суффиксы в замещающих командах, которые нужно запомнить, и
переключается повторением суффиксов.

колокольчики eb
[Дефолт сброшен]

Если редактор находится в ex режим, и терминал не поддерживает режим ожидания (например,
обратное видео), и колокольчики установлен, сообщениям об ошибках должно предшествовать предупреждение
Терминал.

отл.
[Дефолт сброшен]

If отл. установлен, ex имеет доступ к любому .exrc файл в текущем каталоге, как описано в
Инициализация in ex и vi. Если отл. не установлен, ex игнорирует любые .exrc подать в
текущий каталог во время инициализации, если текущий каталог не тот, который назван
ГЛАВНАЯ переменная среды.

игнорировать регистр ic
[Дефолт сброшен]

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

Ассоциация игнорировать опция редактирования влияет на все запоминаемые регулярные выражения; Например,
расстраивая игнорировать вариант редактирования приведет к последующему vi n команда для поиска
последнее базовое регулярное выражение с учетом регистра.

список
[Дефолт сброшен]

If список установлен, отредактируйте строки буфера, записанные в ex командный режим должен быть записан как
указано для Распечатать команда с l указан флаг. В открытом или визуальном режиме каждый
строка буфера редактирования должна отображаться, как указано для ex Распечатать команда с l флажок
указано. В режиме открытого или визуального ввода текста, когда курсор не останавливается ни на каком
в строке, он должен лежать на '$' отмечая конец строки.

магия
[Дефолт набор]

If магия установлен, измените интерпретацию символов в регулярных выражениях и
строки замены замены (см. Стандарт Expressions in ex и Замена Струны in
ex).

MESG
[Дефолт набор]

If MESG установлен, разрешение на использование другими записывать or говорить команды для записи
терминал должен быть включен в открытом или визуальном режиме. Команда уровня оболочки MESG
n имеет приоритет над любой настройкой ex MESG вариант; то есть, если MESG y законопроект
выдается перед запуском редактора (или в escape-оболочке), например:

:! mesg y

домен MESG вариант в ex подавляет входящие сообщения, но MESG вариант не должен
включить входящие сообщения, если MESG n было выпущено.

номер, nu
[Дефолт сброшен]

If номер установлен, отредактируйте строки буфера, записанные в ex командный режим должен быть написан с
номера строк в формате, указанном Распечатать команда с # указан флаг. В
ex режим ввода текста, каждой строке должен предшествовать номер строки, который она будет иметь в
.

В открытом или визуальном режиме каждая строка буфера редактирования должна отображаться с предыдущей строкой.
число в формате, указанном ex Распечатать команда с # указан флаг. Этот
номер строки не должен рассматриваться как часть строки для целей оценки
текущий столбец; то есть позиция столбца 1 должна быть первой позицией столбца после
формат определяется Распечатать команда.

абзацы, для
[По умолчанию в локали POSIX IPLPPPQPP LIpplpipbp]

Ассоциация пункты опция редактирования определяет дополнительные границы абзаца для открытого и
команды визуального режима. В пункты опция редактирования может быть установлена ​​в строку символов
состоящий из нуля или более пар символов. Было бы ошибкой установить его на нечетное
количество символов.

подсказка
[Дефолт набор]

If подсказка установлен, ex ввод командного режима должен быть запрошен с помощью (':'); когда
не установлено, подсказки не должны быть написаны.

только для чтения
[Дефолт посмотреть текст]

Если же линия индикатора только для чтения установлена ​​опция редактирования, должен быть включен режим только для чтения (см. Написать).
только для чтения опция редактирования должна быть инициализирована для установки, если выполняется одно из следующих условий:
правда:

* Указана опция командной строки -R.

* Выполнение действий, эквивалентных доступ() вызывается со следующей
Аргументы указывают на то, что у файла нет разрешения на запись:

1. Текущее имя пути используется в качестве путь аргумент.

2. Постоянная В_ОК используется в качестве мод аргумент.

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

перерисовать
[Дефолт сброшен]

Редактор имитирует интеллектуальный терминал на простом терминале. (Поскольку это, скорее всего,
требуют большого количества вывода на терминал, это полезно только при высокой передаче
скорости.)

переназначить
[Дефолт набор]

If переназначить установлен, перевод карт должен учитывать карты, определенные в терминах других карт;
перевод будет продолжаться до тех пор, пока не будет получен конечный продукт. Если не установлено, только одношаговое
перевод должен быть сделан.

отчету
[По умолчанию 5]

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

* An ex or vi команда редактора, кроме открытый, отменитьили визуальный, который изменяет как минимум
ценность отчету вариант редактирования количества строк, который не является частью ex
Глобальный or v команда, или ex or vi выполнение буфера, вызовет информационный
сообщение будет написано.

* An ex дергать or vi y or Y команда, которая копирует по крайней мере значение отчету отредактировать
вариант плюс 1 количество строк, и который не является частью ex Глобальный or v команда, или
ex or vi выполнение буфера, должно вызвать запись информационного сообщения.

* An ex Глобальный, v, открытый, отменитьили визуальный команды или ex or vi выполнение буфера, что добавляет
или удаляет в сумме не менее значения отчету редактировать вариант количества строк,
и который не является частью ex Глобальный or v команда, или ex or vi выполнение буфера,
вызывает написание информационного сообщения. (Например, если 3 строки были
добавлено и удалено 8 строк во время ex визуальный команда, 5 будет сравниваемым числом
против отчету параметр редактирования после завершения команды.)

прокрутки, SCR
[По умолчанию (количество строк на дисплее -1) / 2]

Значение пролистать опция редактирования определяет количество строк, прокручиваемых ex
-D и z команды. Для vi -D и -U команды, это должно быть
начальное количество строк для прокрутки, когда нет предыдущего -D или ‐U команда
был выполнен

разделах
[По умолчанию в региональном стандарте POSIX NHSHH HUnhsh]

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

ракушка, sh
[По умолчанию из переменной среды SHELL]

Значение этой опции должно быть строкой. Значение по умолчанию берется из SHELL
переменная окружения. Если SHELL переменная среды пуста или пуста, sh (См. sh)
утилита должна быть по умолчанию.

ширина смены sw
[По умолчанию 8]

Значение этой опции должно указывать ширину в столбцах используемого уровня отступа.
во время автоиндентирования и командами сдвига (< и >).

шоуматч sm
[Дефолт сброшен]

Функциональность, описанная для матч опция редактирования не должна поддерживаться в блоке -
режимные терминалы или терминалы с недостаточными возможностями.

If матч установлен в открытом или визуальном режиме, когда ')' or '}' набирается, если соответствие
'(' or '{' в настоящее время отображается на дисплее, соответствующий '(' or '{' должен быть отмечен
перемещение курсора в нужное место на неопределенное время.

режим шоу
[Дефолт сброшен]

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

медленно открывать
[Дефолт сброшен]

If медленно открывать устанавливается при открытом и визуальном режимах ввода текста, редактор не обновляется
части дисплея, отличные от тех столбцов строк дисплея, которые отображают символы
введен пользователем (см. вход режим Команды in vi).

табуляция ts
[По умолчанию 8]

Значение этой опции редактирования должно указывать границу столбца, используемую в
дисплей (см. автопечать, ap и вход режим Команды in vi).

длина тега, tl
[По умолчанию ноль]

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

имеют теги
[Дефолт посмотреть текст]

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

срок
[По умолчанию из переменной среды СРОК]

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

Результаты не указаны, если пользователь изменяет значение параметра редактирования термина после
Инициализация редактора.

кратко
[Дефолт сброшен]

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

предупреждать
[Дефолт набор]

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

окно
[Дефолт посмотреть текст]

Значение, используемое в открытом и визуальном режимах -Группа -F команды, а в
визуальный режим, чтобы указать количество строк, отображаемых при перекрашивании экрана.

Если же линия индикатора -w опция командной строки не указана, значение по умолчанию должно быть установлено на
значение ЛИНИИ переменная окружения. Если ЛИНИИ переменная среды пуста или
null, по умолчанию должно быть количество строк на дисплее минус 1.

Настройка окно изменить параметр на ноль или на значение больше, чем количество строк в
отображение минус 1 (либо явно, либо на основе -w или ЛИНИИ охрана окружающей среды
переменная) вызывает окно параметр редактирования, чтобы установить количество строк в
дисплей минус 1.

Скорость передачи терминальной линии может изменить значение по умолчанию в зависимости от реализации.
манера.

обертка, wm
[По умолчанию 0]

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

Если не в локали POSIX, действие этой опции редактирования определяется реализацией.

В противном случае он должен указать количество столбцов от конечного поля терминала.

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

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

2. В противном случае, если есть один или несколько символы в текущей строке сразу
перед последней группой вставленных не- символов, которые были введены во время
выполнение текущей команды ввода текста, персонажи должны быть
заменены, как если бы пользователь ввел один вместо.

Если же линия индикатора автоиндент устанавливается опция редактирования, и выполняются события, описанные в 1. или 2.,
любой символы в текущей строке или после курсора должны быть отброшены.

Конечная маржа должна определяться системой или отменяться пользователем, как
описан для КОЛОННЫ в разделе ПЕРЕМЕННЫЕ ОКРУЖАЮЩЕЙ СРЕДЫ и в томе "Базовые определения"
POSIX.1-2008, Глава 8, Окружающая среда Переменные.

обертка ws
[Дефолт набор]

If обертка установлен, поиск ( ex / or ? адреса или открытый и визуальный режим /, ?, N,
и n commands) должны быть заключены в начало или конец буфера редактирования; когда не установлен,
поиск должен останавливаться в начале или конце буфера редактирования.

написать любой, wa
[Дефолт сброшен]

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

ВЫХОД статус


Должны быть возвращены следующие значения выхода:

0 Успешное завершение.

> 0 Произошла ошибка.

ПОСЛЕДСТВИЯ OF ОШИБКИ


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

В противном случае, когда обнаруживается неисправимая ошибка, она должна быть эквивалентна SIGHUP.
асинхронное событие.

В противном случае при обнаружении ошибки редактор должен вести себя, как указано в Command
линия анализ in ex.

Ассоциация после разделах Он информативный.

ЗАЯВЛЕНИЕ ИСПОЛЬЗОВАНИЕ


Если сигнал SIGSEGV получен во время ex сохраняет файл, возможно, файл не
успешно сохранен.

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

следующий `лс [abc] * `

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

ПРИМЕРЫ


Нет.

ОБОСНОВАНИЕ


Ассоциация ex/vi спецификация основана на исторической практике BSD 4 и System
V реализации ex и vi.

A ограниченный редактор (как исторические red утилита и модификации ex) мы
рассмотрены и отклонены для включения. Ни один из вариантов не обеспечивал такой уровень безопасности.
пользователи могли ожидать.

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

Опции
Ассоциация −с замена для +команду был вдохновлен -e возможность СЕПГ. Исторически все
такие команды (см. отредактировать и следующий также) были выполнены с последней строки редактирования
буфер. Это означало, например, что "+ / узор" потерпит неудачу, если обертка вариант
был установлен. POSIX.1-2008 требует соответствия исторической практике. В +команду опция
больше не указывается в POSIX.1-2008, но может присутствовать в некоторых реализациях.
Исторически некоторые реализации ограничивали ex команды, которые могут быть указаны как часть
аргументов командной строки. Для согласованности POSIX.1-2008 не разрешает эти
ограничения.

В исторических реализациях редактора −R вариант (и только для чтения вариант редактирования)
только предотвратила перезапись файлов; добавление к файлам все еще разрешено, отображение
свободно в CSH никчемный Переменная. Однако некоторые реализации не последовали
эта семантика, и только для чтения также не позволяет добавлять. POSIX.1-2008 следует за
последняя практика, полагая, что это более очевидное и интуитивное значение только для чтения.

Ассоциация −с опция подавляет все интерактивные отзывы пользователей и полезна для редактирования скриптов
в пакетных работах. Список конкретных эффектов - это историческая практика. Тип терминала
`` неспособный поддерживать открытые и визуальные режимы '' исторически назывался `` тупым ''.

Ассоциация вариант был необходим, потому что Ctags утилита появляется в POSIX.1-2008, а
опция доступна во всех исторических реализациях ex.

Исторически сложилось так, ex и vi коммунальные предприятия приняли -x вариант, который делал шифрование на основе
алгоритм, найденный в историческом крипта утилита. В -x вариант для шифрования, и
связанный крипта утилита, были опущены, потому что используемый алгоритм не мог быть определен и
законы об экспортном контроле некоторых стран затрудняют экспорт криптографических
технология. Кроме того, он исторически не обеспечивал тот уровень безопасности, который пользователи
можно было ожидать.

Стандарт вход
Условие конца файла не эквивалентно символу конца файла. Обычный конец-
символ файла, -D, исторически ex команда.

В исторических реализациях ex. В частности, как это
был проанализирован по частям, адреса имели другую максимальную длину, чем имена файлов.
Далее максимальный размер строчного буфера был объявлен как BUFSIZ, который был разной длины.
в разных системах. В этой версии выбрано значение {LINE_MAX}, чтобы ввести разумный
ограничение на переносное использование ex и помочь разработчикам наборов тестов в разработке
реалистичные тесты, которые используют этот предел.

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

Абзац в разделе ВХОДНЫЕ ФАЙЛЫ, `` По умолчанию ... '', предназначен для закрытия
давняя проблема безопасности в ex и vi; что из `` моделин '' или `` моделин ''
вариант редактирования. Эта функция позволяет использовать любую строку в первых или последних пяти строках файла.
содержащий строки "бывший:" or "vi:" (и, по-видимому, "ei:" or "vx:") быть линией
содержащие команды редактора, и ex интерпретирует весь текст до следующего ':' или
как команду. Подумайте о последствиях, например, если ничего не подозревающий пользователь использует ex or
vi в качестве редактора при ответе на почтовое сообщение, в котором есть такая строка, как:

бывший:! rm −рф :

появилось в строках подписи. Разработчики стандарта твердо верили, что редактор
по умолчанию не должен интерпретировать какие-либо строки файла. Продавцам настоятельно рекомендуется удалить
эта функция из их реализаций ex и vi.

Асинхронный Мероприятия
Смысл фразы `` полная запись '' состоит в том, чтобы записать весь буфер редактирования.
в стабильное хранилище. Примечание относительно временных файлов предназначено для реализаций, которые
использовать временные файлы для резервного копирования буферов редактирования, не названных пользователем.

Исторически SIGQUIT игнорировался ex, но был эквивалентом Q команда в визуальном
Режим; то есть он вышел из визуального режима и вошел ex режим. POSIX.1-2008 разрешает, но делает
не требовать, это поведение. Исторически SIGINT часто использовался vi пользователей прекратить
режим ввода текста ( -C часто легче войти, чем ). Некоторые реализации
of vi предупредил терминал об этом событии, а некоторые нет. POSIX.1-2008 требует, чтобы
SIGINT ведет себя идентично , и что терминал не будет предупрежден.

Исторически сложилось так, что приостановка ex редактор в режиме ввода текста был похож на SIGINT, т.к.
завершенные строки были сохранены, но все частичные строки были отброшены, и редактор вернулся к
командный режим. POSIX.1-2008 ничего не говорит по этому поводу; реализации рекомендуется
по возможности следуйте исторической практике.

Исторически сложилось так, vi редактор не рассматривал SIGTSTP как асинхронное событие, и это было
поэтому невозможно приостановить редактор в режиме визуального ввода текста. Есть два основных
причины для этого. Во-первых, SIGTSTP - это широковещательный сигнал в системах UNIX, а
цепочка событий, где оболочка Execэто приложение, которое затем Execs vi обычно вызывает
путаница для состояния терминала, если SIGTSTP был доставлен группе процессов в
по умолчанию. Во-вторых, большинство реализаций UNIX проклятиями пакет сделал
не обрабатывать SIGTSTP безопасно, и получение SIGTSTP в неподходящее время может вызвать их
разбиться. POSIX.1-2008 ничего не говорит по этому поводу; реализации рекомендуется лечить
приостановка как асинхронное событие, если это возможно.

Исторически изменения в буфере редактирования, сделанные до того, как SIGINT прервали операцию
были сохранены; то есть где угодно от нуля до всех изменяемых строк могут иметь
были изменены к моменту получения SIGINT. Эти изменения не были отменены
прибытие SIGINT. POSIX.1-2008 допускает такое поведение, отмечая, что отменить команда
требуется для отмены этих частично выполненных команд.

Действия, предпринимаемые для сигналов, отличных от SIGINT, SIGCONT, SIGHUP и SIGTERM,
не указано, потому что некоторые реализации пытаются сохранить буфер редактирования в полезном состоянии
при получении других сигналов.

Стандарт Ошибка
Что касается ex/vi, диагностические сообщения - это сообщения, полученные в результате неудачной попытки
вызывать ex or vi, например недопустимые параметры или недостаточные ресурсы, или ненормальный
условие прекращения. Диагностические сообщения не следует путать с сообщениями об ошибках.
генерируется несоответствующими или незаконными командами пользователя.

Инициализация in ex и vi
Если ex команда (кроме cd, ChDirили источник) имеет аргумент имени файла, один или оба из
будут установлены альтернативный и текущий пути. Неформально они установлены следующим образом:

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

2. В случае файловых форм чтения / записи читать и записывать команды, если есть
нет текущего пути, текущий путь будет установлен в качестве аргумента имени файла.

3. В противном случае альтернативный путь будет установлен в качестве аргумента имени файла.

Например, редактирование: Foo и :восстанавливаться Foo, в случае успеха установите текущий путь и,
если существовал предыдущий текущий путь, альтернативный путь. Команды :записывать,
! командакачества редактирование: не устанавливать ни текущий, ни альтернативный путь. Если редактирование: Foo
Если команда по какой-то причине завершилась ошибкой, будет задан альтернативный путь. В читать и
записывать команды устанавливают альтернативный путь к своим файл аргумент, если текущий
имя пути не задано, и в этом случае они устанавливают текущее имя пути на свой файл аргументы.
Альтернативный путь исторически не устанавливался :источник команда. POSIX.1-2008
требует соответствия исторической практике. Реализации, добавляющие команды, которые принимают
Для имен файлов в качестве аргументов рекомендуется установить альтернативный путь, как описано здесь.

Исторически сложилось так, ex и vi читать .exrc подать в $ HOME каталог дважды, если редактор
был казнен в $ HOME каталог. POSIX.1-2008 запрещает такое поведение.

Исторически сложилось так, что 4 BSD ex и vi читать $ HOME и местный .exrc файлы, если они принадлежали
по реальному идентификатору пользователя или источник опция была выставлена, независимо от других
соображения. Это была проблема безопасности, потому что можно было поставить обычный UNIX
системные команды внутри .exrc файл. POSIX.1-2008 не определяет источник вариант,
и историческим реализациям рекомендуется удалить его.

Ассоциация .exrc файлы должны принадлежать настоящему идентификатору пользователя и не должны быть доступны для записи кем-либо другим.
чем владелец. Соответствующее исключение привилегий предназначено для того, чтобы разрешить пользователям
получить особые привилегии, но продолжать пользоваться .exrc файлы в своих домашних каталогах.

System V Release 3.2 и новее vi реализации добавили опцию [нет] exrc. Поведение
это местный .exrc файлы доступны только для чтения, если отл. опция установлена. По умолчанию для
отл. опция была отключена, поэтому по умолчанию локальный .exrc файлы не читались. Проблема была в
было решено, что System V разрешает пользователям раздавать файлы, поэтому нет
проверка возможного владения или возможности записи, чтобы убедиться, что файл безопасен. Это все еще
проблема безопасности в системах, где пользователи могут отдавать файлы, но нет ничего
дополнительно, что может делать POSIX.1-2008. Исключение, определяемое реализацией, предназначено для
разрешить группам иметь местные .exrc файлы, которые совместно используются пользователями, путем создания псевдопользователей
владеть общими файлами.

POSIX.1-2008 не упоминает общесистемные ex и vi файлы запуска. Пока они существуют в
несколько реализаций ex и vi, их нет ни в одной реализации
считается исторической практикой согласно POSIX.1-2008. Реализации, у которых есть такие файлы
следует использовать их только в том случае, если они принадлежат реальному идентификатору пользователя или соответствующему пользователю (для
например, root в системах UNIX), и если они не доступны для записи другим пользователям, кроме их
владелец. Общесистемные файлы запуска должны быть прочитаны до ВЫХОД Переменная, $ HOME / .exrc,
или местный .exrc файлы оцениваются.

Исторически сложилось так, что любое ex команду можно ввести в ВЫХОД переменная или .exrc файл,
хотя те, которые требуют, чтобы буфер редактирования уже содержал строки текста, обычно
вызвали падение исторических реализаций редактора ядро. POSIX.1-2008 требует, чтобы
любой ex команда будет разрешена в ВЫХОД переменная и .exrc файлы, для простоты
спецификации и согласованности, хотя многие из них, очевидно, потерпят неудачу при многих
обстоятельствах.

Инициализация содержимого буфера редактирования использует фразу `` эффект должен
быть '' в отношении различных ex команды. Смысл этой фразы в том, что буфер редактирования
содержимое, загруженное на этапе инициализации, не теряется; то есть загрузка редактирования
буфер должен выйти из строя, если .exrc файл прочитал в содержимом файла и не
впоследствии напишите буфер редактирования. Дополнительная цель этой фразы - указать, что
начальная текущая строка и столбец устанавливаются, как указано для человека ex команды.

Исторически сложилось так, опция вела себя так, как если бы поиск по тегу был +команду; то есть это было
выполняется из последней строки файла, указанного тегом. Это привело к поиску
не удалось, если шаблон был шаблоном прямого поиска и обертка вариант редактирования не было
набор. POSIX.1-2008 не допускает такого поведения, требуя, чтобы поиск тега
шаблон будет выполняться для всего файла, и, если он не найден, должна быть установлена ​​текущая строка
в более подходящее место в файле.

Исторически пустой буфер редактирования представлялся для редактирования, когда файл не был указан
имя пользователя не указано. Это разрешено POSIX.1-2008; однако реализации
рекомендуется предоставить пользователям временное имя файла для этого буфера, потому что это позволяет им
использование ex команды, которые используют текущий путь во время сеансов временного редактирования.

Исторически файл, указанный с помощью опция не была частью текущего аргумента
список. Такая практика разрешена POSIX.1-2008; однако приветствуются реализации
чтобы включить его имя в текущий список аргументов для единообразия.

Исторически сложилось так, −с команда обычно не выполнялась до тех пор, пока файл, который уже существует
был отредактирован. POSIX.1-2008 требует соблюдения этой исторической практики. Команды, которые
может вызвать −с команда, которая должна быть выполнена, включает ex команды отредактировать , следующий, оправляться,
перемоткакачества день, и vi команды - ^ и -]. Исторически сложилось так, что чтение
файл в буфер редактирования не вызвали −с команда для выполнения (даже если она может
установить текущий путь) за исключением того, что это вызвало −с приказ быть
выполняется, если: редактор был в ex режим, буфер редактирования не имел текущего пути, редактирование
буфер был пуст, и никакие команды чтения еще не выполнялись. Для единообразия и
Простота спецификации, POSIX.1-2008 не допускает такого поведения.

Исторически сложилось так, -r вариант был таким же, как и в обычном сеансе редактирования, если не было восстановления
информация, доступная для файла. Это позволило пользователям вводить:

vi -r * .c

и восстановить все файлы, которые можно было восстановить. В некоторых реализациях восстановление было
попытка предпринята только для первого указанного файла, и файл не был введен в аргумент
список; в других случаях была предпринята попытка восстановления для каждого файла с именем. Кроме того, некоторые исторические
реализации игнорируются -r if был указан или не поддерживал командную строку файл
аргументы с вариант. Для единообразия и простоты спецификации,
POSIX.1-2008 запрещает эти особые случаи и требует попытки восстановления
первый раз редактируется каждый файл.

Исторически сложилось так, vi инициализировал ` и ' марки, но ex не. Это означало, что если
первая команда в ex режим был визуальный или если ex команда была выполнена первой (например,
vi +10 файл), vi был введен без инициализации меток. Поскольку стандарт
разработчики считали, что знаки полезны, а также для единообразия и простоты
спецификации, POSIX.1-2008 требует, чтобы они всегда инициализировались, если они открыты или
визуальный режим, или если в ex режим и буфер редактирования не пуст. Не инициализировать его в ex
режим при пустом буфере редактирования - историческая практика; однако это всегда было
возможность установки (и использования) меток в пустых буферах редактирования в открытом и визуальном режиме редактирования
сессий.

адресация
Исторически сложилось так, ex и vi принял дополнительные формы адресации '\ /' и '\?'. Они были
что эквивалентно "//" и "??", соответственно. Они не требуются POSIX.1-2008, в основном
потому что никто не может вспомнить, делали ли они когда-нибудь исторически что-нибудь другое.

Исторически сложилось так, ex и vi разрешил нулевой адрес для нескольких команд и разрешил
домен % обращайтесь в пустые файлы для остальных. Для согласованности POSIX.1-2008 требует поддержки
для первого в нескольких командах, где это имеет смысл, и запрещает его в противном случае. В
кроме того, поскольку POSIX.1-2008 требует, чтобы % быть логически эквивалентным «1, $», это
также поддерживается там, где это имеет смысл, и запрещается в противном случае.

Исторически сложилось так, % За адресом нельзя было следовать дальнейшие адреса. Для единообразия
и простота спецификации, POSIX.1-2008 требует, чтобы дополнительные адреса были
поддерживается.

Все следующие действительны адреса:

+++ Три строки после текущей строки.

/re/ - Одна строка до следующего появления re.

−2 Две строки до текущей строки.

3 −−−− 2 Первая строка (обратите внимание на промежуточный отрицательный адрес).

1 2 3 Шестая строка.

Любое количество адресов может быть предоставлено командам, принимающим адреса; Например,
«1,2,3,4,5p» печатает строки 4 и 5, потому что два - это наибольшее допустимое количество адресов
приняты Распечатать команда. Это в сочетании с разделитель
позволяет пользователям создавать команды на основе упорядоченных шаблонов в файле. Например,
команду 3; / foo /; + 2print отобразит первую строку после строки 3, которая содержит шаблон
Foo, плюс следующие две строки. Обратите внимание, что адрес 3; должны быть оценены, прежде чем быть
отброшено, потому что источник поиска для / foo / команда зависит от этого.

Исторически сложилось так, что значения могли быть добавлены к адресам, включив их после одного или нескольких
символы; Например, 3 - 5p написал седьмую строку файла и / foo / 5
был такой же как / foo / + 5. Однако можно было добавить только абсолютные значения; Например,
5 / foo / была ошибка. POSIX.1-2008 требует соответствия исторической практике. Адрес
смещения указываются отдельно от адресов, потому что исторически они могли быть
предоставляется командам поиска в визуальном режиме.

Исторически сложилось так, что любые отсутствующие адреса по умолчанию относились к текущей строке. Это было верно для
ведущие и конечные -ограниченные адреса, и для трейлинга -ограниченный
адреса. Для согласованности POSIX.1-2008 требует, чтобы он обращается как
Что ж.

Исторически сложилось так, ex и vi принял '^' символ как адрес и как смещение флага
для команд. В обоих случаях он был идентичен '-' персонаж. POSIX.1-2008 не
требовать или запрещать такое поведение.

Исторически сложилось так, что при адресации можно было использовать усовершенствования основных регулярных выражений;
Например, '~', '\ <'качества '\>'. POSIX.1-2008 требует соответствия историческим
упражняться; то есть, чтобы использование регулярных выражений было согласованным, а регулярные
улучшения выражений будут поддерживаться везде, где используются регулярные выражения.

Command линия анализ in ex
Исторические ex синтаксический анализ команд был даже более сложным, чем описанный здесь. POSIX.1-2008
требует подмножества синтаксического анализа команды, которое, по мнению разработчиков стандарта, было
документированы, и можно разумно ожидать, что пользователи будут использовать их в портативном виде, и
это исторически согласовывалось между реализациями. (Отброшенная функциональность
в лучшем случае неясные.) Исторические реализации потребуют изменений, чтобы соответствовать
с POSIX.1-2008; однако ожидается, что пользователи не заметят никаких из этих изменений. Большинство
сложности в ex синтаксический анализ предназначен для обработки трех особых случаев завершения:

1. !, Глобальный, v, и версии фильтра читать и записывать команды разделены
от символы (они могут содержать персонажи, которые обычно
оболочки труб).

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

3. s команда принимает регулярное выражение в качестве первого аргумента и использует
символы-разделители для разделения команды.

Исторически, персонажи в +команду аргумент ex, отредактировать , следующий,
viкачества визуальный команд, а в описания и замена части s команда, сделал
не разграничивать команду, а в случаях фильтрации для читать и записывать, и !, Глобальный,
и v команды, они вообще не разделяли команду. Например, следующие
все команды действительны:

:редактировать +25 | s / abc / ABC / file.c
:с / | /ТРУБКА/
:читать! заклинание% | столбчатый
:global / pattern / p | л
:с / а / б / | с / ц / д | набор

Исторически пусто или заполненные строки в .exrc файлы и источникd файлы (а также
ВЫХОД переменные и ex командные сценарии) обрабатывались как команды по умолчанию; это, Распечатать
команды. POSIX.1-2008 специально требует, чтобы они игнорировались при обнаружении в
.exrc и источникd, чтобы устранить распространенный источник ошибок новых пользователей.

Исторически сложилось так, ex команды с несколькими соседними (или -разделенные) вертикальные линии
обрабатывались странно, когда выполнялись из ex режим. Например, команда ||| <карета-
return>, когда курсор был на строке 1, отображал строки 2, 3 и 5 файла. В
Кроме того, команда | будет отображать только строку после следующей строки вместо
следующие две строки. Первый работал более логично, когда выполнялся из vi режим и отображается
строки 2, 3 и 4. POSIX.1-2008 требует vi поведение; то есть одно значение по умолчанию
приращение номера команды и строки для каждого разделителя команд и завершение
символы после разделители отбрасываются.

Исторически сложилось так, ex разрешено одно дополнительное как ведущий командирский персонаж; за
пример, : g / узор /: p была действительной командой. POSIX.1-2008 обобщает это требование, чтобы
любое количество ведущих персонажи будут удалены.

Исторически сложилось так, что любая приставка удалять команда могла выполняться без вмешательства
символы символом флага, потому что в команде d p, p интерпретируется как
буфер p. POSIX.1-2008 требует соответствия исторической практике.

Исторически сложилось так, k за командой может следовать имя метки без вмешательства
символы. POSIX.1-2008 требует соответствия исторической практике.

Исторически сложилось так, s сразу за командой могут следовать символы флага и опции;
Например, s / e / E / | s | sgc3p была действительной командой. Однако герои флага терпеть не могли
в одиночестве; например, команды sp и s l потерпит неудачу, а команда SGP и s gl
получится. (Очевидно, что '#' символ флага использовался в качестве символа-разделителя, если он
после команды.) Другая проблема заключалась в том, что символы параметров должны были предшествовать флагу
символы, даже если команда была полностью указана; например, команда s / e / E / pg
потерпит неудачу, а команда s / e / E / gp получится. POSIX.1-2008 требует соответствия
историческая практика.

Исторически сложилось так, что первое имя команды с префиксом, совпадающим с вводом пользователя
была исполненная команда; Например, ve, версиякачества исп все выполнили версия команда.
Однако команды располагались в определенном порядке, так что a соответствует добавлять, Не сокращать.
POSIX.1-2008 требует соответствия исторической практике. Ограничение на команду
порядок поиска реализаций с расширениями - избегать добавления таких команд
что исторические префиксы не будут работать переносимо.

Исторические реализации ex и vi неправильно обрабатывал несколько ex команды,
разделены по символы, которые вошли или вышли из визуального режима или редактора.
Поскольку реализации vi существуют, которые не демонстрируют этот режим отказа, POSIX.1-2008
не позволяет этого.

Требование, чтобы буквенные названия команд состояли из всех следующих буквенных обозначений.
символы до следующего неалфавитного символа означает, что буквенные имена команд
должны быть отделены от своих аргументов одним или несколькими неалфавитными символами, обычно
а или '!' символ, за исключением случаев, указанных для исключений, удалять, kкачества s
команды.

Исторически сложилось так, что повторное выполнение ex по умолчанию Распечатать команды ( -D, ВФ,
, ) удалил все подсказки и отобразил следующие строки
без прокрутки терминала; то есть непосредственно под любыми ранее отображенными строками.
Это обеспечило более четкое представление строк в файле для пользователя. POSIX.1-2008
не требует такого поведения, потому что в некоторых ситуациях это может быть невозможно; тем не мение,
настоятельно рекомендуется предоставлять эту семантику, если это возможно.

Раньше можно было изменять файлы в середине команды и иметь
остальная часть команды выполняется в новом файле; Например:

редактирование: +25 файл.с | s / abc / ABC / | 1

была допустимой командой, и была предпринята попытка подстановки во вновь отредактированном файле.
POSIX.1-2008 требует соответствия исторической практике. Следующие команды
примеры, которые упражняют ex парсер:

эхо 'фу | бар' > файл1; эхо 'foo / bar' > файл2;
vi
редактирование: +1 | s / | / ТРУБА / | w file1 | e file2 | 1 | s / \ // слэш / | wq

Исторически сложилось так, что в реализациях редактора не было защиты, чтобы избежать ex Глобальный, v, @,
or * команды, изменяющие буферы редактирования во время выполнения связанных с ними команд. Так как
это почти всегда приводило к катастрофическому отказу редактора, и
существуют реализации, которые действительно демонстрируют эти проблемы, POSIX.1-2008 требует изменения
буфер редактирования во время Глобальный or v команды, или во время @ or * команда, для которой есть
будет более одного выполнения, будет ошибка. Реализации, поддерживающие несколько
Одновременное редактирование буферов настоятельно рекомендуется применять ту же семантику к
переключение между буферами также.

Ассоциация ex цитирование команд, требуемое POSIX.1-2008, является надмножеством цитирования в исторических
реализации редактора. Например, исторически невозможно было избежать
в имени файла; Например, редактирование: foo \\\ бар сообщит, что слишком много имен файлов
был введен для команды редактирования, и не было способа избежать в
первый аргумент отредактировать , ex, следующийили визуальный команда вообще. POSIX.1-2008 расширяет
историческая практика, требующая, чтобы поведение цитирования было единообразным во всех ex
команды, кроме карта, отменить отображение, сокращатькачества несокращенный команды, которые
исторически использованный -V вместо символы для цитирования. Для тех
четыре команды, POSIX.1-2008 требует соответствия исторической практике.

Цитирование с обратной косой чертой в ex не интуитивно понятен. -эскейпы игнорируются, если они
экранировать специальный символ; например, при выполнении файл расширение аргумента,
string "\\%" эквивалентна '\%', нет "\текущий пути> ". Это может сбивать с толку
пользователи, потому что обычно является одним из символов, вызывающих расширение оболочки до
должны быть выполнены, и поэтому правила цитирования оболочки должны быть приняты во внимание.
Как правило, символы в кавычках учитываются только в том случае, если они экранируют специальный символ, и
символ цитирования должен быть предоставлен для каждого уровня синтаксического анализа, для которого этот символ
специальный. Другой пример: только один необходимо для '\ l' последовательность
в замещающих шаблонах замены, потому что символ 'l' не является особенным ни для одного
слой парсинга над ним.

-V цитирование в ex немного отличается от цитирования с обратной косой чертой. В четырех
команды, где -V применяется цитата (сокращать, несокращенный, картакачества отменить отображение), любой
персонаж может быть экранирован -V, будет ли это иметь особое значение или нет.
POSIX.1-2008 требует соответствия исторической практике.

Исторические реализации редактора не требовали разделителей внутри символа.
классы, которые нужно экранировать; например, команда : s / [/] // на струне «ххх / ггг» бы
удалите '/' из строки. POSIX.1-2008 запрещает эту историческую практику для
согласованность и потому, что это возлагает большую нагрузку на реализацию, требуя, чтобы
знание регулярных выражений должно быть встроено в парсер редактора.

Исторически, цитируя персонажи в ex команды обрабатывались непоследовательно. В
в большинстве случаев символ всегда завершал команду, независимо от
предшествующий escape-символ, потому что персонажи не сбежали
персонажи для большинства ex команды. Однако некоторые ex команды (например, s, картакачества
Сокращенное название) разрешенный символов, которые нужно экранировать (хотя в случае карта
и Сокращенное название, -V символы экранировали их вместо символы).
Это было верно не только для командной строки, но и для .exrc и источникd файлы. Например,
команда:

карта = фу бар

удалось бы, хотя иногда было трудно получить -V и вставленный
перешел в ex парсер. Для единообразия и простоты спецификации,
POSIX.1-2008 требует, чтобы была возможность избежать персонажи в ex команды в
все время, используя персонажи для большинства ex команды и использование -V
персонажи для карта и Сокращенное название команды. Например, команда
Распечататьсписок требуется анализировать как одну команду Распечататьсписок.
Хотя это отличается от исторической практики, разработчики POSIX.1-2008 считали маловероятным
что любой скрипт или пользователь зависят от исторического поведения.

Исторически ошибка в команде, указанной с помощью −с вариант не повлек за собой остальных
−с команды, которые следует отбросить. POSIX.1-2008 запрещает это для согласования с
сопоставленные ключи, @, Глобальный, источниккачества v команды, ВЫХОД переменная окружения и
домен .exrc файлы.

вход Редактирование in ex
Одно из распространенных применений исторического ex редактор перегружен медленным сетевым подключением.
Редакторы, работающие в каноническом режиме, могут требовать гораздо меньше трафика туда и обратно и гораздо меньше
обработки на хост-машине, а также упрощает поддержку терминалов в блочном режиме.
По этим причинам POSIX.1-2008 требует, чтобы ex быть реализовано с использованием ввода в каноническом режиме
обработка, как это делалось исторически.

POSIX.1-2008 не требует четырех исторических символов редактирования ввода BSD `` стирание слова ''
или `` буквально следующий ''. По этой причине не указано, как они обрабатываются ex,
хотя они должны иметь необходимый эффект. Реализации, которые разрешают их после
линия была закончена с использованием или -M и реализации, которые
полагаются на поддержку терминала базовой системы для этой обработки, оба соответствуют требованиям.
Реализациям настоятельно рекомендуется использовать базовые системные функции, если они вообще используются.
возможно, для совместимости с другими интерфейсами ввода текста системы.

Исторически сложилось так, что когда ВФ символ использовался для уменьшения автоиндент уровень,
курсор переместился, чтобы отобразить новый конец автоиндент персонажей, но не сдвинул
курсор на новую строку, и при этом он не стирает -D символ из строки.
POSIX.1-2008 не указывает, что курсор остается в той же строке или что остальная часть
линия стирается; тем не менее, настоятельно рекомендуется реализации для обеспечения наилучшего
возможный пользовательский интерфейс; то есть курсор должен оставаться на той же строке, а любой
Символ -D в строке следует стереть.

POSIX.1-2008 не требует исторического 4 символа редактирования ввода BSD `` reprint '',
традиционно -R, который повторно отобразил текущий ввод от пользователя. Для этого
причина, и потому что функциональность не может быть реализована после того, как линия была
прекращено пользователем, POSIX.1-2008 не предъявляет никаких требований к этой функциональности.
Реализациям настоятельно рекомендуется сделать эту историческую функциональность доступной, если
возможное.

Исторически, -Q не выполнял буквальную следующую функцию в exкак это было в vi.
POSIX.1-2008 требует соблюдения исторической практики, чтобы избежать нарушения исторической ex
сценарии и .exrc файлы.

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

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

Command Описание in ex
Исторически сложилось так, что несколько команд (например, Глобальный, v, визуальный, s, записывать, wq, дергать, !, <,
>, &качества ~) выполнялись в пустых файлах (то есть адрес (а) по умолчанию был 0), или
разрешены явные адреса 0 (например, 0 был допустимым адресом или 0,0 был допустимым
диапазон). Адреса 0 или выполнение команды в пустом файле имеет смысл только для
команды, которые добавляют новый текст в буфер редактирования или записывают команды (потому что пользователи могут захотеть
писать пустые файлы). POSIX.1-2008 требует такого поведения для таких команд и запрещает его.
в противном случае для единообразия и простоты описания.

Подсчет ex команда исторически исправлена, чтобы быть не выше, чем последняя
строка в файле; например, в пятистрочном файле команда 1,6print потерпит неудачу, но
команду 1принт300 получится. POSIX.1-2008 требует соответствия исторической практике.

Исторически сложилось так, что использование флагов в ex команды могут быть неясными. Общеисторический
Практика была описана в POSIX.1-2008, но были некоторые особые случаи. За
Например, список, номеркачества Распечатать команды игнорировали смещения конечных адресов; за
пример, 3p +++ # отобразит строку 3, а 3 будет текущей строкой после выполнения
команды. В открытый и визуальный команды игнорировали как конечные смещения, так и
конечные флаги. Кроме того, флаги, указанные в открытый и визуальный команды плохо взаимодействовали
с список параметр редактирования, а также настройку, а затем отключение ее во время открытого / визуального
сеанс вызовет vi чтобы прекратить отображение строк в указанном формате. Для единообразия
и простота спецификации, POSIX.1-2008 не допускает ни одного из этих исключений для
общее правило.

POSIX.1-2008 использует слово копия в нескольких местах при обсуждении буферов. Это не
подразумевает реализацию.

Исторически сложилось так, ex пользователи не могли указывать числовые буферы из-за неоднозначности этого
вызовет; например, в команде 3 удалять 2, неясно, является ли 2 буферным
имя или считать. POSIX.1-2008 по умолчанию требует соответствия исторической практике, но
не исключает расширения.

Исторически сложилось так, что содержимое безымянного буфера часто удалялось после выполнения команд.
это явно не повлияло на это; например, при использовании отредактировать команда на переключение
файлы. Для единообразия и простоты спецификации POSIX.1-2008 не допускает этого.
поведение.

Ассоциация ex утилита исторически не имела доступа к числовым буферам, и, более того,
удаление строк в ex не изменяли их содержание. Например, если после удаления
in vi, пользователь переключился на ex, сделал еще одно удаление, а затем снова переключился на vi,
содержимое числовых буферов не изменилось бы. POSIX.1-2008 требует соответствия
к исторической практике. Числовые буферы описаны в ex полезность для того, чтобы
ограничить описание буферов одним местом в POSIX.1-2008.

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

Исторически сложилось так, ex команды выполняются из vi обновил экран, когда он не был строго
нужно это сделать; Например, :!Дата > / DEV / нуль не требует обновления экрана, потому что
вывод UNIX даты команде требуется только одна строка экрана.
POSIX.1-2008 требует, чтобы экран обновлялся, если он был перезаписан, но делает
нет требований относительно того, как реализация должна делать это определение.
Реализации могут запрашивать и обновлять экран в любом случае.

Сокращать
Исторически сложилось так, что символы, которые вводились как часть аббревиатуры
замена подлежала карта расширения, матч вариант редактирования, далее
расширения аббревиатур и т. д .; то есть они были логически помещены на терминал
очередь ввода, и не была простой заменой. POSIX.1-2008 требует соответствия
историческая практика. Историческая практика заключалась в том, что всякий раз, когда не-словесный символ (имеющий
не избежал -V) был введен после символа слова, vi проверил бы для
сокращения. Проверка была основана на типе символа, введенного перед словом
символ пары слово / неслово, инициировавший проверку. Словесный символ
пара слово / не слово, которая инициировала проверку, и все символы, введенные до триггера
пары этого типа были включены в чек, за исключением
символы, которые всегда разделяли аббревиатуру.

Это означает, что для того, чтобы сокращение работало, л.ш. должен заканчиваться символом слова,
не может быть переходов от словесных символов к несловесным (или вице Versa) Кроме как
между последним и предпоследним символами в л.ш., и не может быть
символы в л.ш.. Кроме того, из-за исторических правил цитирования было
невозможно ввести буквальный -V в л.ш.. POSIX.1-2008 требует соответствия
к исторической практике. Исторические реализации не сообщали пользователям, когда сокращения
которые никогда не могли быть использованы; реализациям настоятельно рекомендуется это делать.

Например, подойдут следующие сокращения:

: ab (p ЗАМЕНИТЬ
: ab p ЗАМЕНИТЬ
: ab ((п ЗАМЕНИТЬ

Следующие сокращения работать не будут:

: ab ( ЗАМЕНИТЬ
: ab (стр ЗАМЕНИТЬ

Историческая практика такова, что слова на vi командная строка двоеточия подлежала
расширение аббревиатуры, включая аргументы сокращение (и что еще интереснее)
без сокращений команда. Потому что есть реализации, которые не расширяют аббревиатуры
для первого аргумента этих команд это разрешено, но не требуется
POSIX.1-2008. Однако последовательность следующая:

: ab Foo бар
: ab Foo Баз

привело к добавлению аббревиатуры "баз" для строки "бар" в историческом
ex/vi, и последовательность:

: ab foo1 бар
: ab foo2 бар
: unabbreviate foo2

удалил аббревиатуру "foo1", Не "foo2". Такое поведение запрещено
POSIX.1-2008, потому что они явно противоречат ожиданиям пользователя.

Историческая практика -V, а не , символы интерпретируются как
экранирование последующих символов в сокращать команда. POSIX.1-2008 требует
соответствие исторической практике; однако следует отметить, что сокращение
содержащий никогда не будет работать.

присоединять
Исторически сложилось так, что любой текст, следующий за разделитель команд после добавлять,
изменениеили вставить команда стала частью вставляемого текста. Например, в команде:

: g / pattern / append | stuff1

строка, содержащая текст "вещи1" будет добавлен к каждому шаблону соответствия строки. Это
также исторически было действительным для входа:

: добавить | материал1
вещи2
.

и текст на ex командная строка будет добавлена ​​вместе с текстом, вставленным после
Это. Однако была историческая ошибка, когда пользователю приходилось вводить два завершающих
линии ( '' lines) для выхода из режима ввода текста в этом случае. POSIX.1-2008 требует
соответствие исторической практике, но исключает историческую потребность в множественных
завершающие линии.

Изменить
См. ОБОСНОВАНИЕ добавлять команда. Историческая практика позиционирования курсора после
команда изменения, когда текст не вводится, описана в POSIX.1-2008. Однако один
Известно, что реализация System V была изменена таким образом, что курсор позиционируется
по первому указанному адресу, а не в строке перед первым адресом. POSIX.1-2008
запрещает эту модификацию для единообразия.

Исторически сложилось так, изменение команда не поддерживает аргументы буфера, хотя некоторые
реализации позволяют спецификацию необязательного буфера. Такое поведение ни
требуется и не запрещается POSIX.1-2008.

Изменить Каталог
Обычное расширение в ex реализации заключается в использовании элементов CDPATH вариант редактирования как
префиксные каталоги для путь аргументы ChDir относительные пути и не
иметь '' or ".." как их первый компонент. Элементы в CDPATH вариант редактирования
-отдельно. Начальное значение CDPATH опция редактирования - это значение оболочки
CDPATH переменная окружения. Эта функция не была включена в POSIX.1-2008, потому что она
не существует ни в одной из реализаций, считающихся исторической практикой.

Копировать
Исторические реализации ex разрешенные копии в строки внутри указанного диапазона;
Например, : 2,5copy3 была действительной командой. POSIX.1-2008 требует соответствия
историческая практика.

Удалить
POSIX.1-2008 требует поддержки исторического анализа удалять команда, за которой следует
флаги, без какого-либо вмешательства символы. Например:

1dp Удаляет первую строку и печатает строку, которая была второй.

1делеп Что касается 1dp.

1d Удаляет первую строку, сохраняя ее в буфере p.

1d p1l (Pee-one-ell.) Удаляет первую строку, сохраняя ее в буфере. p, и перечислив строку
это было вторым.

Редактировать
Исторически сложилось так, что любое ex команда может быть введена как +команду аргумент к отредактировать команда,
хотя некоторые (например, вставить и добавлять), как известно, путали исторические
реализации. Для единообразия и простоты спецификации POSIX.1-2008 требует
чтобы любая команда поддерживалась в качестве аргумента отредактировать команда.

Исторически сложилось так, что аргумент команды выполнялся с текущей строкой, установленной на последнюю строку
файла, независимо от того, отредактировать команда была выполнена из визуального режима или нет.
POSIX.1-2008 требует соответствия исторической практике.

Исторически сложилось так, +команду указано в отредактировать и следующий команды были разделены
первый , и не было возможности их процитировать. Для согласованности POSIX.1-2008 требует
что обычный ex Предусмотрена обратная косая черта.

Исторически сложилось так, что указание +команду аргумент команды редактирования требовал имени файла для
также должны быть указаны; Например, редактирование: +100 всегда терпел неудачу. Для единообразия и
простота спецификации, POSIX.1-2008 не допускает сбоя этого использования для этого
причина.

Исторически сложилось так, что только позиция курсора последнего отредактированного файла запоминалась
редактор. POSIX.1-2008 требует, чтобы это поддерживалось; однако реализации
разрешено запоминать и восстанавливать позицию курсора для любого файла, который ранее редактировался.

Файл
Исторические версии ex редактор файл команда отображала текущую строку и количество
строки в буфере редактирования равны 0, когда файл был пуст, а vi -G команда
отображает текущую строку и количество строк в буфере редактирования 1 в том же
ситуация. POSIX.1-2008 не допускает этого несоответствия, вместо этого требуя, чтобы сообщение
отображается, указывая на то, что файл пуст.

Глобальный
Двухпроходная операция Глобальный и v команды не подразумевают
реализация, только требуемый результат операции.

Текущая строка и столбец устанавливаются так, как указано для человека ex команды. Этот
требование является кумулятивным; то есть текущая строка и столбец должны отслеживаться по всем
команды, выполняемые Глобальный or v команды.

Вставить
См. ОБОСНОВАНИЕ добавлять команда.

Исторически сложилось так, вставить не может использоваться с нулевым адресом; то есть не тогда, когда редактирование
буфер был пуст. POSIX.1-2008 требует, чтобы эта команда работала согласованно с
добавлять команда.

Присоединиться
Действие присоединиться команда по отношению к специальным символам определена только для
локаль POSIX, потому что правильное количество пробелов после точки меняется; в
На японском языке нет необходимости, на французском - только один пробел, и так далее.

Список
Исторический результат список команда была потенциально неоднозначной. Стандарт
разработчики считали исправление этого более важным, чем соблюдение исторических
практика, а POSIX.1-2008 требует однозначного вывода.

Карта
Исторически карты командного режима применялись только к именам команд; например, если
персонаж 'X' был сопоставлен с 'y', команда fx искал 'X' характер, а не
'y' персонаж. POSIX.1-2008 требует такого поведения. Исторически сложилось так, что ввод -V как
первый персонаж vi команда была ошибкой. Несколько реализаций расширили
семантика vi такой, что -V означает, что последующий командный символ
не отображается. Это разрешено, но не обязательно в стандарте POSIX.1-2008. Независимо от того, используя
-V для экранирования второго или последующего символа в последовательности символов, которые могут
соответствовать карта команда или любой символ в режиме ввода текста является исторической практикой, и
предотвращает совпадение введенных ключей с картой. POSIX.1-2008 требует соответствия
историческая практика.

Исторические реализации позволяли использовать цифры в качестве карта команду л.ш., но потом
проигнорировал карту. POSIX.1-2008 требует, чтобы отображаемые цифры не игнорировались.

Историческая реализация карта команда не разрешила карта команды, которые были
длина более одного символа, если первый символ был печатным. Это поведение
разрешено, но не обязательно в стандарте POSIX.1-2008.

Исторически сложилось так, что отображенные символы переназначались, если только переназначить опция редактирования не была установлена, или
префикс отображаемых символов соответствовал отображаемым символам; например, в
карта:

:карта ab ABCD

персонажи "ab" использовались как есть и не были переназначены, но символы "CD" были
нанесен на карту, если необходимо. Это может вызвать бесконечные циклы в vi механизмы отображения.
POSIX.1-2008 требует соответствия исторической практике, и чтобы такие петли были
прерывистый.

Карты ввода текста имели те же проблемы с расширением л.ш. для ex карта! и отключите карту!
команда, как и ex сокращать и несокращенный команды. См. ОБОСНОВАНИЕ ex
сокращать команда. POSIX.1-2008 требует аналогичной модификации некоторой исторической практики.
для карта и отменить отображение команды, как описано для сокращать и несокращенный команды.

Исторически сложилось так, картаs, которые были подмножествами других картаs вели себя по-разному в зависимости от
порядок, в котором они были определены. Например:

:карта! ab короткие
:карта! азбука длинной

всегда переводил персонажей "ab" в "короткая", независимо от того, насколько быстро
символы "abc" были введены. Если порядок входа был изменен:

:карта! азбука длинной
:карта! ab короткие

персонажи "ab" заставит редактор приостановиться, ожидая завершения «С»
персонаж, и персонажи могут никогда не быть сопоставлены "короткая". Для единообразия и
простота спецификации, POSIX.1-2008 требует, чтобы использовалось кратчайшее соответствие
раз.

Время, в течение которого редактор ожидает, пока персонажи завершат л.ш. is
не указано, потому что временные характеристики систем часто неточны и изменчивы, и
это может зависеть от других факторов, таких как скорость соединения. Время должно быть
достаточно долго, чтобы пользователь мог завершить последовательность, но не достаточно долго, чтобы
пользователю придется подождать. Некоторые реализации vi добавили ключевое время вариант, который
позволяет пользователям установить количество 0,1 секунды, в течение которого редактор ожидает завершения
символы. Поскольку назначенная функция терминала и клавиши курсора обычно начинаются с символа
характер и это ключевой финал vi режим ввода текста, картаs начиная с
символы обычно освобождаются от этого периода ожидания, или, по крайней мере, истекло время ожидания
по-другому.

Отметьте
Исторически сложилось так, что пользователи могли явно устанавливать отметку `` предыдущий контекст ''. В
кроме того, ex команды '' и '` и vi команды '', ``, `'качества '` все ссылались на
тот же знак. Кроме того, предыдущие метки контекста не устанавливались, если команда с
с которым был связан адрес, устанавливающий метку, не удалось. POSIX.1-2008 требует
соответствие исторической практике. Исторически, если отмеченные линии удалялись, метка
также был удален, но снова появится, если изменение будет отменено. POSIX.1-2008 требует
соответствие исторической практике.

Описание особых событий, которые устанавливают ` и ' отметки соответствуют историческим
упражняться. Например, исторически команда / а /, / б / не установил ` и ' марки, но
команда / a /, / b / удалить сделал.

Следующая
Исторически сложилось так, что любое ex команда может быть введена как +команду аргумент к следующий команда,
хотя некоторые (например, вставить и добавлять), как известно, путали исторические
реализации. POSIX.1-2008 требует, чтобы любая команда была разрешена и чтобы она вела себя как
указано. В следующий команда может принимать более одного файла, поэтому такие варианты использования, как:

следующий `лс [абв] `

является действительным; это не должно быть действительным для отредактировать or читать команды, например, потому что они
ожидайте только одно имя файла.

Исторически сложилось так, следующий команда вела себя иначе, чем : перемотка команда в этом
игнорировал флаг силы, если автозапись установлен флаг. Для согласованности POSIX.1-2008 делает
не допускайте такого поведения.

Исторически сложилось так, следующий команда поместила курсор так, как будто файл никогда не редактировался
раньше, несмотря ни на что. POSIX.1-2008 не допускает такого поведения для согласованности с
отредактировать команда.

Реализации, желающие предоставить аналог следующий команда, которая редактировала
в предыдущем файле использовалась команда предыдущий], что не требует файл аргумент. POSIX.1-2008
не требует этой команды.

Откройте
Исторически сложилось так, открытый команда потерпит неудачу, если открытый опция редактирования не была установлена.
POSIX.1-2008 не упоминает открытый вариант редактирования и не требует такого поведения.
Некоторые исторические реализации не позволяют входить в открытый режим из открытого или визуального режима,
только из ex режим. Для согласованности POSIX.1-2008 не допускает такого поведения.

Исторически сложилось так, что вход в открытый режим из командной строки (то есть vi + открыть) привело к
аномальное поведение; например, ex файлов и набор команды, а vi команду
‐G не получилось. Для согласованности POSIX.1-2008 не допускает такого поведения.

Исторически сложилось так, открытый только команда разрешена '/' символы, которые будут использоваться в качестве поиска
шаблон-разделитель. Для согласованности POSIX.1-2008 требует, чтобы в качестве разделителей поиска использовались
не провела обыск s, Глобальныйкачества v команды также принимаются.

Сохранять
Ассоциация сохранять команда исторически не приводит к тому, что файл считается неизмененным для
цели будущих команд, которые могут выйти из редактора. POSIX.1-2008 требует
соответствие исторической практике.

Историческая документация гласила, что почта не отправлялась пользователю, когда сохранение было
выполнен; однако исторические реализации в этом случае отправили почту. POSIX.1-2008
требует соответствия историческим реалиям.

Печать / PDF
Написание НУЛ Распечатать команда не указана как особый случай, потому что
стандартные разработчики не хотели требовать ex для поддержки символов NUL. Исторически,
символы отображались с использованием стандартных сопоставлений ARPA, а именно:

1. Печатные символы оставлены в покое.

2. Управляющие символы меньше \ 177 представлены как '^' за которым следует персонаж
смещение от '@' символ в карте ASCII; например, \ 007 представлен как
'^ G'.

3. \ 177 представлен как '^' последующей ';'.

Отображение символов с восьмым битом было менее стандартным. Существующий
реализации используют шестнадцатеричный (0x00), восьмеричный (\ 000) и мета-битовый дисплей. (Последний
отображаемые байты, у которых восьмой бит был установлен как два символа "М-" а затем
семибитный дисплей, как описано выше.) Последний, вероятно, лучше всех претендует на
исторической практики, потому что он использовался для -v вариант 4 BSD и 4 производных от BSD
версии кошка Утилита с 1980 года.

POSIX.1-2008 не требует определенного формата отображения.

Явной зависимости от набора символов ASCII по возможности избегали, поэтому
использование фразы `` определяемая реализацией многосимвольная последовательность '' для отображения
непечатаемых символов вместо исторического использования, например, "^ Я"
для . Реализациям рекомендуется соответствовать исторической практике в
отсутствие веских оснований для расхождения.

Исторически все ex команды, начинающиеся с буквы 'п' можно ввести с помощью
версии команд с заглавной буквы; Например, Распечатать], Сохранять]качества Ставить] все были
допустимые имена команд. POSIX.1-2008 разрешает, но не требует, эту историческую практику
потому что заглавные формы команд используются некоторыми реализациями для других целей.

Ставить
Исторически сложилось, ex положил команда, выполняемая из открытого или визуального режима, была такой же, как и
открытый или визуальный режим P команда, если буфер был назван и вырезан в символьном режиме, и
так же, как и p команда, если буфер был назван и вырезан в линейном режиме. Если безымянный
буфер был источником текста, вся строка, из которой был взят текст, была
обычно положил, и буфер обрабатывался как в линейном режиме, но можно было получить
крайне аномальное поведение. Кроме того, используя Q команда для переключения в ex режим и
затем делать положил часто приводили к ошибкам, например к добавлению текста, который был
не связано с (предполагаемым) содержимым буфера. Для единообразия и простоты
Согласно спецификации, POSIX.1-2008 не допускает такого поведения. Все ex положил команды
требуется для работы в линейном режиме, и содержимое буферов не изменяется
изменение режима редактора.

Читать
Исторически сложилось, ex читать команда, выполняемая из открытого или визуального режима, выполняемая в пустом
file, оставьте пустую строку в качестве первой строки файла. Для единообразия и простоты
Согласно спецификации POSIX.1-2008 такое поведение не допускается. Исторически сложилось так, что читать в открытом
или визуальный режим из программы оставил курсор на последней прочитанной строке, а не на первой. За
согласованность, POSIX.1-2008 не допускает такого поведения.

Исторические реализации ex не смогли отменить читать команды, которые читаются из
вывод программы. Для согласованности POSIX.1-2008 не допускает такого поведения.

Исторически сложилось так, ex и vi сообщение после успешного читать or записывать указанная команда
`` символы '', а не `` байты ''. POSIX.1-2008 требует, чтобы количество байтов было
отображается, а не количество символов, потому что это может быть сложно в многобайтовом
реализации для определения количества прочитанных символов. Реализации приветствуются
для пояснения сообщения, отображаемого пользователю.

Раньше чтение не разрешалось для файлов, отличных от обычного, за исключением того, что FIFO
файлы можно было читать (вероятно, только потому, что их не было, когда ex и vi были
изначально написано). Потому что исторический ex оценивается читать! и читать ! эквивалентно,
не может быть дополнительного способа принудительного чтения. POSIX.1-2008 разрешает, но не
требуется, это поведение.

Recover
Некоторые исторические реализации редактора позволяли пользователям восстанавливать буфер редактирования.
содержимое из предыдущего сеанса редактирования, а затем выйти без сохранения этого содержимого (или
явно отбрасывая их). Намерение POSIX.1-2008 требует, чтобы буфер редактирования
считаться уже измененным, чтобы предотвратить эту ошибку пользователя.

Перемотка
Исторические реализации поддержали перемотка команда, когда пользователь редактировал
первый файл в списке; то есть файл, который перемотка команда будет редактировать. POSIX.1-2008
требует соответствия исторической практике.

Замена
Исторически сложилось так, ex принял r вариант для s команда. Эффект r вариант был
использовать в качестве шаблона последнее регулярное выражение, использованное в любой команде, так же, как ~
команда. r опция не требуется в POSIX.1-2008. Исторически сложилось так, что c и g кредита
были переключены; например, команда : s / abc / def / был такой же как s / abc / def / ccccgggg.
Для простоты спецификации POSIX.1-2008 не допускает такого поведения.

Команда тильда часто используется для замены последнего поискового RE. Например, в
последовательность:

s / красный / синий /
/ зеленый
~

домен ~ команда эквивалентна:

с / зеленый / синий /

Исторически сложилось так, ex принял все следующие формы:

s / abc / def /
s / abc / def
s / abc /
s / abc

POSIX.1-2008 требует соблюдения этой исторической практики.

Ассоциация s команда предполагает, что '^' символ занимает только один столбец в
отображать. Большая часть ex и vi спецификация предполагает, что занимает только
один столбец на дисплее. Нет известных наборов символов, для которых это не
правда.

Исторически сложилось так, что положение последнего столбца для заменяющих команд основывалось на предыдущем
движения колонны; поиск шаблона с последующей заменой оставит столбец
позиция не изменилась, в то время как команда 0 с последующей заменой изменила бы столбец
положение к первому не- . Для единообразия и простоты спецификации,
POSIX.1-2008 требует, чтобы последняя позиция столбца всегда была первой.
не- .

Поставьте
Исторические реализации повторно отображали все варианты для каждого случая Найти
ключевое слово. POSIX.1-2008 разрешает, но не требует, такое поведение.

Тег
Нет требований относительно того, где ex и vi будет искать файл, на который ссылается тег
Вход. Историческая практика заключалась в том, чтобы искать путь, найденный в имеют теги файл, основанный на
текущий каталог. В некоторых реализациях можно найти полезное расширение, основанное на
в каталоге, содержащем файл тегов, который также содержал запись. Нет требований
сделано относительно того, какая ссылка для тега в файле тегов используется. Это умышленно, в
чтобы разрешить расширения, такие как несколько записей в файле тегов для тега.

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

Требование, чтобы текущий буфер редактирования не был изменен, необходимо только в том случае, если файл
указанный в записи тега не совпадает с текущим файлом (как определено текущим
путь). Раньше файл был бы перезагружен, если бы имя файла также изменилось.
как если бы имя файла отличалось от текущего пути. Для последовательности и простоты
спецификации, POSIX.1-2008 не допускает такого поведения, требуя, чтобы имя
единственный фактор в решении.

Исторически сложилось так, vi только поиск тегов в текущем файле от текущего курсора до
конец файла, и, следовательно, если обертка опция не была установлена, теги встречались раньше
текущий курсор не найден. POSIX.1-2008 считает это ошибкой, и реализации
в любом случае требуются для поиска первого вхождения в файле.

расстегивать
Ассоциация отменить description намеренно использует слово `` модифицированный ''. В отменить команда не
предназначен для отмены команд, заменяющих содержимое буфера редактирования, таких как отредактировать ,
следующий, деньили оправляться.

Расположение курсора после отменить командование было непоследовательным в историческом vi, иногда
попытка восстановить исходную позицию курсора (Глобальный, отменитькачества v команды), и
иногда при наличии карт установка курсора на последнюю строку добавлена ​​или изменена
вместо первого. POSIX.1-2008 требует упрощенного поведения для согласованности и
простота спецификации.

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

Написать
Исторически сложилось так, ex и vi сообщение после успешного читать or записывать указанная команда
`` символы '', а не `` байты ''. POSIX.1-2008 требует, чтобы количество байтов было
отображается, а не количество символов, потому что это может быть сложно в многобайтовой
реализации для определения количества написанных символов. Реализации
рекомендуется уточнить сообщение, отображаемое пользователю.

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

Исторически сложилось так, что попытка добавления к несуществующему файлу вызвала ошибку. Это осталось
не определено в POSIX.1-2008, чтобы позволить реализациям разрешить записывать добиться успеха, так что
семантика добавления аналогична семантике исторического CSH.

Исторические vi разрешено записывать пустые буферы редактирования. Однако, поскольку способ vi есть
для работы с `` пустыми '' файлами всегда должна была быть строка в буфере редактирования, нет
несмотря ни на что, он записал их как файлы одной пустой строки. POSIX.1-2008 не разрешает
это поведение.

Исторически сложилось так, ex восстановил стандартный вывод и стандартную ошибку до их значений по состоянию на ex
был вызван перед выполнением записи в программы. Это может нарушить работу терминала
конфигурации, а также представляет собой проблему безопасности для некоторых терминалов. POSIX.1-2008 не
разрешить это, требуя, чтобы вывод программы был захвачен и отображен, как если бы ex
Распечатать команда.

Регулировать Окно
Исторически счетчик строк был установлен на значение пролистать вариант, если тип
символ был концом файла. Эта функция давно не работает в большинстве исторических реализаций.
назад, однако, и нигде не задокументирован. По этой причине POSIX.1-2008 решительно
тихий.

Исторически сложилось так, z команда была -чувствительный и z + и z - делал разные вещи
чем z+ и г- потому что тип нельзя было отличить от флага. (Команды z .
и z = были исторически недействительными.) POSIX.1-2008 требует соответствия этому историческому
практика.

Исторически сложилось так, z команда была дальше -чувствителен в том, что считать не может быть
-деограниченный; например, команды z= 5 и г- 5 также были недействительными. Поскольку
считать не является двусмысленным ни в отношении символа типа, ни в отношении флагов, это не
разрешено POSIX.1-2008.

Побег
Исторически сложилось так, ex команды фильтра читают только стандартный вывод команд, позволяя
стандартные ошибки появляются на терминале как обычно. В vi утилита, однако, прочтите оба
стандартный вывод и стандартная ошибка. POSIX.1-2008 требует последнего поведения для обоих ex
и vi, для согласованности.

Shift левый и Shift Правильно
Исторически сложилось так, что можно было добавлять символы сдвига, чтобы усилить эффект
команда; Например, << вытесненный (или >>> с отступом) строки 3 уровня отступа
вместо значения по умолчанию 1. POSIX.1-2008 требует соответствия исторической практике.

-D
Исторически сложилось так, что -D удалила подсказку, предоставив пользователю
непрерывное отображение строк из буфера редактирования. POSIX.1-2008 этого не требует;
рекомендуется предоставлять его, если это возможно. Исторически сложилось так, что -D
команда приняла, а затем проигнорировала считать. POSIX.1-2008 не допускает такого поведения.

Написать линия Номер регистрации
Исторически сложилось так, ex = команда, при выполнении в ex режим в пустом буфере редактирования, сообщается
0, а из открытого или визуального режима - 1. Для единообразия и простоты
Согласно спецификации POSIX.1-2008 такое поведение не допускается.

Выполнить
Исторически сложилось так, ex некорректно обрабатывал включение команд ввода текста (то есть
добавлять, вставитькачества изменение) в исполняемых буферах. POSIX.1-2008 не допускает этого
исключение для согласованности.

Исторически логическое содержимое выполняемого буфера не изменялось, если
сам буфер был изменен выполняемыми командами; то есть выполнение буфера
не поддерживает самомодифицирующийся код. POSIX.1-2008 требует соответствия исторической практике.

Исторически сложилось так, @ команда заняла ряд строк, а @ буфер выполнялся один раз за
строка, с текущей строкой ('') устанавливается для каждой указанной строки. POSIX.1-2008 требует
соответствие исторической практике.

Некоторые исторические реализации не заметили, если во время выполнения буфера возникали ошибки.
Это в сочетании с возможностью указать диапазон строк для ex @ команда, делает это
тривиально заставить их упасть ядро. POSIX.1-2008 требует, чтобы реализации остановились
выполнение буфера, если возникает какая-либо ошибка, если указанная строка не существует, или если
содержимое самого буфера редактирования заменяется (например, буфер выполняет ex
редактирование: команда).

Стандарт Expressions in ex
Историческая практика такова, что персонажи в заменяющей части последнего s команда—
то есть те, которые совпадают, введя '~' в регулярном выражении - дальше не было
расширяется обработчиком регулярных выражений. Итак, если символы содержали строку
"а." они будут соответствовать 'а' последующей ".," и не 'а' за которым следует любой символ.
POSIX.1-2008 требует соответствия исторической практике.

Редактировать Опции in ex
В следующих абзацах описывается историческое поведение некоторых опций редактирования, которые были
по какой-либо причине не включен в POSIX.1-2008. Реализации сильно
рекомендуется использовать эти имена только в том случае, если описанные здесь функции полностью поддерживаются.

расширенная Ассоциация расширенная опция редактирования использовалась в некоторых реализациях vi обеспечить
расширенные регулярные выражения вместо базовых регулярных выражений Эта опция
был исключен из POSIX.1-2008, потому что это не широко распространенная историческая практика.

вспышка Ассоциация вспышка опция редактирования исторически заставляла экран мигать вместо звукового сигнала
при ошибке. Эта опция была опущена в POSIX.1-2008, потому что она не найдена в
некоторые исторические реализации.

жесткие диски Ассоциация жесткие диски опция редактирования исторически определяла количество столбцов между
настройки вкладки оборудования. Эта опция была исключена в POSIX.1-2008, потому что она была
считается больше бесполезным.

модельная линия Ассоциация модельная линия (иногда называют модели) вариант редактирования, исторически вызванный ex or
vi для чтения пяти первых и последних строк файла для команд редактора. Этот
опция является проблемой безопасности, и продавцам настоятельно рекомендуется удалить ее
из исторических реализаций.

открытый Ассоциация открытый опция редактирования исторически запрещала ex открытый и визуальный команды.
Эта опция редактирования была опущена, потому что эти команды требуются
POSIX.1-2008.

оптимизировать Ассоциация оптимизировать параметр редактирования исторически ускоряет пропускную способность текста, установив
терминал не делать автоматический символов при печати больше
чем одна логическая строка вывода. Эта опция отсутствовала в POSIX.1-2008.
потому что он был предназначен для терминалов без адресных курсоров, которые
редко, если вообще используется.

правитель Ассоциация правитель опция редактирования использовалась в некоторых реализациях vi представить
текущая линейка строки / столбца для пользователя. Эта опция отсутствовала в POSIX.1-2008.
потому что это не широко распространенная историческая практика.

источник Ассоциация источник вариант редактирования исторически вызванный ex or vi для исходных файлов запуска
которые принадлежали другим пользователям, кроме пользователя, запустившего редактор. Этот вариант
проблема безопасности, и продавцам настоятельно рекомендуется удалить ее из своих
Реализации.

Тайм-аут Ассоциация Тайм-аут опция редактирования исторически включала (теперь стандартную) функцию только
ожидание в течение короткого периода перед возвратом ключей, которые могут быть частью макроса.
Эта функция была исключена из POSIX.1-2008, потому что ее поведение теперь является стандартным,
он не получил широкого распространения и редко документировался.

подробный Ассоциация подробный опция редактирования использовалась в некоторых реализациях vi вызывать vi
выводить сообщения об ошибках для общих ошибок; например, попытка переместить
курсор за начало или конец строки, а не только для предупреждения
экран. (Исторический vi только предупредил терминал и не представил сообщения
за такие ошибки. Вариант исторического редактора кратко не выбирал, когда
присутствуют сообщения об ошибках, это только сделало существующие сообщения об ошибках более или менее
подробный.) Этот параметр был опущен в POSIX.1-2008, потому что он не получил широкого распространения.
историческая практика; однако разработчикам рекомендуется использовать его, если они хотят
для предоставления сообщений об ошибках наивным пользователям.

обернуть Ассоциация обернуть опция редактирования использовалась в некоторых реализациях vi указать
автоматическое поле измеряется от левого поля, а не от правого
допуск. Это полезно, когда для редактирования
отдельный файл. Эта опция была опущена в POSIX.1-2008, потому что она не
широко распространенная историческая практика; однако разработчикам рекомендуется использовать его
если они добавят эту функциональность.

автоиндент ai
Исторически сложилось так, что команда 0a не производил никакого автоиндентирования, независимо от текущего
отступ строки 1. POSIX.1-2008 требует, чтобы любой отступ в строке 1 был
используемый.

автопечать ap
Исторически сложилось так, автопечать вариант редактирования не был полностью согласован или основан исключительно на
модификации буфера редактирования. Исключениями были читать команда (при чтении из
файл, но не из фильтра), добавлять, изменение, вставить, Глобальныйкачества v команды, все
на которые не повлияли автопечать, и день команда, на которую повлиял
автопечать. POSIX.1-2008 требует соответствия исторической практике.

Исторически сложилось так, автопечать опция применяется только к последней из нескольких введенных команд
с использованием разделители; Например, удалять был затронут автопечать,
но удалить | версия не было. POSIX.1-2008 требует соответствия историческим
практика.

автозапись aw
Добавление '!' персонаж к ex следующий команда, чтобы избежать выполнения автоматической записи
не поддерживался в исторических реализациях. POSIX.1-2008 требует, чтобы поведение
соответствовать другому ex команды для согласованности.

игнорировать регистр ic
Исторические реализации сопоставления без учета регистра ( игнорировать вариант редактирования) вести
в противоречивые ситуации, когда в выражениях диапазона использовались символы верхнего регистра.
Исторически процесс выглядел следующим образом:

1. Возьмите строку текста из буфера редактирования.

2. Преобразование верхнего регистра в нижний регистр в текстовой строке.

3. Преобразование верхнего регистра в нижний регистр в регулярных выражениях, кроме класса символов.
технические условия.

4. Сопоставьте регулярные выражения с текстом.

Это означало бы, что с игнорировать по сути, текст:

Ассоциация кошка Сб on домен коврик

будет соответствовать

/ ^ the /

но не по:

/ ^ [A − Z] he /

Для согласованности с другими командами, реализующими регулярные выражения, POSIX.1-2008 делает
не допускайте такого поведения.

абзацы, для
Стандарт ISO POSIX ‐ 2: 1993 стал стандартом по умолчанию. пункты и разделах параметры редактирования
определены реализацией, утверждая, что они исторически ориентированы на систему UNIX TROFF
средство форматирования текста, а `` переносимый пользователь '' может использовать {, }, [[, ]], (качества ) команды в
в открытом или визуальном режиме и остановка курсора в неожиданных местах. POSIX.1-2008 определяет
их значения в локали POSIX из-за необычной группировки (они работают только когда сгруппированы
на два символа одновременно) означает, что они не могут использоваться для общего назначения
движение, несмотря ни на что.

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

Ассоциация только для чтения Спецификация опции редактирования во многом соответствует исторической практике. Единственный
разница в том, что исторические реализации не заметили, что пользователь установил
только для чтения вариант редактирования в тех случаях, когда файл по какой-то причине уже был помечен как доступный только для чтения,
и поэтому повторно инициализирует только для чтения вариант редактирования в следующий раз, когда содержимое
буфер редактирования был заменен. Такое поведение запрещено POSIX.1-2008.

отчету
Требование, чтобы строки, скопированные в буфер, взаимодействовали иначе, чем удаленные строки:
историческая практика. Например, если отчету опция редактирования установлена ​​на 3, удаляются 3 строки
приведет к написанию отчета, но перед написанием отчета необходимо скопировать 4 строки.

Требование, чтобы ex Глобальный, v, открытый, отменитькачества визуальный команды представляют отчеты
на основе общего количества строк, добавленных или удаленных во время выполнения команды, и что
команды, выполняемые Глобальный и v команд нет отчетов, является историческим
упражняться. POSIX.1-2008 расширяет историческую практику, требуя, чтобы выполнение буфера было
лечится аналогично. Для этого есть две причины. Исторически сложилось так, что только отчет
последняя команда, выполненная из буфера, будет видна пользователю, как и каждый новый отчет.
перезаписываем последнюю. Кроме того, разработчики стандарта считали, что выполнение буфера
имел больше общего с Глобальный и v команд, чем с другими ex команды и
должны вести себя аналогично для единообразия и простоты спецификации.

шоуматч sm
Продолжительность времени, в течение которого курсор проводит с совпадающим символом, не указана, поскольку
временные возможности систем часто неточны и изменчивы. Время должно быть долгим
достаточно, чтобы пользователь заметил, но не достаточно долго, чтобы он рассердился. Немного
реализации vi добавили время матча опция, которая позволяет пользователям устанавливать число
с интервалом 0,1 секунды курсор останавливается на соответствующем символе.

режим шоу
Ассоциация режим шоу опция использовалась в некоторых исторических реализациях ex и vi в
отображать текущий режим редактирования в открытом или визуальном режиме. В режимах редактирования есть
обычно включаются `` команда '' и `` ввод '', а иногда и другие режимы, такие как
`` заменить '' и `` поменять ''. Строка обычно отображалась в нижней строке
экран в дальнем правом углу. Кроме того, предыдущий '*' часто обозначаемый персонаж
было ли изменено содержимое буфера редактирования. Последний дисплей имеет
иногда был частью режим шоу вариант, а иногда и другой вариант. Этот
опция не была доступна в исторической реализации BSD 4 vi, но рассматривался как
обычно полезно, особенно для начинающих пользователей, и требуется в соответствии с POSIX.1-2008.

Ассоциация СМД стенография для режим шоу вариант не присутствовал во всех исторических
реализации редактора. POSIX.1-2008 требует этого для единообразия.

Не все исторические реализации редактора отображали строку режима для командного режима,
отличие командного режима от режима ввода текста отсутствием строки режима.
POSIX.1-2008 допускает такое поведение для согласования с исторической практикой, но
реализациям рекомендуется предоставлять отображаемую строку для обоих режимов.

медленно открывать
Исторически сложилось так, медленно открывать опция была автоматически установлена, если скорость передачи терминала была меньше
чем 1200 бод, или если скорость передачи была 1200 бод и перерисовать вариант не ставился. В
медленно открывать вариант имел два эффекта. Во-первых, при вставке символов в середину строки
символы после курсора не будут продвигаться вперед, а будут перезаписаны.
Во-вторых, при создании новой строки текста строки после текущей строки не будут
прокручивается вниз, но кажется, что он перезаписан. В обоих случаях завершение режима ввода текста
приведет к обновлению экрана в соответствии с фактическим содержимым буфера редактирования.
Наконец, терминалы, которые были достаточно умными, заставляли редактор игнорировать
медленно открывать вариант. POSIX.1-2008 допускает большинство исторического поведения, расширяя исторические
практика требовать медленно открывать поведение, если параметр редактирования установлен пользователем.

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

срок
Исторические реализации ex и vi проигнорировал изменения в срок вариант редактирования после
была загружена исходная информация о терминале. Это разрешено POSIX.1-2008; тем не мение,
рекомендуется разрешить пользователю изменять тип своего терминала в любой
времени.

кратко
Исторически сложилось так, кратко опция редактирования, опционально обеспечивающая более короткую и менее описательную ошибку
сообщение для некоторых сообщений об ошибках. Это разрешено, но не обязательно в стандарте POSIX.1-2008.
Исторически наиболее распространенные ошибки визуального режима (например, попытка переместить курсор мимо
конец строки) не приводил к сообщению об ошибке, а просто предупреждал терминал.
Реализациям, желающим предоставлять сообщения для начинающих пользователей, настоятельно рекомендуется делать это на основе
домен отредактировать вариант подробный, и не кратко.

окно
В исторических реализациях значение по умолчанию для окно вариант редактирования был основан на
скорость передачи следующая:

1. Если скорость передачи была меньше 1200, отредактировать вариант w300 установить значение окна; за
Например, строка:

набор w300 = 12

установил бы для параметра окна значение 12, если скорость передачи была меньше 1200.

2. Если скорость передачи была равна 1200, отредактировать вариант w1200 установить значение окна.

3. Если скорость передачи была больше 1200, отредактировать вариант w9600 установить значение окна.

Ассоциация w300, w1200качества w9600 параметры не появляются в POSIX.1-2008 из-за их
зависимость от конкретной скорости передачи.

В исторических реализациях размер окна, отображаемого различными командами, был
связаны, но не обязательно совпадают с окно вариант редактирования. Например, размер
окна было установлено ex команду визуальный 10, но это не изменило значение
окно вариант редактирования. Однако изменение значения окно вариант редактирования изменил
количество строк, отображаемых при перекрашивании экрана. POSIX.1-2008 не
разрешить такое поведение в интересах последовательности и простоты спецификации, и
требует, чтобы все команды, изменяющие количество отображаемых строк, делали это
установка значения окно вариант редактирования.

обертка, wm
Исторически сложилось так, обертка опция не влияла на карты, вставляя символы, которые также имели
связанный считатьs; Например :карта K 5аАВС DEF. К сожалению, широко используются
карты, которые зависят от этого поведения. Для единообразия и простоты спецификации,
POSIX.1-2008 не допускает такого поведения.

Исторически сложилось так, обертка был рассчитан с использованием ширины отображения столбца всех символов
на экране. Например, реализация с использованием "^ Я" представлять символы
когда окно список была установлена ​​опция редактирования, где '^' и 'Я' каждый занимал одну колонку на
экран, вычислил бы обертка на основе значения 2 для каждого . В номер
опция редактирования аналогичным образом изменила и эффективную длину строки. POSIX.1-2008
требует соответствия исторической практике.

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

БУДУЩЕЕ НАПРАВЛЕНИЯ


Нет.

Используйте Exposix онлайн с помощью сервисов onworks.net


Бесплатные серверы и рабочие станции

Скачать приложения для Windows и Linux

  • 1
    Pharser
    Pharser
    Phaser - это быстрый, бесплатный и увлекательный
    исходный игровой фреймворк HTML5, который предлагает
    WebGL и рендеринг Canvas через
    настольные и мобильные веб-браузеры. Игры
    может быть со ...
    Скачать Фазер
  • 2
    VASSAL Двигатель
    VASSAL Двигатель
    VASSAL - игровой движок для создания
    электронные версии традиционной доски
    и карточные игры. Он обеспечивает поддержку
    рендеринг и взаимодействие игровых элементов,
    и ...
    Скачать движок VASSAL
  • 3
    OpenPDF - форк iText
    OpenPDF - форк iText
    OpenPDF — это библиотека Java для создания
    и редактирование PDF-файлов с помощью LGPL и
    Лицензия с открытым исходным кодом MPL. OpenPDF – это
    LGPL/MPL преемник iText с открытым исходным кодом,
    и ...
    Скачать OpenPDF — форк iText
  • 4
    SAGA GIS
    SAGA GIS
    САГА - Автоматизированная система
    Геонаучный анализ - это географический
    Программное обеспечение информационной системы (ГИС) с
    огромные возможности для геоданных
    обработка и анализ ...
    Скачать ГИС САГА
  • 5
    Панель инструментов для Java / JTOpen
    Панель инструментов для Java / JTOpen
    IBM Toolbox for Java / JTOpen — это
    библиотека классов Java, поддерживающая
    клиент/сервер и интернет-программирование
    моделей в систему под управлением OS/400,
    i5/ОС, о...
    Скачать набор инструментов для Java/JTOpen
  • 6
    D3.js
    D3.js
    D3.js (или D3 для документов, управляемых данными)
    это библиотека JavaScript, которая позволяет вам
    для создания динамических интерактивных данных
    визуализации в веб-браузерах. С D3
    вы...
    Скачать D3.js
  • Больше »

Команды Linux

Ad