Цикл vi/vim/view /etc/alternatives
Я хотел понять разницу между исполняемыми файлами 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
Подумав немного, почему это так, я пришел к выводу, что оба указывают на один и тот же исполняемый файл, следовательно, они абсолютно одинаковы.
Однако, что-то привлекло мое внимание в тот момент; эта ссылка:
/etc/alternatives/view -> /usr/bin/vim.gnome
сопровождается этой ссылкой:
/usr/bin/view -> /etc/alternatives/view
Теперь это странно, так как я знаю, что когда я бегу view
это не то же самое, что когда я бегу vim
; он открывает режим только для чтения файла, заданного в качестве аргумента. Есть ли vim.gnome
бинарный знает, что связывалось с ним при выполнении, как-нибудь?
(кстати, такая же проблема с vimdiff
)
У вас есть объяснение этому?
1 ответ
Это объясняется в man vim
:
Vim ведет себя по-разному, в зависимости от имени команды (исполняемый файл может быть тем же файлом).
ВИМ:
"Нормальный" способ, все по умолчанию.например:
Запуск в режиме Ex. Перейдите в обычный режим с помощью команды:: vi. Также может быть сделано с аргументом "-e".Посмотреть:
Запустите в режиме только для чтения. Вы будете защищены от записи файлов. Можно также сделать с аргументом "-R".gvim gview:
Версия с графическим интерфейсом. Запускает новое окно. Можно также сделать с аргументом "-g".evim eview:
Версия с графическим интерфейсом в простом режиме. Запускает новое окно. Можно также сделать с аргументом "-y".rvim rview rgvim rgview
Как и выше, но с ограничениями. Невозможно запустить команды оболочки или приостановить Vim. Можно также сделать с аргументом "-Z".
Другими словами, vim обнаружит имя, под которым оно было вызвано, и будет действовать соответственно. Еще один пример программы, которая ведет себя по-разному в зависимости от того, какое имя она запускалась как есть bash
которая действует как минимальная оболочка POSIX, если называется sh
(см. ПРИЗВАНИЕ в man bash
).