Изучил, но все еще не совсем понял, что такое Vi vs. Vim

Не самостоятельный -ответ, но у меня есть дополнительный момент, который поле для комментариев было слишком маленьким, чтобы его вместить.

Чтобы лучше понять идею о том, что каталог в соответствующих файловых системах — это больше, чем просто путь, попробуйте переместить текущий рабочий каталог другого процесса :в одну оболочку, запустите интерактивный сеанс 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'
0
03.01.2021, 14:32
2 ответа

Vim действительно происходит от оригинального vi Билла Джоя. Однако в настоящее время, поскольку разработка для vim значительно больше, чем для vi, многие дистрибутивы (, включая CentOS ), эмулируют исходное поведение vi, используя vim, скомпилированный с меньшим количеством функций.

Чтобы ответить на ваши вопросы/непонятки:

  1. Когда вы открываете vi, он открывает тот же начальный экран, что и vim (, который описывает себя как vim ), потому что на самом деле это урезанный -вниз vim, который вы используете, а не исходный vi.

  2. /usr/bin/viи /usr/bin/vim— это разные двоичные файлы, потому что они оба на самом деле скомпилированы из исходного кода vim, но с разными функциями (options ).

  3. Подсветка синтаксиса недоступна при использовании vi file.java, но доступна для vim file.javaиз-за разных опций, с которыми они были скомпилированы. Если вы внимательно посмотрите на вывод /usr/bin/vim --versionи /usr/bin/vi --version, вы увидите, что первый показывает +syntaxсреди других функций, тогда как последний имеет -syntax. Этот список — это то, что я имею в виду в отношении «функций, с которыми он был скомпилирован».

Я надеюсь, что это поможет, и я понимаю, почему это может сбивать с толку.

2
18.03.2021, 22:39

Из ваших выходов 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.

1
18.03.2021, 22:39

Теги

Похожие вопросы