來源 | 異步 | 文末贈書
Vim作為使用最廣泛的文本編輯器之一,在編程的世界中,一直流傳著一個關於它的神秘問題,知道答案的人寥寥無幾,卻又難以啟齒,那就是:怎麼退出Vim?
據說,很多程式設計師就算退休了,也沒有退出Vim,比如這位:
他已經使用Vim兩年了,為什麼呢?因為他不知道怎麼退出來。
而另一部分程式設計師則表示:很簡單,我重新賣了一臺電腦就搞定了。
很多人打開Vim卻不知道怎麼退出,這可不是開玩笑,而是一個尷尬的事實。
在知名IT技術問答網站Stack Overflow上,「How to exit the Vim editor?」這個問題的總瀏覽量目前已經超過200萬,無數的程式設計師前來探討如何退出Vim。
而在百度經驗上,類似的問題在一年裡也有超過35萬的瀏覽量。
下面我們來看看這個問題下面的回答,這條回答準確無誤,操作規範,卻又讓無數使用Vim的程式設計師無地自容。(該回答翻譯自Stack Overflow)
如何退出Vim?
點擊Esc鍵進入「普通模式」。然後,您可以鍵入:以進入「命令行模式」。冒號(:)將出現在屏幕底部,您可以鍵入以下命令之一。要執行命令,請Enter按鍵。
· :q 退出(的縮寫:quit)
· :q!不保存即退出(的縮寫:quit!)
· :wq 寫和退出
· :wq! 即使文件只有讀權限也可以寫並退出(如果文件沒有寫權限:強制寫)
· :x 寫入並退出(類似於:wq,但僅在有更改時寫入)
· :exit寫入並退出(與相同:x)
· :qa全部退出(的縮寫:quitall)
· :cq 退出而不保存並使Vim返回非零錯誤(即退出時出現錯誤)
也可以通過輸入ZZ保存並退出(與:x)或ZQ直接退出(與:q!)來直接從「普通模式」退出Vim
如今Vim已經更新到Vim8,「怎麼退出Vim」早已經成為程式設計師之間的一個熱梗,更多的程式設計師是表面上不會退出,背地裡儼然已經自學成Vim大佬。
既然前面我們已經學會了如何退出Vim這個重點,那麼我們就可以開始深入學習Vim的旅程了。
在Cygwin中感受類UNIX操作體驗
Cygwin是Windows的類UNIX環境,它提供了一種命令行界面,致力於將強大的UNIX Shell命令行以及相關的支撐工具帶到Windows作業系統中。
Cygwin的應用程式可能叫作Cygwin64 Terminal或Cygwin Termianl,這取決於作業系統的類型。找到其圖標,如圖所示。
打開它,可以看到如下的命令行提示界面,Linux用戶應該相當熟悉了。
Cygwin是在Windows環境下體驗Linux系統Shell命令的一種方式,這意味著,一旦選擇使用Cygwin時,就需要遵循Linux系統中的指令和約定。
同時,還需要注意Windows樣式的換行符和Linux樣式的換行符,因為Windows和Linux處理換行的方式不同。如果在Vim中遇到^M字符無法識別,則對相應的文件執行dos2unix命令就可以解決。
Vim的基本操作
1
打開文件
首先,使用者可以打開自己最喜歡的命令行終端(Linux和macOS系統中是終端,Windows系統中為Cygwin),跟隨下面的步驟來編寫一個非常基礎的Python程序。
先從一個簡單的開平方根計算器開始,運行如下命令。
$vimanimal_farm.py
這會打開一個名為animal_farm.py的文件。如果此文件存在,則讀者會看到它的內容;如果文件不存在,則得到一個空白界面
Vim的底部狀態中顯示了文件名,旁邊還有[New File]字樣,表示這是一個新文件。現在讀者已經用Vim打開了第一個文件。
如果之前已經打開過Vim,則可以用如下命令加載一個文件(別忘了命令後面要按Enter鍵)。
$vimanimal_farm.py
這有可能是你在Vim中運行的第一條命令。輸入冒號字符:表示進入命令行模式,在此模式下輸入的文字會被Vim解析為命令。按Enter鍵可以結束命令,通過Vim命令可以執行很多複雜的操作,包括訪問系統的命令行。命令:e表示編輯(edit)。
2
修改文字
默認情況下,Vim處於正常模式(normal mode),即每個鍵都對應於某個命令。
輸入命令i將使Vim進入插入模式(insert mode)。它會在底部的狀態欄中顯示-- INSERT --字樣
插入模式下的行為和在其他無模式編輯器中相似。正常情況下,除添加新文本之外,不需要花太多篇幅介紹插入模式。
現在輸入如下所示的代碼,這就是之前提到的Python程序。
按下Esc鍵可以返回到Vim的正常模式。這時,狀態欄上的-- INSERT --字樣消失,可以繼續在Vim中輸入命令。
上述代碼並不是Python編程的最佳實踐,這裡只是用它來展示Vim的一些功能。
3
保存和關閉文件
保存文件可執行命令:w。
注意,在輸入命令後按下Enter鍵。
:w表示寫(write)的意思。
:w命令後面也可以接一個文件名,並另存為新文件。修改後的內容會保存到這個新文件中去,當前文件也變成了這個新文件。嘗試執行命令:w animal_farm2.py。
退出Vim,並檢查一下文件是否已經生成。命令:q表示退出(quit)的意思。也可以將寫和退出這兩個命令組合為:wq,表示先保存後退出。
退出Vim之後又回到了系統的命令行,可以檢查一下當前目錄中的內容是否發生了變化,如下所示:
$ls
$python3animal_farm.py
$python3animal_farm.pycatdogsheep
下圖中顯示了這3條命令的輸出結果。
Vim進階實戰演練,迎來升華
以上的基本操作你都學到了嗎?熟練之後我們就可以結合專業教程進行Vim8的實戰演練了。
作為全面介紹Vim使用方法的教程,本書介紹了各種常用的文本編輯方法和程序設計中的實用操作,深入Vim內部的數據結構和VimScript腳本編程,內容詳實。
本書基於Vim 8平臺,介紹了前沿分支Neovim,還推薦了更先進的Oni編輯器,兼容並包,集Vim社區典型使用經驗和發展趨勢於一體。
本書適用於初級、中級和高級程式設計師。本書將介紹如何高效地將Vim應用於日常工作流程的方方面面。雖然書中涉及了Python,但Python或Vim的經驗並不是閱讀本書所必需的。
目錄:
● 第1章
開始Vim之旅。
介紹基本概念。
● 第2章,
高級編輯和文本瀏覽。
介紹了光標移動方法和更複雜的編輯操作,另外,還介紹了幾種插件。
● 第3章
使用先導鍵——插件管理。
介紹了模式、鍵盤映射和插件管理。
● 第4章
理解文本。
介紹如何基於語義地使用代碼庫,並在代碼庫中瀏覽文件。
● 第5章
構建、測試和執行。
介紹如何在編輯器內外運行代碼。
● 第6章
用正則表達式和宏來重構代碼,深入介紹代碼重構操作。
● 第7章
定製自己的Vim。
討論了如何進一步定製個人的Vim工作流程。
● 第8章
卓爾不凡的Vimscript。
深入介紹了Vim提供的強大腳本語言。
● 第9章
Neovim。
推介了一種新的Vim變體。
● 第10章
還要學些什麼。
本章為讀者提供了一些建議以供參考,並推薦了一些讀者可能會感興趣的資源站點。
-END-