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進階實戰演練,迎來升華
以上的基本操作你都學到了嗎?