T之家10月27日消息 Vim作為一個功能強大可高度定制的編輯器,在代碼編輯上非常高效。其代碼補全、編譯及錯誤跳轉等功能深受程序員喜愛。目前Vim已經與Emacs一道成為類Unix系統用戶最喜歡的文本編輯器。
目前,包括Notepad++、Visual Studio Code、JetBrians IntelliJ Idea等多款編輯器或IDE均支持Vim擴展,這也便利了許多程序員的使用。當然,Vim的功能非常多,IT之家為大家整理了一份比較全面的Vim使用的速查表,一起看看吧。
Vim的四種模式
正常模式:可以使用快捷鍵命令,或按“:”輸入命令行。
插入模式:可以輸入文本,在正常模式下,按i、a、o等都可以進入插入模式。
可視模式:正常模式下按v可以進入可視模式,在可視模式下,移動光標可以選擇文本。按V進入可視行模式,總是整行整行的選中。ctrl+v進入可視塊模式。
替換模式:正常模式下,按R進入。
Vim速查表
除了以上整理Vim口令,Vim還有很多很多豐富的操作,這些操作能讓程序員在極短的時間內快速的寫出高質量的代碼。在充分理解并熟悉Vim的各種操作之后,開發效率可以得到大幅的提升。當然,如果只是小白,這么多口令學習還需要非常多的時間。
另外,雖然Vim的口令龐大復雜,但對于程序員來講,也有廠商專門推出了程序員專用的鍵盤,HHKB(Happy Hacking Keyboard)就是一款專門為程序員開發而設計的鍵盤,它很好的支持了Vim,在日常使用中也非常的安靜。
當然,作為一款靜電容鍵盤,HHKB的售價可不比頂級的機械鍵盤便宜。
Vim的鍵位圖進階版
參考資料:
[1] 逗逗軍001,《vim 操作命令大全》,CSDN
[2] 楊玉杰,《Vim速查表-幫你提高N倍效率》,簡書
[3] Micheal,http://michael.peopleofhonoronly.com/vim/
“Vim”現在是“改進版 Vi”的縮寫,而最初代表的是“模擬版 Vi”。和其他許多“vi克隆版本”一樣,Vim 始于在一個無法使用 vi的平臺上復現 vi 的一個嘗試。在荷蘭 Venlo 一家影印公司工作的軟件工程師 Bram Moolenaar 想要為他全新的 Amiga 2000 準備一款類似于 vi 的編輯器。Moolenaar 已經習慣了在大學時使用的 Unix 系統上的 vi ,當時他 已經對vi了如指掌。所以在 1988 年,Moolenaar 使用當時的 STEVIE vi克隆版本開始在 Vim 上工作。
Moolenaar 接觸到 STEVIE 緣于其曾經出現在一個叫 Fred Fish 的磁盤上。Fred Fish 是一名美國程序員,每個月都會寄出一張軟盤,內含為 Amiga 平臺提供的精選可用開源軟件。任何人只要支付郵費就可以得到一張這樣的磁盤。有若干版本的 STEVIE 曾在 Fred Fish 磁盤上發布。Moolenaar 使用的 STEVIE 版本在 Fred Fish 256 號磁盤上發布。
Moolenaar 喜歡 STEVIE,但很快就注意到其缺失了很多 vi 命令。因此,在第一次發布 Vim 時,Moolenaar 優先考慮了 vi 的兼容性。當時已經有其他人編寫了一系列的 vi 宏,當運行一個合適的 vi兼容編輯器時,可以求解一個隨機生成的迷宮。Moolenaar 能夠讓這些宏在 Vim 中運行。1991年,Vim 以 Vi模擬為名第一次發布于 Fred Fish 591 號磁盤。Moolenaar 添加了一些特性,這意味著 Vim 已經完成了對 Vi 的超越。在 1993 年通過 FTP 發布 Vim 2.0 之前,Vim 都仍以 Vi模擬 的身份存在。
在眾多互聯網合作者的幫助下,Moolenaar 穩健地在 Vim 中加入了一些功能。Vim 2.0 引入了對wrap選項的支持,以及對長行文本進行水平滾動的支持。受到了vi克隆nvi的啟發,Vim 3.0 增加了對分割窗口和緩沖區的支持。Vim 現在還將每個緩沖區保存到交換文件中以避免程序崩潰造成文件丟失。Vimscript 支持語法高亮顯示,第一次出現是在 Vim 5.0 中。與此同時,Vim 的受歡迎程度也在不斷增長。它被移植到 MS-DOS、 Windows、Mac,甚至被移植到 Unix 與原來的 vi競爭。
2006 年,Vim 被 Linux Journal 讀者評為最受歡迎的編輯器。如今,根據 2018 年 Stack Overflow 的開發者調查,Vim 是最受歡迎的文本模式編輯器,受用于 25.8% 的軟件開發人員。在 1980 年代末和整個 1990 年代,程序員一度發起了“編輯器戰爭”,將 Emacs 用戶與 vi (即最終的 Vim )用戶進行了對比。雖然 Emacs 肯定仍有一些追隨者,但有些人認為編輯器戰爭已經以 Vim 獲勝而結束。2018年 Stack Overflow 的開發者調查顯示只有 4.1% 的受訪者使用 Emacs,也驗證了這個事實。
Vim 是如何變得如此成功的?顯然,人們喜歡 Vim 所提供的特性。但我認為,Vim 背后的悠久歷史表明了它的優勢遠不僅僅體現在其功能集上。Vim 的代碼庫可以追溯到 1988 年,當時 Moolenaar 開始研究它。另一方面,“ wq 文本編輯器”——關于 Unix-y 文本編輯器應該如何工作的更廣泛的愿景——可以追溯到半個世紀以前。“ wq 文本編輯器”有一些不同的具體表達方式,但在某種程度上要感謝 Bill Joy 和 Bram Moolenaar 對向后兼容性非比尋常的關注,才使好的想法逐漸積累起來。從這個意義上說,“ wq 文本編輯器”是運行時間最長、最成功的開源項目之一,得益于計算機世界中一些最偉大的思想貢獻。我不認為“創業公司無視所有先例來創造顛覆性的新軟件”的開發方式都是不妥的,但 Vim 提醒我們,這種協作和增量的方式同樣能產生奇跡。
光標移動效率是 vim 程序員達到甚至超過鼠標流程序員的關鍵技能。vim 中的移動光標的方式有很多,我來舉幾個我實際使用過程中應用比較頻繁的技巧:
set relativenumber(顯示相對行號)。我無意間發現的一個十分實用的技巧,比set number顯示行號更好用。通過這個設置,行號的顯示會根據當前的光標的相對位置顯示成偏移數,并動態變化。這個好處是,可以利用數字+j 數字+k來進行多行跳轉,因為是編譯行數,所以數字不會太大。否則就算要向下移動 10 行,我們可能也需要用138gg。
vim 的另一個優勢是高效修改。在 vim 下修改就要改掉傳統鼠標流的思維方式,切忌提到修改就按i。有很多高效的修改辦法,而且這些辦法往往是可重復的。下面舉一些我常用的例子: