Не самостоятельный -ответ, но у меня есть дополнительный момент, который поле для комментариев было слишком маленьким, чтобы его вместить.
Чтобы лучше понять идею о том, что каталог в соответствующих файловых системах — это больше, чем просто путь, попробуйте переместить текущий рабочий каталог другого процесса :в одну оболочку, запустите интерактивный сеанс Python:
$ python
>> import os
>> os.getcwd()
'/home/you/hocus'
Затем перейдите в другую оболочку и переместите этот каталог:
$ cd /home/you
$ mv hocus pocus
Вернуться к исходному:
$ python >> import os >> os.getcwd() '/home/you/hocus' >> os.getcwd() '/home/you/pocus'
Vim действительно происходит от оригинального vi Билла Джоя. Однако в настоящее время, поскольку разработка для vim значительно больше, чем для vi, многие дистрибутивы (, включая CentOS ), эмулируют исходное поведение vi, используя vim, скомпилированный с меньшим количеством функций.
Чтобы ответить на ваши вопросы/непонятки:
Когда вы открываете vi, он открывает тот же начальный экран, что и vim (, который описывает себя как vim ), потому что на самом деле это урезанный -вниз vim, который вы используете, а не исходный vi.
/usr/bin/vi
и /usr/bin/vim
— это разные двоичные файлы, потому что они оба на самом деле скомпилированы из исходного кода vim, но с разными функциями (options ).
Подсветка синтаксиса недоступна при использовании vi file.java
, но доступна для vim file.java
из-за разных опций, с которыми они были скомпилированы. Если вы внимательно посмотрите на вывод /usr/bin/vim --version
и /usr/bin/vi --version
, вы увидите, что первый показывает +syntax
среди других функций, тогда как последний имеет -syntax
. Этот список — это то, что я имею в виду в отношении «функций, с которыми он был скомпилирован».
Я надеюсь, что это поможет, и я понимаю, почему это может сбивать с толку.
Из ваших выходов vi --version
и vim --version
:
vi --version:
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Dec 15 2020 16:43:23)
Included patches: 1-207, 209-629
Modified by <bugzilla@redhat.com>
Compiled by <bugzilla@redhat.com>
Small version without GUI. Features included (+) or not (-):
vim --version:
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Dec 15 2020 16:44:08)
Included patches: 1-207, 209-629
Modified by <bugzilla@redhat.com>
Compiled by <bugzilla@redhat.com>
Small version without GUI. Features included (+) or not (-):
... Я бы заключил следующее:
15 декабря 2020 г., 16 :43 :23 любого часового пояса, который использовал сборщик пакетов RedHat, он распаковал vim 7.4
исходный код, применил к нему большое количество исправлений, а затем приступил к сборке. двоичный файл с набором параметров конфигурации времени компиляции -, который был разработан, чтобы быть максимально компактным и максимально совместимым с классическим vi
, даже если это означало отключение функций удобства для пользователя -. Получившийся двоичный файл должен был называться /usr/bin/vi
. Это будет упаковано как пакет RPM vim-minimal
.
Примечание :, хотя полученный двоичный файл называется vi
, это по-прежнему, несомненно, Vim -, только в режиме совместимости vi
по умолчанию.
Затем, в 16 :44 :08, было запущено другое задание сборки пакета с тем же исходным кодом и исправлениями, но с другими параметрами конфигурации времени компиляции -.Это задание было сконфигурировано для создания более современной и функциональной конфигурации, даже несмотря на то, что оно будет занимать несколько больше места на диске и в некоторых отношениях может незначительно отличаться от классического vi
. Бинарный файл, полученный в результате этой компиляции, будет называться /usr/bin/vim
и упакован как vim-enhanced
.
(Поскольку в этой версии указано Small version without GUI
, это не та версия, упакованная как vim-X11
-, которая будет третьим запуском сборки и еще одним RPM-пакетом.)
Оригинал vi
был написан Биллом Джоем в 1970-х годах, выпущен как часть BSD Unix в 1978 году и с тех пор лицензирован для различных коммерческих Unix. В 1983 году право собственности на кодовую базу было передано AT&T как часть их UNIX System V. В результате, пока в 2002 году правила лицензирования не были смягчены, распространять могли только люди и компании с исходной лицензией AT&T vi
. Итак, люди, ищущие бесплатный редактор в стиле Unix -, начали писать клоны оригинального vi
, чтобы иметь версию, которая работала бы так же, но не требовала дорогостоящей лицензии.
vim
был одним из таких клонов с улучшениями. Он был выпущен для широкой публики в 1991 году и с тех пор подвергался интенсивной -кросс-платформенной разработке. Это сделало его более функциональным, чем исходный vi
, и, вероятно, в настоящее время это самый распространенный из клонов vi
.
Пакет RedHat для Vim разделяет двоичные файлы, сгенерированные из одного пакета исходного кода, на несколько двоичных пакетов RPM :vim-common
, vim-filesystem
, vim-minimal
, vim-enhanced
и vim-X11
. Из них vim-filesystem
определяет некоторые каталоги, в которые другие пакеты могут помещать синтаксис или определения типов файлов или другие файлы, добавляющие функциональность Vim. vim-common
зависит от пакета vim-filesystem
и содержит файлы, необходимые для vim-enhanced
или vim-X11
. Файлы интерактивной справки в vim-common
также могут использоваться vim-minimal
, но не являются строго обязательными.
vim-minimal
предоставляет [/usr]/bin/vi
, а также двоичные файлы /usr/bin/ex
, /usr/bin/rvi
, /usr/bin/[r]view
,конфигурационный файл /etc/virc
и их справочные страницы.
vim-enhanced
предоставляет /usr/bin/vim
более современные настройки времени компиляции -по умолчанию, но по-прежнему только с пользовательским интерфейсом на основе терминала -. Это явно требует Perl и vim-common
. vim-X11
предоставляет версию Vim с полной поддержкой графического интерфейса X11 и мыши (с двоичным файлом с именем/usr/bin/gvim
)и имеет те же требования, что и vim-enhanced
, а также набор значков и библиотек X11.
Даже если вы выберете «минимальную установку» в установщике RedHat, он, вероятно, будет включать vim-minimal
. Но vim-enhanced
или vim-X11
будут совершенно необязательными.
Если вы хотите понять процесс на более глубоком уровне, я бы посоветовал вам скачать соответствующий пакет .src.rpm
, из которого собраны все эти бинарные RPM, распаковать его в пустой каталог и изучить файл vim.spec
. в корневом каталоге. Этот файл содержит точные параметры конфигурации для каждой версии Vim.
Если вас интересуют традиционные vi
, , вы можете найти их по адресу ex -vi.sourceforge.net . Но большинство современных дистрибутивов Linux (, которые не нацелены на встраиваемые платформы или иным образом ограничивают себя абсолютным минимальным размером ), скорее всего, будут использовать Vim в качестве замены традиционного vi
.