Vi: различия между версиями
imported>VitalikBot м Обновление шаблона {{improve}}; langs: en,da,eo |
imported>DenisKrivosheev Нет описания правки |
||
| Строка 1: | Строка 1: | ||
{{ | {{lowercase}} | ||
{{ | {{Программа | ||
= | | название = vi | ||
| логотип = | |||
=== | | снимок экрана = NetBSD 6.1 vi C Hello World.png | ||
| подпись = Редактирование [[Hello, world!|программы Hello World!]] на [[Си (язык программирования)|языке Си]] в редакторе vi. Тильды обозначают строки, отсутствующие в файле. | |||
| тип = [[Текстовый редактор]] | |||
= | | автор = | ||
| разработчик = [[Джой, Билл|Билл Джой]] | |||
| написана на = [[Си (язык программирования)|Си]] | |||
| интерфейс = | |||
| движок = | |||
= | | операционные системы = [[Unix]], [[Unix-подобная операционная система|Unix-подобные]] | ||
| аппаратная платформа = [[Кроссплатформенность|Кроссплатформенный]] | |||
| языки интерфейса = | |||
| первый выпуск = {{Start date and age|df=yes|1976}} | |||
| последняя версия = | |||
| дата последней версии = | |||
| репозиторий = | |||
| читаемые форматы файлов = | |||
| создаваемые форматы файлов = | |||
| состояние = | |||
| лицензия = [[Лицензии BSD|4-пунктовая лицензия BSD]] или [[CDDL]] | |||
| сайт = | |||
| кандидат в релизы = | |||
| дата кандидата в релизы = | |||
| тестовая версия = | |||
| дата тестовой версии = | |||
| бета-версия = | |||
| дата бета-версии = | |||
| альфа-версия = | |||
| дата альфа-версии = | |||
}} | }} | ||
{{Нет сносок|дата=2019-03-22}} | |||
'''vi''' (от {{lang-en|visual}}, произносится {{IPAc-en|ˌ|v|iː|ˈ|aɪ|audio=en-us-vi.oga}})<ref>{{citation |author=Computerphile |title=EXTRA BITS GREP from ED and Text Editors - Computerphile – Computerphile |date=2018-07-09 |url=https://www.youtube.com/watch?v=bSaBe6WiC2s&list=PLzH6n4zXuckqZ90zLyy36qjO5YIn1RulG |access-date=2020-04-17 |url-status=live |archive-url=https://ghostarchive.org/varchive/youtube/20211118/bSaBe6WiC2s |archive-date=2021-11-18}}{{cbignore}}</ref>, по-русски читается «ви-ай») — серия [[текстовый редактор|текстовых редакторов]] [[операционная система|операционных систем]] семейства [[UNIX]]. | |||
{{ | |||
{{ | |||
| | |||
| | |||
| | |||
| | |||
}} | |||
< | |||
{{ | |||
= | |||
| | |||
} | |||
{{ | |||
< | |||
== История == | |||
Первая версия была написана [[Джой, Билл|Биллом Джоем]] в [[1976 год]]у. | |||
=== | В то время наиболее распространённым был редактор '''[[ed]]'''. Поскольку он был довольно сложным для «простого смертного», George Coulouris разработал редактор '''em''' ({{lang-en|editor for mortals}} — «редактор для смертных»). Билл Джой модифицировал редактор '''em''' и назвал его '''en''', а позже на его основе создал '''[[ex (Unix)|ex]]''', в котором появился визуальный режим, вызывавшийся командой '''vi'''. Так как пользователи больше времени проводили в визуальном режиме, '''ex 2.0''', ставший частью 2[[BSD]], сразу запускался уже в нём. Так появился '''vi''', бывший в то время всего лишь [[Жёсткая ссылка|жёсткой ссылкой]] на '''ex'''<ref>{{Cite web |url=https://www.theregister.co.uk/2003/09/11/bill_joys_greatest_gift/ |title=Bill Joy’s greatest gift to man — the vi editor |access-date=2017-09-29 |archive-date=2014-06-03 |archive-url=https://web.archive.org/web/20140603174753/https://www.theregister.co.uk/2003/09/11/bill_joys_greatest_gift/ |url-status=live }}</ref>. | ||
= | Редактор писался для терминала [[ADM-3A]], имевшего ограниченную клавиатуру: на ней не было выделенных [[клавиши управления курсором|клавиш-стрелок]], а из модификаторов доступны только {{клавиша|[[Shift (Клавиша)|Shift]]}} и частично {{Клавиша|[[Ctrl]]}}<ref group="прим">Точнее, Vi не опрашивает клавиатуру напрямую, а получает от терминала код ASCII для нажатой клавиши или их сочетания. Следовательно, клавиша Ctrl может использоваться не со всеми клавишами, а только с теми, при нажатии которых совместно с Ctrl вводятся [[управляющие символы|управляющие символы ASCII]].</ref>. Эти обстоятельства повлияли на выбор используемых в редакторе клавиш. | ||
== | == Интерфейс == | ||
В отличие от многих привычных редакторов, vi имеет '''модальный''' интерфейс. Это означает, что одни и те же клавиши в разных режимах работы выполняют разные действия. В редакторе vi есть два основных режима: '''командный режим''' и '''режим вставки'''. По умолчанию работа начинается в командном режиме. | |||
В ''режиме вставки'' [[клавиатура]] используется для набора текста. Для выхода в командный режим используется клавиша {{key|Esc}} или комбинация {{key|Ctrl|c}}. | |||
В ''командном режиме'' алфавитные клавиши соответствуют командам перемещения и изменения текста. Так, команды <code>h</code>, <code>j</code>, <code>k</code>, <code>l</code> перемещают курсор на одну позицию влево, вниз, вверх, вправо соответственно, команда <code>x</code> удаляет один символ и т. д. Это позволяет работать без необходимости использования дополнительной клавиатуры и [[Сочетания клавиш|клавиш-модификаторов]], таких, как {{key|Ctrl}}, {{key|Alt}} и т. д. Более сложные операции редактирования получаются комбинацией простых, например, <code>2dw</code> удаляет два слова. Для полнотекстовых операций имеется возможность задавать команды [[ex (Unix)|ex]] в подобии командной строки, например, <code><nowiki>:1,.s/wiki/[[wiki]]/g</nowiki></code> заключит все вхождения последовательности символов ''wiki'' от начала текста до текущей позиции в двойные квадратные скобки. | |||
=== | === Часто используемые команды === | ||
* | * <code>/str</code> — Поиск строки str вперед. str может быть регулярным выражением | ||
* <code>?str</code> — Поиск строки str назад | |||
* <code>n</code> — Повторить поиск в том же направлении | |||
* <code>N</code> — Повторить поиск в обратном направлении | |||
* <code>:[range]s/old/new/[g]</code> — Заменить old на new в указанном диапазоне строк range. new и old могут быть регулярными выражениями, а range задается аналогично диапазону строк в редакторе ed. Например, для диапазона строк с 32 по 64 range будет <code>32,64</code>, первая строка соответствует <code>1</code>, последняя задается через символ <code>$</code>. Суффикс g означает заменить все вхождения old в строке, а не только первое. | |||
* <code>:e!</code> — перезагрузить текущий файл | |||
* <code>:33</code> — переместиться на 33-ю строку текстового файла | |||
* <code>i</code> — перейти в режим редактирования | |||
* <code>a</code> — перейти в режим редактирования после текущего символа | |||
* <code>u</code> — отменить последнее действие | |||
* <code>.</code> — повторить последнее действие | |||
* <code>x</code> — вырезать символ под курсором | |||
* <code>yy</code> — копировать строку | |||
* <code>dd</code> — вырезать строку | |||
* <code>p</code> — вставить | |||
* <code>J</code> — склеить две строки | |||
* <code>:w</code> — сохранить файл на диске | |||
* <code>:wq</code> — выход с сохранением файла | |||
* <code>ZZ</code> — выход с сохранением файла | |||
* <code>:q</code> — выход | |||
* <code>:q!</code> — выход без сохранения файла | |||
* <code>ZQ</code> — выход без сохранения файла | |||
* <code>:r</code> — вставить в документ другой файл | |||
< | Чтобы получить подробную помощь по редактору vi, выполните команду <code>man vi</code> в Unix shell (q — выход из справки). | ||
= {{- | == Другие редакторы == | ||
{{дополнить раздел|дата=2015-11-04}} | |||
vi | Спор между сторонниками vi и [[emacs]] является классическим примером «религиозных войн». | ||
== Клоны ''vi'' == | |||
Существуют клоны редактора vi с расширенной функциональностью: | |||
* [[Vim]] | |||
* [[Elvis (текстовый редактор)|elvis]] | |||
* [[:en:vile (editor)|vile]]{{ref|en}} | |||
* [[:en:nvi|nvi]]{{ref|en}} — реимплементация vi под свободной [[лицензия BSD|лицензией BSD]] | |||
* viper — плагин для [[Emacs]], эмулирующий команды vi | |||
== | == См. также == | ||
* [[Emacs]] | |||
* [[Nano]] | |||
== | == Примечания == | ||
{{примечания|group=прим}} | |||
{{примечания}} | |||
* | == Ссылки == | ||
* [http://www.gentoo.org/doc/en/vi-guide.xml?style=printable Знакомство с vi — метод шпаргалки]{{ref|en}} [https://web.archive.org/web/20090129181240/http://www.gentoo.org/doc/ru/vi-guide.xml?style=printable#doc_chap9_sect1 перевод на русский] Даниэль Роббинс, президент/исполнительный директор, [[Gentoo Technologies|Gentoo Technologies, Inc]]. | |||
* [http://www.intuit.ru/studies/courses/22/22/lecture/361?page=3 Лекция: Текстовые редакторы Vi и Vim — Г. В. Курячий] | |||
{{Текстовые редакторы}} | |||
{{Команды Unix}} | |||
[[Категория:Текстовые редакторы]] | |||
[[Категория:Программное обеспечение для Unix]] | |||
[[Категория:Vi]] | |||
Текущая версия от 13:45, 18 января 2026
Шаблон:Lowercase Шаблон:КарточкаШаблон:Сортировка: по изображениям{{#if:||Шаблон:Категория по дате}}Ошибка скрипта: Модуля «check for unknown parameters» не существует.Шаблон:ИТ:Общие проверки Шаблон:Нет сносок
vi (от англ. Шаблон:Lang-en2, произносится Шаблон:IPAc-en)<ref>Шаблон:CitationШаблон:Cbignore</ref>, по-русски читается «ви-ай») — серия текстовых редакторов операционных систем семейства UNIX.
История
Первая версия была написана Биллом Джоем в 1976 году.
В то время наиболее распространённым был редактор ed. Поскольку он был довольно сложным для «простого смертного», George Coulouris разработал редактор em (англ. Шаблон:Lang-en2 — «редактор для смертных»). Билл Джой модифицировал редактор em и назвал его en, а позже на его основе создал ex, в котором появился визуальный режим, вызывавшийся командой vi. Так как пользователи больше времени проводили в визуальном режиме, ex 2.0, ставший частью 2BSD, сразу запускался уже в нём. Так появился vi, бывший в то время всего лишь жёсткой ссылкой на ex<ref>Шаблон:Cite web</ref>.
Редактор писался для терминала ADM-3A, имевшего ограниченную клавиатуру: на ней не было выделенных клавиш-стрелок, а из модификаторов доступны только Шаблон:Клавиша и частично Шаблон:Клавиша<ref group="прим">Точнее, Vi не опрашивает клавиатуру напрямую, а получает от терминала код ASCII для нажатой клавиши или их сочетания. Следовательно, клавиша Ctrl может использоваться не со всеми клавишами, а только с теми, при нажатии которых совместно с Ctrl вводятся управляющие символы ASCII.</ref>. Эти обстоятельства повлияли на выбор используемых в редакторе клавиш.
Интерфейс
В отличие от многих привычных редакторов, vi имеет модальный интерфейс. Это означает, что одни и те же клавиши в разных режимах работы выполняют разные действия. В редакторе vi есть два основных режима: командный режим и режим вставки. По умолчанию работа начинается в командном режиме.
В режиме вставки клавиатура используется для набора текста. Для выхода в командный режим используется клавиша Шаблон:Key или комбинация Шаблон:Key.
В командном режиме алфавитные клавиши соответствуют командам перемещения и изменения текста. Так, команды h, j, k, l перемещают курсор на одну позицию влево, вниз, вверх, вправо соответственно, команда x удаляет один символ и т. д. Это позволяет работать без необходимости использования дополнительной клавиатуры и клавиш-модификаторов, таких, как Шаблон:Key, Шаблон:Key и т. д. Более сложные операции редактирования получаются комбинацией простых, например, 2dw удаляет два слова. Для полнотекстовых операций имеется возможность задавать команды ex в подобии командной строки, например, :1,.s/wiki/[[wiki]]/g заключит все вхождения последовательности символов wiki от начала текста до текущей позиции в двойные квадратные скобки.
Часто используемые команды
/str— Поиск строки str вперед. str может быть регулярным выражением?str— Поиск строки str назадn— Повторить поиск в том же направленииN— Повторить поиск в обратном направлении:[range]s/old/new/[g]— Заменить old на new в указанном диапазоне строк range. new и old могут быть регулярными выражениями, а range задается аналогично диапазону строк в редакторе ed. Например, для диапазона строк с 32 по 64 range будет32,64, первая строка соответствует1, последняя задается через символ$. Суффикс g означает заменить все вхождения old в строке, а не только первое.:e!— перезагрузить текущий файл:33— переместиться на 33-ю строку текстового файлаi— перейти в режим редактированияa— перейти в режим редактирования после текущего символаu— отменить последнее действие.— повторить последнее действиеx— вырезать символ под курсоромyy— копировать строкуdd— вырезать строкуp— вставитьJ— склеить две строки:w— сохранить файл на диске:wq— выход с сохранением файлаZZ— выход с сохранением файла:q— выход:q!— выход без сохранения файлаZQ— выход без сохранения файла:r— вставить в документ другой файл
Чтобы получить подробную помощь по редактору vi, выполните команду man vi в Unix shell (q — выход из справки).
Другие редакторы
Шаблон:Дополнить раздел Спор между сторонниками vi и emacs является классическим примером «религиозных войн».
Клоны vi
Существуют клоны редактора vi с расширенной функциональностью:
- Vim
- elvis
- vileШаблон:Ref
- nviШаблон:Ref — реимплементация vi под свободной лицензией BSD
- viper — плагин для Emacs, эмулирующий команды vi
См. также
Примечания
Шаблон:Примечания Шаблон:Примечания
Ссылки
- Знакомство с vi — метод шпаргалкиШаблон:Ref перевод на русский Даниэль Роббинс, президент/исполнительный директор, Gentoo Technologies, Inc.
- Лекция: Текстовые редакторы Vi и Vim — Г. В. Курячий