如何解決 __vi_internal_vim_alias: command not found?
我最近在我的機器上升級到 Fedora 33 (Linux 5.9.16-200)。我正在執行 vim 增強版 8.2。當我鍵入
sudo vim
(或什sudo vi
至)以編輯具有管理員權限的文件時,我收到以下錯誤。sudo: __vi_internal_vim_alias: command not found
我不確定是什麼原因造成的。沒有 sudo,Vim 可以正常載入。你能告訴我如何解決這個問題嗎?謝謝你。
更新: 執行後
which vim
,我得到以下結果。alias vim='__vi_internal_vim_alias' __vi_internal_vim_alias () { ( test -f /usr/bin/vim && exec /usr/bin/vim "$@"; test -f /usr/bin/vi && exec /usr/bin/vi "$@" ) }
我不確定這是做什麼的,在哪裡做的。也許這是 Fedora 33 的事情。鑑於上述資訊,您認為什麼是永久性修復?
正如@scy 提到的 unalias-ing vi 和 vim 是保留 sudo=“sudo " 別名的解決方案,因此它可以與其他別名一起使用。
擴展他/她對不同外殼的答案:
ZSH Shell:添加到.zshrc文件(您希望受更改影響的使用者)
- 位於:
對於 Fedora 33 工作站(或伺服器或其他非原子作業系統發行版):/ home/$USER/ .zshrc
對於 Fedora CoreOS 33.x(或 Silverblue 33 或其他類似的原子作業系統發行版):/ var/home/$USER/ .zshrc
- 以下程式碼行:
[ "$(type -w vi)" = 'vi: alias' ] && unalias vi [ "$(type -w vim)" = 'vim: alias' ] && unalias vim
BASH Shell:添加到.bashrc文件(您希望受更改影響的使用者)
- 位於相同的位置,分別對應於 $USER 的主目錄的 OS/Distro 特定位置(檢查 Fedora Workstation 的說明等…)
- 以下程式碼:
[ "$(type -t vi)" = 'alias' ] && unalias vi [ "$(type -t vim)" = 'alias' ] && unalias vim
PS關於ZSH Shell,此解決方案可以解決其他處於類似初始化情況的 CLI 應用程序的類似問題。例如:mc(午夜指揮官)。同時,mc在****BASH Shell中不會出現這樣的問題。
在 Fedora 33 上遇到同樣的問題。這似乎是由於
sudo
在我的環境中定義了一個別名:$ alias sudo alias sudo='\sudo '
因此,bash 會以某種方式解析作為參數傳遞給
sudo
別名的別名,如下例所示:$ alias foo='echo foo' $ sudo foo foo
我本來希望有這個:
$ sudo foo $ sudo: foo: command not found
刪除此別名對我有用。此別名由項目的
/usr/local/bin/alias.sh
一部分synth-shell
( https://github.com/andresgongora/synth-shell )創建