Зачем предоставлять 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
,