Vim 與 nano:你應(yīng)該選擇哪個(gè)?
我們需要利用文本編輯器來做筆記、寫程序,或者編輯系統(tǒng)配置文件來完成一些事情。
不管你用來做什么,你的 Linux 發(fā)行版已經(jīng)預(yù)裝了文本編輯器。
你很可能會(huì)注意到一些 最好的現(xiàn)代文本編輯器,如 Gedit、Geany、Kate 等,它們已經(jīng)預(yù)裝在你的 Linux 發(fā)行版中。然而,這些都是基于 GUI 的程序。
如果你想通過終端訪問文本編輯器怎么辦?你應(yīng)該發(fā)現(xiàn)它也內(nèi)置在你的 Linux 發(fā)行版中了。
Vim 和 nano 是最流行的 CLI 文本編輯器 之二。
但是,是什么讓它們?nèi)绱耸軞g迎?你應(yīng)該選擇哪個(gè)作為你的文本編輯器?讓我指出一下 Vim 和 nano 的區(qū)別,以幫助你決定。
1、基于終端的編輯器介紹
nano 和 Vim 都提供了大部分的基本功能。雖然 nano 在大多數(shù) Linux 發(fā)行版上是內(nèi)置的,但你必須手動(dòng)安裝 Vim。
為了比較這兩者,讓我給你簡單介紹一下這兩者。
Vim
Vim 是 “Vi” 文本編輯器的改進(jìn)版,開發(fā)于 1991 年。Vim 是 “Vi 改進(jìn)版Vi IMproved” 的意思。
Vi 是一個(gè)基于終端的文本編輯器,最初于 1976 年為 Unix 操作系統(tǒng)而開發(fā)。Vim 是它的一個(gè)具有現(xiàn)代功能的增強(qiáng)版。
考慮到它的各種功能可以幫助編輯程序文件,它也被稱為“程序員的文本編輯器”。雖然它提供了一些高級(jí)功能,但你也可以用來編輯純文本文件。
GNU nano
GNU nano(我們?cè)谖恼轮蟹Q它為 “nano”)是一個(gè)簡單的基于終端的文本編輯器,其靈感來自于 Pico —— 這個(gè)基于 Unix 的文本編輯器是華盛頓大學(xué) 1989 年開發(fā)的 Pine 電子郵件套件的一部分。
Pico 文本編輯器沒有 GPL(許可證),這使得它很難被納入 Linux 發(fā)行版。
因此,nano 被開發(fā)出來作為它的自由軟件替代品。nano 編輯器最初被稱為 “tip”,然后在 Richard Stallman 宣布它成為正式的 GNU 程序之前重新命名為 nano。
這個(gè)編輯器的亮點(diǎn)是它的易用性和極小的學(xué)習(xí)曲線。你不一定需要成為程序員才能使用 nano。
2、功能差異
下面是 Vim 和 nano 的主要功能差異:
Vim 的主要特點(diǎn)
- 多級(jí)撤銷
- 語法高亮
- 命令行編輯
- 文件名補(bǔ)完
- 多窗口和緩沖區(qū)
- 折疊
- 會(huì)話
- 支持宏
nano 的主要特點(diǎn)
- 打開多個(gè)文件
- 逐行滾動(dòng)
- 撤銷/重做
- 語法著色
- 行號(hào)
請(qǐng)注意,一般來說,Vim 提供了更高級(jí)的功能。然而,它們都提供了編輯系統(tǒng)配置文件、編程和文本編輯等基本功能。
3、用作文本編輯器
在 Vim 或 nano 中打開一個(gè)文件很簡單,只要輸入你想使用的編輯器的名字,然后再輸入文件的路徑。路徑可以是文件的絕對(duì)路徑,也可以是文件的相對(duì)路徑。
vim Documents/text.txt
nano Documents/text.txt
但是,除了用作文本編輯器訪問或打開一個(gè)文件之外,還有很多功能,對(duì)嗎?
如果你想快速比較一下,這里有一些基于我的使用情況的比較點(diǎn):
Vim:
- 模式驅(qū)動(dòng)的編輯器
- 在開始時(shí)有巨大的學(xué)習(xí)曲線
- 會(huì)話恢復(fù)
- 語法高亮/著色
- 提供高級(jí)功能
nano:
- 易于使用(經(jīng)常使用的功能及其組合鍵列在底部)
- 不存在學(xué)習(xí)曲線
- 旨在進(jìn)行快速編輯
nano 和 Vim 的主要區(qū)別在于,它們的目標(biāo)受眾非常不同。
Vim
Vim 是一個(gè)模式驅(qū)動(dòng)的編輯器。這意味著字母、數(shù)字和標(biāo)點(diǎn)符號(hào)鍵在按下時(shí)都要做一件獨(dú)特的事情,而不是在屏幕上打出一個(gè)字符。
這些模式包括:
- 正常模式
- 視覺模式
- 插入模式
- 命令行命令
- 命令行編輯
默認(rèn)情況下,當(dāng)你啟動(dòng) Vim 時(shí),它以 正常 模式打開。每個(gè)鍵都有其獨(dú)特的功能,不會(huì)立即開始輸入所按下的字符。
不管什么模式,如果你愿意,你也可以 把 Vim 配置成一個(gè)寫作工具。
要知道更多關(guān)于這些有趣的事情,你可以參考我們關(guān)于 基本 Vim 命令 以及 Vim 技巧和竅門 的文章。
當(dāng)你啟動(dòng) Vim(無參數(shù))時(shí)的終端屏幕
在正常模式下,按特定的鍵會(huì)移動(dòng)你的光標(biāo)。
例如,如果你按下 ??l?
?(小寫字母 L),它將把光標(biāo)向右移動(dòng)一個(gè)字符,按 ??h?
? 鍵將把光標(biāo)向左移動(dòng)一個(gè)字符。
如果你想把光標(biāo)向下移動(dòng)一行,你就按 ??j?
? 鍵,如果要把光標(biāo)向上移動(dòng)一行,你應(yīng)該按 ??k?
? 鍵。
在正常模式下 ??l?
?、??k?
?、??j?
?、??h?
? 是導(dǎo)航鍵。雖然你可以用方向鍵來移動(dòng),但這樣做更有效率。
這些是 Vim 中的基本導(dǎo)航鍵。
接下來最常用的鍵是 ??w?
?、??b?
?、??e?
?:
- 按 ?
?w?
? 鍵可將光標(biāo)移到下一個(gè)詞。如果它已經(jīng)在一個(gè)詞的開頭,它就會(huì)移動(dòng)到下一個(gè)詞的開頭。 - 按 ?
?b?
? 鍵,光標(biāo)會(huì)移到左邊的詞的開頭。 - 而 ?
?e?
? 鍵,則將光標(biāo)移到右邊的詞的末尾。
你甚至可以用這些鍵混合數(shù)字(作為前綴)。例如,按 ??6w?
? 可以將光標(biāo)向前(向右)移動(dòng)六個(gè)詞。
如果你想進(jìn)入一個(gè)模式,你必須按類似的組合鍵:
- ?
?i?
? 為插入模式 - ?
?CTRL+C?
? 回到正常模式 - ?
?:wq?
? 寫入文件并關(guān)閉窗口。
最后,我們已經(jīng) 列出了退出 Vim 的多種方法,如果你想了解一下的話。
這只是冰山一角。要學(xué)習(xí)更多關(guān)于 Vim 的知識(shí),你可以使用??vimtutor?
? 命令,它可以給你提供大多數(shù)基本命令的信息,如刪除、編輯、保存文件等。
GNU nano
nano 有一個(gè)基本的交互界面,在窗口的底部給你提供關(guān)鍵信息。
要想有個(gè)初步的了解,你可以參考我們的 nano 編輯器指南。
![Terminal screen when you launch nano without argumentswithoutarguments] 13
你不需要參考手冊(cè)頁或任何文檔來執(zhí)行基本操作。這就是為什么與 Vim 相比,nano 被認(rèn)為是用戶友好的。
盡管如此,nano 中使用的一些術(shù)語仍然是“舊術(shù)語”,一個(gè)例子是 “寫出Write Out”、“在哪里Where Is”短語,而不是分別用“保存Save”和“查找Find”。
但是,這并不是什么大問題。
雖然很容易習(xí)慣,但它與使用記事本或 Gedit(GUI 程序)并不完全相同。
例如,在大多數(shù)現(xiàn)代編輯器中,執(zhí)行剪切操作的組合鍵通常是 ??Ctrl + X?
?,但在 nano 中,它是 ??Ctrl + K?
?。
符號(hào) ??^?
? 是用來表示將 ??Ctrl?
? 鍵作為修飾鍵使用,并與旁邊的鍵組合使用。
你還可以找到像 ??Ctrl + F?
?(將光標(biāo)向前移動(dòng))、??Ctrl + B?
?(將光標(biāo)向后移動(dòng))這樣的組合鍵。一些快捷鍵包括:
- ?
?Ctrl + X?
? 退出 - ?
?Ctrl + O?
? 寫入(或保存為) - ?
?Alt + U?
? 撤銷上一個(gè)動(dòng)作 - ?
?Ctrl + ←?
? 向后退一個(gè)字 - ?
?Ctrl + →?
? 向前進(jìn)一個(gè)字
你可以看看 GNU nano 的官方速查表 來學(xué)習(xí)更多的快捷鍵。
總的來說,nano 是一個(gè)更適合初學(xué)者的編輯器,當(dāng)你只想偶爾編輯一個(gè)文件時(shí),它可以簡單地讓你完成。
4、學(xué)習(xí)曲線
考慮到上面的所有信息,你一定已經(jīng)意識(shí)到 Vim 與你所習(xí)慣的傳統(tǒng)文本編輯器不同。
這是真的,這就是為什么 Vim 在學(xué)習(xí)的初始階段會(huì)顯得很艱難。
然而,對(duì)于高級(jí)用戶來說,使用宏、自動(dòng)補(bǔ)完等高級(jí)能力很重要,可以節(jié)省時(shí)間。
因此,如果你是一個(gè)程序員,或者碰巧經(jīng)常編輯許多文件,Vim 的學(xué)習(xí)曲線可能是富有成效的。
另一方面,nano 提供了極小的學(xué)習(xí)曲線,而且感覺比基于圖形用戶界面的文本編輯器如 Gedit 或 Notepad 更讓你熟悉。
哪個(gè)是最適合你的?
Vim 和 nano 都是合格的基于終端的文本編輯器。但是,當(dāng)涉及到你如何與上述編輯器互動(dòng)和使用時(shí),它們有很大的不同。
Vim 很靈活,可以適應(yīng)各種工作流程,前提是你已經(jīng)習(xí)慣了它的工作方式。
相比之下,nano 工作起來很簡單,可以幫助你編輯任何你想要的東西。
如果你還不確定,我建議先開始使用 nano。而且,如果你認(rèn)為你需要更快地完成工作,并且想要更多的功能,那么就換成 Vim。
常見的問題
繼續(xù),讓我來談?wù)剮讉€(gè)問題,這將有助于你獲得一個(gè)良好的開端。
Vim 比 nano 好嗎?
從技術(shù)上講,是的。但是,如果你不需要它提供的所有功能,使用起來可能會(huì)感到力不從心。
程序員是否使用 Vim?
系統(tǒng)管理員和程序員喜歡 Vim 的高級(jí)功能。所以,是的,他們傾向于使用它。
nano 是否更受歡迎?
可以說是的。nano 是一個(gè)基于終端的編輯器,被大多數(shù)用戶使用。此外,它還內(nèi)置在大多數(shù) Linux 發(fā)行版中。
因此,它在用戶中普遍受歡迎,而 Vim 仍然是一個(gè)為特定人群服務(wù)的編輯器。