Глобально заменить Vi на Vim на Fedora

8

В системах на основе Debian система альтернатив обрабатывает viи vimисполняемый файл. Так что, если vimустановлен и вы выполняете vi, вы также получите vim, что я считаю очень хорошим, потому что я абсолютно ненавижу классику vi.

На Fedora 17 "Beefy Miracle" система альтернатив, очевидно, не справляется ни с одним из двух. Но есть файл профиля, в /etc/profile.d/vim.shкоторый добавляется псевдоним оболочки для выполнения viexecute vim. По некоторым причинам это не делает этого для системных пользователей, включая root.

Но даже если я установлю псевдоним для всех пользователей вручную, при звонке sudo viя начинаю классический viвместо vim. Это возможно потому, что sudo не запускает оболочку или файлы профиля выполняются только в интерактивных сеансах оболочки.

То, что я сейчас ищу, - это способ viполностью удалить classic, чтобы создать символическую ссылку, которая даже выдержит обновления системы. Как я могу удалить классический, viно не vimна Fedora 17? Или есть даже лучший способ?

Обновление : с yum provides viя узнал, что viпредусмотрено пакетом vim-minimal. Но я не могу просто удалить его, потому что он автоматически удаляет пакет sudoс ним. Даже если я удаляю его, а затем пытаюсь установить sudoснова, vim-minimalон снова устанавливается как зависимый.

Обновление : По запросу вывод rpm -qf /usr/bin/vi:

vim-minimal-7.3.444-1.fc17.x86_64

И ls -l /usr/bin/vi:

-rwxr-xr-x. 1 root root 782248 13. Feb 2012  /usr/bin/vi
Американские экспедиционные войска
источник
rm /usr/bin/vi; ln -s /usr/bin/vim /usr/bin/vi, Не ответ, потому что я лично нашел бы лучший способ (или набрал бы vim, если бы я хотел vim).
Иордания
@jordanm Я имел в виду именно это, когда попросил сделать символическую ссылку пережившей обновление. Как убедиться, что ссылка не перезаписывается при vim-minimalобновлении пакета?
AEF
Это /usr/bin/viсимволическая ссылка (на что) или обычный файл на Fedora? Если обычный файл, из какого пакета?
Жиль "ТАК - перестань быть злым"
@ Жиль, я не понимаю твой вопрос.
AEF
Опубликовать вывод ls -l /usr/bin/viи rpm -qf /usr/bin/vi.
Жиль "ТАК - перестань быть злым"

Ответы:

6

Ваш viVim, но вызывается как vi, поэтому он входит в режим исторической совместимости. Рекомендуемое действие: если вы хотите запустить Vim, а не vi, запустите vimи нет vi. Однако, если вы хотите viвсегда запускать Vim для каждой учетной записи в системе, переопределите его в /usr/local/bin:

cat >/usr/local/bin/vi <<\EOF
#!/bin/sh
exec /usr/bin/vim "$@"
EOF
chmod 755 /usr/local/bin/vi
Жиль "ТАК - перестань быть злым"
источник
На самом деле это очень хорошая идея.
AEF
2
Это даже работает, просто делая символическую ссылку с sudo ln -s /usr/bin/vim /usr/local/bin/vi. Но вы должны добавить /usr/local/binв крайнюю левую часть Defaults secure_path="…"конфигурации visudo, иначе символическая ссылка не будет найдена.
AEF
Я думаю, что здесь есть некоторые опечатки в синтаксисе. Вы cat >/usr/local/bin/viимели в виду (не cat >/usr/local/bin)? Вы chmod 755 /usr/local/bin/viимели в виду (не .../vim)?
DW
Чтобы подобрать его с помощью PATH по умолчанию для root, создайте символическую ссылку в /usr/local/sbin/vi.
хакель
5

# echo 'alias vi="vim"' >> /etc/bashrc' или # alternatives --install /usr/bin/vi vi /usr/bin/vim 900

llua
источник
И не стирается ли это при vim-minimalобновлении пакета?
AEF
создать псевдоним на .bashrcэто хорошая практика ... мне @llua дал хороший ответ
maniat1k
0

К вашему сведению недавняя Fedora (по крайней мере с 18) устанавливает, что псевдоним gobally за /etc/profile.dодин раз vim-enchancedустановлен

akostadinov
источник