Fedora

sudo vim 和 vim 打開不同的編輯器

  • May 18, 2022

我剛剛完成了 Fedora 36 的安裝,並且正在安裝我常用的軟體。我個人更喜歡 nvim 而不是 vim,但我習慣於輸入 vim;所以,我只是alias vim='nvim'.bashrc.

直接使用vim使用 nvim 並使用init.vim; 但是, usingsudo vim似乎沒有使用我編寫的任何映射。(我與withinit.vim連結)。我讀到 sudo 使用除 之外的另一個文件,但我不想在任何地方創建別名。.vimrc``ln -s .config/nvim/init.vim .vimrc``.bashrc

找到了一些建議使用sudo update-alternatives --config vim並從“列表”中選擇 nvim 的答案,但是在執行命令時我沒有得到任何輸出。它只是給了我一條新的終端線。如何sudo update-alternatives --config vim返回“列表”?或者有沒有更好的方法來做到這一點update-alternatives

據我所知,sudo 會更改您的使用者 ID,因此當您使用 sudo 呼叫某些內容時,您專門為普通使用者所做的所有配置都不會應用(這意味著如果您有 .vimrc,則在使用 sudo 呼叫 vim 時將不適用) . 除此之外,據我所知 sudo 無論如何都無法讀取您為 bash 創建的“別名”,這意味著如果您輸入alias l=ls;sudo lsudo 將不知道該命令的l含義。

update-alternatives 是一個有用的工具,它創建和處理二進製文件的連結,所以如果你的系統上有不同版本的 vim,你可以使用 update-alternatives 來更改呼叫 vim 時呼叫的版本。可以使用您嘗試使用--config標誌的命令配置替代方案,但只能在使用--install標誌創建它之後。

這是一個教程,介紹如何為 python 做到這一點:連結

但是我不確定這將如何幫助您解決問題,但它可能是,通過創建一個替代方案,您允許 sudo 找到您想要的程序。

我不確定這是否可取,可能不是,但是解決您的問題的一個簡單而骯髒的解決方案是重命名二進製文件或創建一個指向名為 vim 的 nvim 二進製文件的連結。這樣,如果呼叫它,每個環境都會使用這個二進製文件。但我認為學習和使用更新替代方案是更清潔、更抗拒的方式。

就我個人而言,我走的是惰性路線,並在使用 sudo 時輸入正確的二進制名稱。我有一個 v=vim 的別名,但是在使用 sudo 時我可能正在做一些嚴肅的事情,所以我最好準確地說出我想要的,但如果你想在任何地方使用你的別名,我可以理解。

引用自:https://unix.stackexchange.com/questions/703056