如何在 Linux 上把 Vim 配置為默認(rèn)編輯器

我使用 Linux 大概有 25 年了,在那之前我還使用了幾年的 Unix。在這段時間里,我對一些日常使用的工具形成了偏好。Vim 是我使用的最重要的工具之一。
我在 90 年代初學(xué)習(xí) Solaris 時,就開始使用 Vi 了,因為有人告訴我,它在任何系統(tǒng)上都能使用。從我的經(jīng)驗來看,確實是這樣。我也試過其他編輯器,它們都能夠勝任工作。但是,對于我來說,Vim 的使用效果最好。我經(jīng)常使用它,以至于形成了肌肉記憶,甚至我在使用其他編輯器時也會下意識地去按 Vim 的快捷鍵。
另外,我只是單純地喜歡 Vim 而已。
許多配置文件使用的名字是 Vi 而不是 Vim,你可以運行 ??vi??? 命令。不過,??vi??? 命令其實是 ??vim?? 命令的一個鏈接。
許多 Linux 工具使用的編輯器都是在模擬或是直接調(diào)用的 Nano、Emacs 或者 Vim。其他的一些工具允許用戶(比如那些有著明確偏好的用戶)使用他們喜歡的編輯器。舉兩個對我影響最大的例子,一個是 Bash 命令行,它默認(rèn)使用 Emacs;另一個是 Alpine 文本模式的郵件客戶端,它默認(rèn)使用 Pico。事實上,Pico 是專門為 Pine 郵件客戶端編寫的,而 Pine 是 Alpine 的前身。
并非所有使用外部編輯器的程序都是可配置的。有些程序只使用開發(fā)者指定的編輯器。對于那些可配置的應(yīng)用程序,有不同的方法來選擇你喜歡的編輯器。
在 Linux 命令行中編輯
除了實際編輯文本文件外,另一個我經(jīng)常使用,且和編輯密切相關(guān)的工具是 Bash shell。Bash 的默認(rèn)編輯器是 Emacs。雖然我也用過 Emacs,但我肯定更喜歡 Vim。所以很多年前,我把 Bash 命令行的默認(rèn)編輯器從 Emacs 換成了 Vim,這對我來說更舒服。
有很多種方法可以配置 Bash。你可以使用一個本地配置文件,比如 ??/home/yourhomedirectory/.bashrc???,它只對你的用戶賬戶進(jìn)行默認(rèn)修改,而不對同一系統(tǒng)的其他用戶進(jìn)行修改。我個人傾向于讓這些改變成為全局性的,基本上就是我的個人賬戶和 root。如果你也想全局配置,你可以創(chuàng)建你自己的配置文件,并把它放在 ??/etc/profile.d?? 目錄中。
我在 ??/etc/profile.d??? 中添加了一個名為 ??myBashConfig.sh??? 的文件。??/etc/profile.d??? 目錄中存放了所有已安裝的 shell 的啟動文件。在啟動終端會話時,每個 shell 僅會根據(jù)文件名的擴(kuò)展名,讀取為其準(zhǔn)備的啟動文件。例如,Bash shell 只讀取擴(kuò)展名為 ??.sh?? 的文件。
<截斷>
alias vim='vim -c "colorscheme desert" '
# 把 vi 設(shè)置為 Bash 的默認(rèn)編輯器
set -o vi
# 為所有檢查 $EDITOR 變量的程序設(shè)置默認(rèn)編輯器為 vi
EDITOR=vi
<截斷>
在這個全局 Bash 配置文件段中,??set -o vi??? 將 Vi 設(shè)置為默認(rèn)編輯器。這個 ??set??? 命令中的 ??-o??? 選項將 ??vi?? 定義為編輯器。為使配置生效,你需要關(guān)閉所有正在運行的 Bash 會話,并打開新的會話。
現(xiàn)在,你現(xiàn)在可以使用所有你熟悉的 Vim 命令,包括光標(biāo)移動。只要按下 ??Esc??? 鍵就可以進(jìn)入 Vim 編輯模式。我特別喜歡多次使用 ??b?? 將光標(biāo)移回多個字的功能。
將 Vim 設(shè)置為其他程序的默認(rèn)值
一些 Linux 命令行工具和程序會檢查 ??$EDITOR?? 環(huán)境變量來決定使用哪個編輯器。你可以用下面的命令檢查這個變量的當(dāng)前值。我在一個新安裝的虛擬機(jī)上運行過該命令,以查看默認(rèn)的編輯器到底是什么。
# echo $EDITOR
/usr/bin/nano
#
默認(rèn)情況下,檢查 ??$EDITOR??? 環(huán)境變量的 Fedora 程序會使用 Nano 編輯器。在 ??myBashConfig.sh??? 中添加一行 ??EDITOR=vi??(如上面的片段所示),可以將默認(rèn)值改為 Vi(Vim)編輯器。然而,不是所有使用外部編輯器的命令行程序都會檢查這個環(huán)境變量。
在 Alpine 中編輯電子郵件
幾周前,我認(rèn)為 Pico 不太適合作為我的電子郵件編輯器。我可以使用它,而且在從 Thunderbird 轉(zhuǎn)到 ??Alpine?? 之后的一段時間內(nèi)我也用了一段時間。但我發(fā)現(xiàn),Pico 妨礙了我,我總是習(xí)慣使用 Vim 按鍵序列,這影響了我的工作效率。
我在 Alpine 的用戶幫助中看到,默認(rèn)編輯器是可以修改的。我決定把它改成 Vim。實際上這很容易做到。
在 Alpine 主菜單上,按 ??S??? 鍵進(jìn)入設(shè)置,然后按 ??C??? 鍵進(jìn)行配置。在 “編輯器設(shè)置Composer Preferences” 部分,按 ??X?? 選擇 “啟用外部編輯器命令Enable Alternate Editor Command” 和 “隱式啟用外部編輯器Enable Alternate Editor Implicitly” 項目。在往下滾動幾頁的 “高級用戶設(shè)置Advanced User Preferences” 部分,找到 `Editor 那一行。如果它還沒有被修改的話,它應(yīng)該是這樣的:
Editor = <No Value Set>用光標(biāo)欄突出顯示 ??Editor??? 這一行,然后按回車鍵來編輯。將 ??<No Value Set>??? 改為 ??vim???,再按回車鍵,然后按 ??E??? 鍵退出,最后按 ??Y?? 鍵保存修改。
要用 Vim 編輯電子郵件,只需進(jìn)入電子郵件正文,Vim 就會自動啟動,就像 Pico 那樣。所有我喜歡的編輯功能都還在,因為它實際上是在使用 Vim。甚至退出 Vim 的 ??Esc :wq?? 序列也是一樣的。
總結(jié)
與其他編輯器相比,我更喜歡 Vim,對我的系統(tǒng)進(jìn)行的這些改動后,那些默認(rèn)使用其他編輯器的應(yīng)用程序,將使用 Vim 來替代它們的默認(rèn)編輯器。有些程序使用 ??$EDITOR?? 環(huán)境變量,因此你只需要做一次修改就夠了。其他有用戶配置選項的程序,如 Alpine,則必須為每個程序單獨設(shè)置。
這種可以選擇你喜歡的外部編輯器的能力,非常符合 Unix 哲學(xué)的宗旨:“每個程序都只做一件事,而且要做得出色”。既然已經(jīng)有幾個優(yōu)秀的編輯器,為什么還要再寫一個呢?而且它也符合 Linux 哲學(xué)的宗旨:“使用你最喜歡的編輯器”。
當(dāng)然,你可以把你的默認(rèn)文本編輯器改為 Nano、Pico、Emacs 或任何其他你喜歡的編輯器。





























