Зачем предоставлять vi и vim?

Я думаю, что я прав, говоря, что RedHat и другие дистрибутивы предоставляют как vi, так и Vim.

Кто-нибудь знает, что стоит за предоставлением обоих, когда предположительно, если Vim предоставлен, он покрывает функциональность vi?

ETA: Это не символическая ссылка, это разные двоичные файлы.

$ ls -lh /bin/vi
-rwxr-xr-x 1 root root 747K Jul  7  2012 /bin/vi
$ ls -lh /usr/bin/vim
-rwxr-xr-x 1 root root 1.9M Jul  7  2012 /usr/bin/vim

2 ответа

RedHat и его варианты / клоны, как правило, предоставляют / bin / vi, который, по сути, Vim скомпилирован с минимальным набором функций и меньшим количеством библиотечных зависимостей, поэтому он с большей вероятностью сможет работать даже с поврежденной файловой системой. Он также меньше, чем "нормальная" или "огромная" версия Vim, которая когда-то рассматривалась, даже если сейчас она не имеет большого значения.

По сути, это "запасной вариант" для пользователей и администраторов, которым нужен текстовый редактор и которые хотя бы минимально знакомы с vi. Для тех, кто хочет иметь более мощный редактор, им обычно приходится явно устанавливать "vim-extended" или что-то еще, что в их дистрибутиве предусмотрен "полнофункциональный" Vim.

Я видел даже более крошечные версии vi или vi-подобные редакторы, которые не являются урезанным Vim, который используют некоторые компактные дистрибутивы. Busybox интегрирует один.

Старый вопрос, но это все еще правда. Redhat предоставляет vi, устраняющий зависимость от /usr (за исключением ftdetect - вероятно, безвредного) и целого ряда модулей, которые когда-то имели проблемы с безопасностью. Vim является частью расширенного vim и не устанавливается по умолчанию в серверных сборках. Он включает в себя скрипты в /etc/profile.d для псевдонима vim, если он не установлен, и euid > 200. Также есть два файла rc для каждого, .virc для vi и.vimrc для vim, что приводит к множеству головных болей в отношении почему в одном месте он работает, а в другом - нет.

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

(vi|vim) -V
strace (/usr/bin/vi|/usr/bin/vim) -c q # quit immediately

Нет, вы не правы.

Redhat и все остальные дистрибутивы предоставляют vi и vim команды, но они не являются отдельными исполняемыми файлами: vi просто символическая ссылка на vim, Это происходит на всех системах UNIXy, потому что vi Команда является частью стандарта и, как таковая, должна предоставляться системой, если она претендует на совместимость с UNIX.

Предположительно, в какой-то момент большинство дистрибутивов решили использовать vim вместо оригинала vi (по неизвестным мне причинам: совместимость архитектуры? современные функции? другие?). Вот почему вы получаете оба vi а также vim,

Другие вопросы по тегам