困擾無數人的Linux Vim退出方法,原來這麼簡單?

2020-12-16 人郵異步社區

來源 | 異步 | 文末贈書

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-

相關焦點

  • linux中的vim命令
    如何查看命令的幫助文檔,三種方式:內置命令:help ls外部命令:ls --help,簡單的幫助文檔手冊man ls, 通過使用man查看詳細的幫助內容vim和vi命令本質上就是一個命令,這個命令是在linux命令中專門用來編輯文本文件的
  • Linux下vim編輯器的使用小技巧
    當系統管理員在編輯文本的過程中出現錯誤的時候,如錯誤的修改了某個參數或者刪除了不該刪除的文本,此時可以再重新操作將原來的內容修改過來。但是如果不知道修改之前的內容,或者說錯誤修改的內容比較多,此時系統管理員可以按ESC鍵或者U鍵,來取消上次的操作。如果採取這個操作沒有效果的話,那麼可以使用組合鍵ctrl+r鍵來恢復上次的不正確操作。
  • vim+py文件構造linux後門
    linux 後門有很多,像bash後門,openssh後門等等,今天,我將帶大家探討一下python後門。python後門,其實就是用python編寫的一個簡單的socket伺服器端。這個一個簡單的python後門就實現了,但實際中,有很多伺服器是沒有安裝python應用的,那在沒有python應用的伺服器下就不能使用了麼?答案是可以使用,現如今的vim編輯器為了更好的支持python語言,默認是安裝了python擴展,通過vim的python擴展,也可以去啟動一個python程序。
  • vim命令使用總結
    vim簡介vim 是linux系統自帶的文本編輯器。vim 共有三種模式:命令模式:用vim打開文件就進入了命令模式;輸入模式:在命令模式輸入i/I/a/A/o/O就進入輸入模式;在輸入模式下按鍵esc,則退出輸入模式進入命令模式底線模式:在命令模式按下英文冒號:就進入了底線模式;二. vim
  • Linux系列教程(十)——Linux文本編輯器vim
    當我們使用的多了,會不知不覺的記住這些命令,這才是正確的學習方法。Linux命令有很多,如果初學者就想全部記住這些命令的詳細格式,會對我們產生很大的學習挫敗性,還沒記完這些命令,或許你已經喪失了學習Linux的熱情了。結束了Linux常用命令的學習,接下來我們學習Linux最常用的文本編輯器命令 vim。
  • linux-vi或vim命令
    vi編輯中中文亂碼,修改方法:set encoding=utf-8 或set encoding=utf8高級一些的編輯器,都會包含宏功能,vim當然不能缺少了,在vim中使用宏是非常方便的::qx 開始記錄宏,並將結果存入寄存器xq 退出記錄模式@x 播放記錄在x寄存器中的宏命令
  • Linux vim-vi 使用說明
    Linux下使用vim或vi編譯器,編輯文檔Linux平臺使用系統自帶vi 或在ubuntu下終端中使用  「apt-get install vim」 命令進行編譯器安裝打開終端(或使用Alt+Ctrl+t 快捷鍵命令打開終端)新建一個文件:touch  app.txt
  • 在windows上怎麼用vim
    windows  中怎麼安裝vim ,以及使用 vim 時會遇到的一些麻煩、 失靈現象。先baidu搜vim org進vim網站 下載gvim7.exe,並安裝agree,next,yes 直到完成。
  • Vim 入門:基礎 | Linux 中國
    好消息是你可以使用相同的命令在 Vim 中創建或打開文件:vim <FILE_NAME>,其中 <FILE_NAME> 表示要創建或修改的目標文件名。讓我們通過輸入 vim HelloWorld.java 來創建一個名為 HelloWorld.java 的文件。你好,Vim!
  • vim常用命令有哪些?Linux入門學習
    vim是一個文本編輯程序,沒有菜單,只有命令,且命令繁多。在運維培訓學習中,vim編輯器都有哪些知識點?有哪些命令需要掌握?進入分屏模式命令:sp將屏幕分為兩部分-->水平命令:vsp將屏幕分為兩部分-->垂直命令:sp(vsp)+文件名水平或垂直拆分窗口顯示兩個不同的文件退出分屏模式
  • Vim 起步的五個技巧
    我使用了這麼多年的 Linux ,我會的也僅僅只是打開一個文件,使用上下左右箭頭按鍵來移動光標,切換到插入模式,更改一些文本,保存,然後退出。但那只是 Vim 的最最基本的操作。我的技能水平只能讓我在終端使用 Vim 修改文本,但是它並沒有任何一個我想像中強大的文本處理功能。這樣我完全無法用 Vim 發揮出勝出 Pico 和 Nano 的能力。
  • 在VIM中實現對嵌入式軟體的調試
    既然VIM和gdb的功能如此強大,又完全免費,而且完全適合嵌入式這種特殊的開發模式,那麼有沒有將二者強強聯合的方法呢?有,那就是vimgdb。 vimgdb是給VIM提供一個可選特性的補丁。它可以在VIM編輯器裡提供完整的gdb調試器支持,比如設置斷點、查看變量值、gdb命令補全等等,並且這些操作可以在VIM中直觀地顯示出來。下面闡述在VIM中實現時嵌入式軟體調試的具體過程。
  • 使用PXE+Kickstart無人值守批量安裝Linux系統
    我之前都是使用光碟鏡像來安裝Linux系統的方法,坦白講,該方法適用於只安裝少量Linux系統的情況。如果生產環境中有數百臺伺服器都需要安裝系統,這種方式就不合時宜了。這時,我們就需要使用PXE + TFTP +FTP + DHCP + Kickstart服務搭建出一個無人值守安裝系統。
  • [洛穀日報第29期]OI中可以用到的Linux基礎教程
    ④調試的方法與dev-c++類似,上方有個「調試」菜單,這裡不再講,後面會講終端中使用gdb調試。(3)NOI Linux不自帶的Geany、Code::Blocks等:因為不自帶,考試用不了,所以我也不做使用講解。
  • Linux 內核學習:環境搭建和內核編譯
    在開始我們的linux內核學習之前。首先需要搭建我們的工作學習環境,即安裝linux系統。關於linux系統構建本身的學問已經複雜到可以成為一個獨立的學科了,畢竟這不是我們學習的內容,所以我選擇最簡單的方法:選擇一個linux發行版進行安裝。
  • 遊戲夜讀|vim一份極簡手冊
    到了後來,出現了一個預覽窗口能看到全文的編輯器創想,於是全屏編輯時代來臨,vim就是這個時代的一個優秀代表。搜索,下載,安裝,接著雙擊打開vim,來到一個歡迎頁面。首先,學會避免以自我為中心:不要按鍵盤上的字母"i"。映入眼帘的歡迎頁面有幾行介紹,包括幾個輸入提示,比如:查看版本、幫助、退出。
  • Vim,牛逼
    隨後敲回車鍵,就進入 xxx 文件的閱讀模式了。如下圖所示。可以在不保存內容的情況下退出 Vim。鍵入 :wq 可以在保存內容的情況下退出 Vim。**溫馨提醒:**如果你是在插入模式,想要退出或者保存內容的話,一定要先按 esc 鍵退出到閱讀模式。
  • VIM編輯器學習
    VIM學習方法本文引用地址:http://www.eepw.com.cn/article/151642.htm  Vim目前已經有類Unix版和Windows版,儘管vim較vi已經改良了不少,但是初次使用還是會一頭霧水,不知如何操作,所以學習vim要首先過2關。
  • Linux入門,Linux入門教程:Linux文件管理
    建議文件命名規則:由於linux嚴格區分大小寫,所以儘量都用小寫字母如果必須對文件名進行分割,建議使用"_",例如:itheima_bj_2020.loga.txt001.txtvi的命令幾乎全部都可以在vim上使用。
  • Linux一句話精彩問答,綻放系統工程師集體智慧
    Gentoo升級方法更新portage tree:  emerge –sync更新/安裝軟體包: emerge [軟體包名] (如安裝vim:  emerge vim)Debian跟別的發行版還是有很大的差別的,用Debian做伺服器維護更加方便。