學習Vim的四周計劃

vim具有自定義配色方案,語法高亮,linting和自動填充功能。

Vim是一個以非常難學而聞名的命令行文本編輯器(有個關於Vim的笑話:問如何生成一串真隨機數,答讓一個Web開發人員退出Vim)。所以爲什麼還要學習它呢,尤其是當你已經習慣現有的文本編輯器或者IDE的情況下?學習Vim的優勢包括以下幾點:

  • Vim內置於任何類Unix系統上,這意味着你可以直接在服務器上編輯文件(這點非常有用)

  • 與大多數文本編輯器和IDE相比,Vim是輕量級的,所以它即使在性能較弱的硬件上運行速度也很快且高效

  • Vim是完全由鍵盤驅動的(且大多數動作都集中在主排),因此它將使您更有效率?

在最後提高效率這一點後我打了個問號,這是你會經常聽說的觀點,但是我覺得不一定適用於每個人。基本上,爲了讓使用Vim更有效率,你不僅需要花很多時間來了解它,更需要掌握它。這意味着使用它節約的時間通常會與用來熟練掌握它的時間抵消,而你需要持續花時間來掌握它。我會說學習Vim最好的原因是你享受花時間學習掌握一項複雜的技能這一過程。在這種意義上,這與想要學習一種新樂器的人的心態並無不同。

如果你認爲以上列出的這些原因有吸引力,那你可以按照下面列出的四周計劃來學習Vim。 這是我曾經學習Vim的方法,它來源於我在各論壇和教程中多次遇到的相似的建議。我還加入了一些我自己學習過程中的經驗。

第1周:每天學習一次vimtutor

很多人相信學習vim基礎的最佳方法是在終端簡單地輸入這一命令:

這一命令會在Vim中打開一個包含基本Vim命令的分步說明文本文件。瀏覽完整個文檔大概需要30分鐘左右。如果你瞭解vimtutor中涵蓋的命令,那麼您已經準備好使用Vim了。

問題是vimtutor包含了很多命令,沒有辦法一次學會所有的命令!我的建議是每天堅持輸入一次Vimtutor,這一習慣至少持續一個星期。每次你這樣做時看看學習完整個文檔的速度有無提升。同時爲自己設定一個目標——看看你是否可以在5分鐘內看完整個文檔。要點是不要死記硬背每個命令——重點是花大量的時間練習,直到基本的導航和編輯命令成爲第二本能。

如果您的目標是要足夠了解Vim,以便能夠在服務器上遠程編輯文件,那麼您可以在此停止——您已經知道足夠多了!如果您想使用Vim作爲您的編輯器,您可以繼續下一步。

第2周:儘可能少地進行其他配置,不使用插件

學會了Vim中的導航和編輯,下一步你會希望進行個性化配置。Vim的默認配置相當普通而過時,但使用vimrc配置文件可以自定義功能。重要的是不要添加太多插件試圖使Vim成爲一個完整的IDE——Vim作爲Vim就很好,作爲IDE則很糟糕。

請按照本文來構建您自己的vimrc文件。作爲開始,這些是我爲數不多的推薦配置的東西:

  • 添加一個配色方案(我使用的是vim-code-dark,基於Visual Studio代碼)

  • 打開語法高亮

  • 設置空格和製表符

  • 設置自動縮進

  • 打開行號

  • 用tab在子文件夾中查找文件

  • 配置爲按ESC快速退出插入模式(我將我的大寫鎖定鍵更改爲CTRL並使用CTRL C退出插入模式)

事實上,這就是全部了!(無插件規則的唯一例外是,如果您需要對Vim不支持的語言安裝語言具體支持)。 目標是避免一週內的任何其他配置或花哨的插件——這可能會感到痛苦,但這將避免你花費所有時間來配置Vim,而不是練習Vim。

提示:當您配置vim時,在主目錄中使用結構如下的.vim文件夾。較新版本的Vim將在.vim文件夾中查找vimrc文件,以便將所有內容保存在一個文件夾中。 這允許您使您的.vim文件夾成爲一個git repo,您可以輕鬆地複製到任何計算機上!

第3周:儘可能少地使用插件

