Vi: различия между версиями
[отпатрулированная версия] | [отпатрулированная версия] |
Mobipak (обсуждение | вклад) →Использование регулярных выражений: : они все такие же, как и в остальных регулярных выражения: не нужно |
Myron472 (обсуждение | вклад) отмена правки 138342299 участника 188.243.182.128 (обс.) Метка: отмена |
||
(не показаны 43 промежуточные версии 26 участников) | |||
Строка 1: | Строка 1: | ||
{{lowercase}} |
{{lowercase}} |
||
{{Карточка программы |
|||
⚫ | |||
| name = vi |
|||
| logo = |
|||
| screenshot = NetBSD 6.1 vi C Hello World.png |
|||
| caption = vi, редактирующий программу [[Hello, world!]] на языке [[Си (язык программирования)|Си]]. Тильды обозначают строки, отсутствующие в файле. |
|||
| developer = [[Джой, Билл|Билл Джой]] |
|||
| released = {{Start date and age|df=yes|1976}} |
|||
| latest release version = |
|||
| latest release date = |
|||
| latest preview version = |
|||
| latest preview date = |
|||
| operating system = [[Unix-подобная операционная система|Unix-подобные]] |
|||
| programming language = |
|||
| genre = [[Текстовый редактор]] |
|||
| license = [[Лицензия BSD]] или [[CDDL]] |
|||
| website = |
|||
}}{{Нет сносок|дата=2019-03-22}} |
|||
⚫ | |||
⚫ | |||
⚫ | |||
Первая версия была написана [[Джой, Билл|Биллом Джоем]] в [[1976 год]]у. |
Первая версия была написана [[Джой, Билл|Биллом Джоем]] в [[1976 год]]у. |
||
В то время наиболее распространённым был редактор [[ed]]. Поскольку он был довольно сложным для «простого смертного», George Coulouris разработал редактор em (editor for mortals — редактор для смертных). Билл Джой модифицировал редактор em и назвал его en, а |
В то время наиболее распространённым был редактор '''[[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/ |deadlink=no }}</ref>. |
||
Редактор писался для терминала [[ADM-3A]], имевшего ограниченную клавиатуру: на ней не было выделенных [[клавиши управления курсором|клавиш-стрелок]], а из модификаторов доступны только {{клавиша|[[Shift (Клавиша)|Shift]]}} и частично {{Клавиша|[[Ctrl]]}}<ref group="прим">Точнее, Vi не опрашивает клавиатуру напрямую, а получает от терминала код ASCII для нажатой клавиши или их сочетания. Следовательно, клавиша Ctrl может использоваться не со всеми клавишами, а только с теми, при нажатии которых совместно с Ctrl вводятся [[управляющие символы|управляющие символы ASCII]].</ref>. Эти обстоятельства повлияли на выбор используемых в редакторе клавиш. |
|||
⚫ | |||
⚫ | |||
В отличие от многих привычных редакторов, vi имеет '''модальный''' интерфейс. Это означает, что одни и те же клавиши в разных режимах работы выполняют разные действия. В редакторе vi есть два основных режима: '''командный режим''' и '''режим вставки'''. По умолчанию |
В отличие от многих привычных редакторов, vi имеет '''модальный''' интерфейс. Это означает, что одни и те же клавиши в разных режимах работы выполняют разные действия. В редакторе vi есть два основных режима: '''командный режим''' и '''режим вставки'''. По умолчанию работа начинается в командном режиме. |
||
В ''режиме вставки'' [[клавиатура]] используется для набора текста. Для выхода в командный режим используется клавиша {{key|Esc}} или комбинация {{key|Ctrl|c}}. |
В ''режиме вставки'' [[клавиатура]] используется для набора текста. Для выхода в командный режим используется клавиша {{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>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> |
* <code>?str</code> — Поиск строки str назад |
||
* <code> |
* <code>n</code> — Повторить поиск в том же направлении |
||
* <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>N</code> — Повторить поиск в обратном направлении |
|||
⚫ | * <code>:[range]s/old/new/[g]</code> |
||
* <code>:e!</code> — перезагрузить текущий файл |
* <code>:e!</code> — перезагрузить текущий файл |
||
* <code>:33</code> — |
* <code>:33</code> — переместиться на 33-ю строку текстового файла |
||
* <code>i</code> — перейти в режим редактирования |
* <code>i</code> — перейти в режим редактирования |
||
* <code>a</code> |
* <code>a</code> — перейти в режим редактирования после текущего символа |
||
* <code>u</code> — отменить последнее действие |
* <code>u</code> — отменить последнее действие |
||
* <code>.</code> |
* <code>.</code> — повторить последнее действие |
||
* <code>x</code> — |
* <code>x</code> — вырезать символ под курсором |
||
* <code>yy</code> |
* <code>yy</code> — копировать строку |
||
* <code>dd</code> — вырезать строку |
* <code>dd</code> — вырезать строку |
||
* <code>p</code> |
* <code>p</code> — вставить |
||
* <code>J</code> |
* <code>J</code> — склеить две строки |
||
* <code>:w</code> |
* <code>:w</code> — сохранить файл на диске |
||
* <code>:wq</code> |
* <code>:wq</code> — выход с сохранением файла |
||
* <code> |
* <code>ZZ</code> — выход с сохранением файла |
||
* <code>:q |
* <code>:q</code> — выход |
||
* <code>:q!</code> — выход без сохранения файла |
|||
* <code> |
* <code>ZQ</code> — выход без сохранения файла |
||
* <code>:r</code> — вставить в документ другой файл |
|||
Чтобы получить подробную помощь по редактору vi, выполните команду <code>man vi</code> в Unix shell (q — выход из справки). |
Чтобы получить подробную помощь по редактору vi, выполните команду <code>man vi</code> в Unix shell (q — выход из справки). |
||
== Другие редакторы == |
== Другие редакторы == |
||
{{незавершенный раздел}} |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
На данный момент имеются реализации vi для различных операционных систем. |
|||
⚫ | |||
⚫ | |||
* [[Vim]] |
* [[Vim]] |
||
* [[Elvis (текстовый редактор)|elvis]] |
|||
* [[elvis]] |
|||
* [[:en:vile (editor)|vile]] |
* [[:en:vile (editor)|vile]]{{ref-en}} |
||
* [[:en:nvi|nvi]]{{ref-en}} — реимплементация vi под свободной [[лицензия BSD|лицензией BSD]] |
|||
* [[viper]] |
|||
* viper — плагин для [[Emacs]], эмулирующий команды vi |
|||
* [[:en:nvi|nvi]] {{ref-en}} - полная копия по функциональности, содержит только свободный код. |
|||
== См. также == |
== См. также == |
||
{{Портал|Свободное программное обеспечение}} |
|||
* [[Emacs]] |
* [[Emacs]] |
||
* [[Nano]] |
* [[Nano]] |
||
⚫ | |||
⚫ | * [http://www.gentoo.org/doc/en/vi-guide.xml?style=printable Знакомство с vi — метод шпаргалки] |
||
⚫ | |||
⚫ | |||
== Примечания == |
== Примечания == |
||
{{примечания|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]]. |
||
⚫ | |||
⚫ | |||
{{Текстовые редакторы}} |
{{Текстовые редакторы}} |
||
{{Команды Unix}} |
|||
[[Категория:Текстовые редакторы]] |
[[Категория:Текстовые редакторы]] |
||
[[Категория:Программное обеспечение для |
[[Категория:Программное обеспечение для Unix]] |
||
[[Категория:Vi]] |
|||
{{спам-ссылки|1= |
|||
* lib.ru/unixhelp/vi.txt |
|||
}} |
Текущая версия от 21:19, 25 июня 2024
vi | |
---|---|
| |
Тип | Текстовый редактор |
Автор | Билл Джой |
Разработчик | Билл Джой |
Написана на | Си[1] |
Операционная система | Unix-подобные |
Первый выпуск | 1976 |
Последняя версия | |
Репозиторий | ex-vi.cvs.sourceforge.net/… |
Лицензия | Лицензия BSD или CDDL |
Сайт | ex-vi.sourceforge.net (англ.) |
Медиафайлы на Викискладе |
В статье есть список источников, но не хватает сносок. |
vi (от англ. visual, по-русски читается «ви-ай») — серия текстовых редакторов операционных систем семейства UNIX.
История
[править | править код]Первая версия была написана Биллом Джоем в 1976 году.
В то время наиболее распространённым был редактор ed. Поскольку он был довольно сложным для «простого смертного», George Coulouris разработал редактор em (англ. editor for mortals — «редактор для смертных»). Билл Джой модифицировал редактор em и назвал его en, а позже на его основе создал ex, в котором появился визуальный режим, вызывавшийся командой vi. Так как пользователи больше времени проводили в визуальном режиме, ex 2.0, ставший частью 2BSD, сразу запускался уже в нём. Так появился vi, бывший в то время всего лишь жёсткой ссылкой на ex[3].
Редактор писался для терминала ADM-3A, имевшего ограниченную клавиатуру: на ней не было выделенных клавиш-стрелок, а из модификаторов доступны только ⇧ Shift и частично Ctrl[прим 1]. Эти обстоятельства повлияли на выбор используемых в редакторе клавиш.
Интерфейс
[править | править код]В отличие от многих привычных редакторов, vi имеет модальный интерфейс. Это означает, что одни и те же клавиши в разных режимах работы выполняют разные действия. В редакторе vi есть два основных режима: командный режим и режим вставки. По умолчанию работа начинается в командном режиме.
В режиме вставки клавиатура используется для набора текста. Для выхода в командный режим используется клавиша Esc или комбинация Ctrl+c.
В командном режиме алфавитные клавиши соответствуют командам перемещения и изменения текста. Так, команды h
, j
, k
, l
перемещают курсор на одну позицию влево, вниз, вверх, вправо соответственно, команда x
удаляет один символ и т. д. Это позволяет работать без необходимости использования дополнительной клавиатуры и клавиш-модификаторов, таких, как Ctrl, Alt и т. д. Более сложные операции редактирования получаются комбинацией простых, например, 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 (англ.)
- nvi (англ.) — реимплементация vi под свободной лицензией BSD
- viper — плагин для Emacs, эмулирующий команды vi
См. также
[править | править код]Примечания
[править | править код]- ↑ Точнее, Vi не опрашивает клавиатуру напрямую, а получает от терминала код ASCII для нажатой клавиши или их сочетания. Следовательно, клавиша Ctrl может использоваться не со всеми клавишами, а только с теми, при нажатии которых совместно с Ctrl вводятся управляющие символы ASCII.
- ↑ The vi Open Source Project on Open Hub: Languages Page — 2006.
- ↑ The Traditional Vi
- ↑ Bill Joy’s greatest gift to man — the vi editor . Дата обращения: 29 сентября 2017. Архивировано 3 июня 2014 года.
Ссылки
[править | править код]- Знакомство с vi — метод шпаргалки (англ.) перевод на русский Даниэль Роббинс, президент/исполнительный директор, Gentoo Technologies, Inc.
- [lib.ru/unixhelp/vi.txt Очень кратко о редакторе «VI»]
- Лекция: Текстовые редакторы Vi и Vim — Г. В. Курячий
Некоторые внешние ссылки в этой статье ведут на сайты, занесённые в спам-лист |