來源:Python程序員python
ID:pythonbuluogit
vim具備自定義配色方案,語法高亮,linting和自動填充功能程序員
Vim是一個以很是難學而聞名的命令行文本編輯器(有個關於Vim的笑話:問如何生成一串真隨機數,答讓一個Web開發人員退出Vim)。因此爲何還要學習它呢,尤爲是當你已經習慣現有的文本編輯器或者IDE的狀況下?學習Vim的優點包括如下幾點:編程
Vim內置於任何類Unix系統上,這意味着你能夠直接在服務器上編輯文件(這點很是有用)vim
與大多數文本編輯器和IDE相比,Vim是輕量級的,因此它即便在性能較弱的硬件上運行速度也很快且高效瀏覽器
Vim是徹底由鍵盤驅動的(且大多數動做都集中在主排),所以它將使您更有效率?緩存
在最後提升效率這一點後我打了個問號,這是你會常常據說的觀點,可是我以爲不必定適用於每一個人。基本上,爲了讓使用Vim更有效率,你不只須要花不少時間來了解它,更須要掌握它。這意味着使用它節約的時間一般會與用來熟練掌握它的時間抵消,而你須要持續花時間來掌握它。我會說學習Vim最好的緣由是你享受花時間學習掌握一項複雜的技能這一過程。在這種意義上,這與想要學習一種新樂器的人的心態並沒有不一樣。服務器
若是你認爲以上列出的這些緣由有吸引力,那你能夠按照下面列出的四周計劃來學習Vim。這是我曾經學習Vim的方法,它來源於我在各論壇和教程中屢次遇到的類似的建議。我還加入了一些我本身學習過程當中的經驗。編輯器
不少人相信學習vim基礎的最佳方法是在終端簡單地輸入這一命令:性能
這一命令會在Vim中打開一個包含基本Vim命令的分步說明文本文件。瀏覽完整個文檔大概須要30分鐘左右。若是你瞭解vimtutor中涵蓋的命令,那麼您已經準備好使用Vim了。
問題是vimtutor包含了不少命令,沒有辦法一次學會全部的命令!個人建議是天天堅持輸入一次Vimtutor,這一習慣至少持續一個星期。每次你這樣作時看看學習完整個文檔的速度有無提高。同時爲本身設定一個目標——看看你是否能夠在5分鐘內看完整個文檔。要點是不要死記硬背每一個命令——重點是花大量的時間練習,直到基本的導航和編輯命令成爲第二本能。
若是您的目標是要足夠了解Vim,以便可以在服務器上遠程編輯文件,那麼您能夠在此中止——您已經知道足夠多了!若是您想使用Vim做爲您的編輯器,您能夠繼續下一步。
學會了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,您能夠輕鬆地複製到任何計算機上!
在使用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等中的標籤助手)
此時你已經足夠了解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的過程當中獲得快樂。但願這些建議對你的學習有所幫助!