在使用vim完成過實際項目之後,你會更好地瞭解vim的功能,此時你可以進行一些自定義配置。但是,你仍然應該注意不要安裝從根本上改變vim如何工作的插件。以下列舉了一些很受歡迎的插件類型,但我建議你現在不要使用:

  • 不要安裝插件管理器(較新版本的Vim原生的插件管理就已足夠)

  • 不要安裝樹瀏覽器或模糊文件查找器插件(使用:find與子文件夾搜索效果就很好)

  • 不要爲可視化標籤安裝插件(試着習慣原生Vim緩存,:b <TAB>很有用)

  • 不要安裝自動完成的插件(原生Vim已經可以使用<CTRL n>來補全)

  • 不要爲多行註釋安裝插件(嘗試使用可視化模式)

  • 不要爲多遊標安裝插件(使用帶n的/搜索,需要時重複.)

以上所要表達的重點是,很多時候插件會阻礙你學習Vim實際功能。所有上述類型的插件都很棒,可以節省時間,但是隻有當你完全瞭解如何使用原生Vim完成相同的任務後,你才能安裝這些插件。

也就是說,有一些插件,不改變vim的核心行爲,且會使日常使用更方便。以下是我使用的一些插件:

  • 考慮安裝auto-pairs.vim(成對插入或刪除括號,花括號,引號)

  • 考慮安裝endwise.vim(Ruby中,在if,do,def等之後自動添加end)

  • 考慮安裝ragtag.vim(HTML,erb等中的標籤助手)

第4周:用動詞和名詞組合Vim命令

此時你已經足夠了解Vim,可以開始組合新的命令,而不是記憶新的命令。組合新的命令代表着正式將Vim視爲一種語言。Chris Toomey的“掌握Vim語言”演講很值得一看,它展示了這個概念的強大之處。

簡而言之,你需要知道一些動詞和名詞:

  • 動詞 — d(刪除),c(修改),y(複製),>(縮進)

  • 名詞(動作性的) — w(單詞),b(前移一個單詞),2j(下移兩行)

  • 名詞(文本對象) — iw(內部單詞),it(內部標籤),i""(內部引用)

然後,您可以組合動詞和名詞來創建任意數量的命令

  • dw:刪除到單詞末尾

  • diw:刪除光標所在單詞

  • y4j:複製四行

  • cit:修改HTML標籤內的內容

演講中指出,記住約30條命令可以讓你組合超過2000個不同的命令。請注意,我在第4周提出這一點 - 這個東西是非常強大的,但只有當你對Vim有一個很好的把握時纔有用。 3周後,你應該能很好的掌握30個必要的命令,以達到這個級別!

該演講還提到安裝插件以增強Vim語言。一如之前反覆提及的,安裝插件時應謹慎。但在這種情況下,我們討論的是增強Vim語言性的插件(而不是與Vim的核心行爲相矛盾的插件)。以下是一些值得一看的插件:

  • 考慮安裝surround.vim(添加一個新的修飾符來更改包圍的引號,括號等)

  • 考慮安裝commentary.vim(添加一個新的動詞到註釋行)

  • 考慮安裝repeat.vim(爲特定插件添加.repeat支持)

(上述所有插件都是由Time Pope提供,一個在你學習Vim的過程中必然會遇到的名字)

提示:在演講中,他們使用相對行號,實際上我不推薦。很多人在相對行號剛開始引入時就成了其粉絲,但我也聽說過一段時間後遇到問題的人(例如代碼可讀性變差,有時會導致性能問題等)。因爲你可以使用常規的Vim命令G或gg輕鬆完成相同的操作(移動到或刪除特定的行),所以我個人覺得它沒有實際用途。

總結

學習Vim是件繁重的任務,但也可以很有趣。如果你對花費一個月的時間來學習一個文本編輯器這件事感到畏縮,這可能不適合你。然而,我認爲大多數開發者可以從第一週的建議中受益匪淺,至少能夠獲得直接在服務器上編輯文件的能力。你將能真正實現使用VPS在iPad或Chromebook上編寫代碼。至少,當Vim在你的終端中打開時,你將不會看起來很傻的困住!

如果你確實完成了4周計劃,你的編程能力將提升一個等級。實際上我不知道這是否會使你更有效率(因爲你可能會把編寫代碼的時間用來學習更多酷炫技巧並嘗試新的配置)。正如之前所說,它更像是學習一個樂器(取決於你的個性),你可以從逐漸掌握Vim的過程中得到快樂。希望這些建議對你的學習有所幫助!

本文由馬哥教育Linux學院提供支持。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章