Vi

vi, редактирующий программу Hello, world! на языке Си. Тильды обозначают строки, отсутствующие в файле.
Тип |  Текстовый редактор
Автор |  Билл Джой
Разработчик |  Билл Джой
Написана на |  Си[1]
Операционная система  |  Unix-подобные
Первый выпуск |  1976; 49 лет назад (1976)
Последняя версия |

* 050325 (25 марта 2005)[2]

Репозиторий |  ex-vi.cvs.sourceforge.net/…
Лицензия |  Лицензия BSD или CDDL
Сайт |  ex-vi.sourceforge.net (англ.)
Медиафайлы на Викискладе

В статье есть список источников, но не хватает сносок.

Без сносок сложно определить, из какого источника взято каждое отдельное утверждение. Вы можете улучшить статью, проставив сноски на источники, подтверждающие информацию. Сведения без сносок могут быть удалены. (22 марта 2019)

|

vi (от англ. visual, по-русски читается «ви-ай») — серия текстовых редакторов операционных систем семейства UNIX.

## Содержание

* 1 История
* 2 Интерфейс
* 2.1 Часто используемые команды
* 3 Другие редакторы
* 4 Клоны vi
* 5 См. также
* 6 Примечания
* 7 Ссылки

## История

[править | править код]

Первая версия была написана Биллом Джоем в 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 — выход из справки).

## Другие редакторы

[править | править код]

Этот раздел нужно дополнить.

Пожалуйста, улучшите и дополните раздел. (4 ноября 2015)

|

Спор между сторонниками vi и emacs является классическим примером «религиозных войн».

## Клоны vi

[править | править код]

Существуют клоны редактора vi с расширенной функциональностью:

* Vim
* elvis
* vile (англ.)
* nvi (англ.) — реимплементация vi под свободной лицензией BSD
* viper — плагин для Emacs, эмулирующий команды vi

## См. также

[править | править код]

* Emacs
* Nano

## Примечания

[править | править код]

1. ↑ Точнее, Vi не опрашивает клавиатуру напрямую, а получает от терминала код ASCII для нажатой клавиши или их сочетания. Следовательно, клавиша Ctrl может использоваться не со всеми клавишами, а только с теми, при нажатии которых совместно с Ctrl вводятся управляющие символы ASCII.

1. ↑ The vi Open Source Project on Open Hub: Languages Page — 2006.
2. ↑ The Traditional Vi
3. ↑ 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 — Г. В. Курячий

Текстовые редакторы

Unix / Linux|

* Ed
* Elvis
* gedit
* Kate
* KWrite
* Leafpad
* Nano
* NEdit
* Sed
* Mousepad
* Vi

DOS|

* ChiWriter
* Multi-Edit
* WordPerfect
* Лексикон
* Микромир
* Слово и Дело
* Фотон

Windows|

* AkelPad
* BirEdit
* Bred
* Crimson Editor
* EditPlus
* EmEditor
* Notepad2
* Notepad++
* Notepad GNU
* PolyEdit
* Programmer’s Notepad
* PSPad
* RJ TextEd
* SoloPad
* SynWrite
* Write
* WinEdt
* WordPad
* Блокнот

Кроссплатформенные|

* Acme
* Atom
* CKeditor
* Emacs
* J
* JEdit
* JOE
* Komodo Edit
* Medit
* SciTE
* Sublime Text
* UltraEdit
* Vim
* Geany
* CudaText
* TEA
* Textadept

SDK|

* Colorer
* Scintilla
* SynEdit

Функции|

* Автодополнение
* Автоформатирование
* Подсветка синтаксиса
* Предиктивный ввод
* Сворачивание
* Отступы

Команды Unix

Утилиты POSIX.1-2008

* admin
* alias
* ar
* asa
* at
* awk
* basename
* batch
* bc
* bg
* c99
* cal
* cat
* cd
* cflow
* chgrp
* chmod
* chown
* cksum
* cmp
* comm
* command
* compress
* cp
* crontab
* csplit
* ctags
* cut
* cxref
* date
* dd
* delta
* df
* diff
* dirname
* du
* echo
* ed
* env
* ex
* expand
* expr
* false
* fc
* fg
* file
* find
* fold
* fort77
* fuser
* gencat
* get
* getconf
* getopts
* grep
* hash
* head
* iconv
* id
* ipcrm
* ipcs
* jobs
* join
* kill
* lex
* link
* ln
* locale
* localedef
* logger
* logname
* lp
* ls
* m4
* mailx
* make
* man
* mesg
* mkdir
* mkfifo
* more
* mv
* newgrp
* nice
* nl
* nm
* nohup
* od
* paste
* patch
* pathchk
* pax
* pr
* printf
* prs
* ps
* pwd
* qalter
* qdel
* qhold
* qmove
* qmsg
* qrerun
* qrls
* qselect
* qsig
* qstat
* qsub
* read
* renice
* rm
* rmdel
* rmdir
* sact
* sccs
* sed
* sh
* sleep
* sort
* split
* strings
* strip
* stty
* tabs
* tail
* talk
* tee
* test
* time
* touch
* tput
* tr
* true
* tsort
* tty
* type
* ulimit
* umask
* unalias
* uname
* uncompress
* unexpand
* unget
* uniq
* unlink
* uucp
* uudecode
* uuencode
* uustat
* uux
* val
* vi
* wait
* wc
* what
* who
* write
* xargs
* yacc
* zcat

GNU Coreutils

Файловые утилиты|

* chgrp
* chown
* chmod
* cp
* dd
* df
* dir
* dircolors
* install
* ln
* ls
* mkdir
* mkfifo
* mknod[англ.]
* mv
* rm
* rmdir
* shred
* sync
* touch
* vdir

Текстовые утилиты|

* cat
* cksum
* comm
* csplit
* cut
* expand
* fmt
* fold
* head
* join
* md5sum
* nl
* od
* paste
* ptx[англ.]
* pr
* sha1sum
* sort
* split
* sum
* tac
* tail
* tr
* tsort[англ.]
* unexpand
* uniq
* wc

Shell-утилиты|

* basename
* chroot
* date
* dirname
* du
* echo
* env
* expr
* factor[англ.]
* false
* groups[англ.]
* hostid
* id
* link
* logname
* nice
* nohup
* pathchk
* pinky
* printenv[англ.]
* printf
* pwd
* readlink
* seq
* sleep
* stat
* stty
* tee
* test
* true
* tty
* uname
* unlink
* users
* who
* whoami
* yes

другие утилиты|

* size
* Start-stop-daemon
* Surfraw

Некоторые внешние ссылки в этой статье ведут на сайты, занесённые в спам-лист.

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

Список проблемных ссылок

* lib.ru/unixhelp/vi.txt

|