Я хотел понять разницу между исполняемыми файлами vi
и vim
. which
привел меня к /usr/bin/
, и там я нашел следующие символические ссылки:
/usr/bin/vi -> /etc/alternatives/vi
/usr/bin/vim -> /etc/alternatives/vim
Переходя к /etc/alternatives/
, я увидел, что эти имена связаны с /usr/bin/
:
/etc/alternatives/vi -> /usr/bin/vim.gnome
/etc/alternatives/vim -> /usr/bin/vim.gnome
Подумав немного, почему это так, я пришел к выводу, что оба они указывают на один и тот же исполняемый файл, следовательно, они абсолютно одинаковы.
1117 Однако что-то привлекло мое внимание в тот момент; эта ссылка:
/etc/alternatives/view -> /usr/bin/vim.gnome
сопровождается этой ссылкой:
/usr/bin/view -> /etc/alternatives/view
Теперь это странно, поскольку я знаю, что когда я запускаю view
, это не то же самое, что и когда я бегу vim
; он открывает режим только для чтения файла, заданного в качестве аргумента. Знает ли двоичный код vim.gnome
, что связывалось с ним при выполнении?
(кстати, та же проблема с vimdiff
)
У вас есть объяснение этому?
Это объяснено в man vim
:
Vim ведет себя по-другому, в зависимости от названия команды (исполняемый файл может все еще быть тем же файлом).
энергия:
"нормальный" путь, все - значение по умолчанию.исключая:
Запускаются в режиме Ex. Перейдите к режиму Normal с ": vi" команда. Может также быть сделан с "-e" аргументом.представление:
Запускаются в режиме только для чтения. Вы будете защищены от записи файлов. Может также быть сделан с "-R" аргументом.gvim gview:
версия GUI. Запускает новое окно. Может также быть сделан с "-g" аргументом.evim eview:
версия GUI в легком режиме. Запускает новое окно. Может также быть сделан с "-y" аргументом.rvim rview rgvim rgview
Как вышеупомянутое, но с ограничениями. Это не будет possi‐ ble, чтобы запустить команды оболочки или приостановить Vim. Может также быть сделан с "-Z" аргументом.
, Другими словами, энергия обнаружит имя, это было вызвано как, и действуйте соответственно. Другой пример программы, которая ведет себя по-другому, в зависимости от которого имени он был выполнен, как bash
, который действует как минимальная оболочка POSIX, если названо как sh
(см. ВЫЗОВ в man bash
).