菜鳥教程 - vi/vim超詳細使用講解

2021-02-19 塔克創新

什麼是vim

        Vim是從 vi 發展出來的一個文本編輯器。代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程式設計師中被廣泛使用。

        簡單的來說, vi 是老式的字處理器,不過功能已經很齊全了,但是還是有可以進步的地方。vim 則可以說是程序開發者的一項很好用的工具。

        連 vim 的官方網站 (http://www.vim.org) 自己也說 vim 是一個程序開發工具而不是文字處理軟體。

        vim 鍵盤圖:


vi/vim 的使用

        基本上 vi/vim 共分為三種模式,分別是命令模式(Command mode)輸入模式(Insert mode)底線命令模式(Last line mode)。這三種模式的作用分別是:

命令模式:

        用戶剛剛啟動 vi/vim,便進入了命令模式。

        此狀態下敲擊鍵盤動作會被Vim識別為命令,而非輸入字符。比如我們此時按下i,並不會輸入一個字符,i被當作了一個命令。

        以下是常用的幾個命令:

            i 切換到輸入模式,以輸入字符。

            x 刪除當前光標所在處的字符。

            : 切換到底線命令模式,以在最底一行輸入命令。

        若想要編輯文本:啟動Vim,進入了命令模式,按下i,切換到輸入模式。

        命令模式只有一些最基本的命令,因此仍要依靠底線命令模式輸入更多命令。

輸入模式

        在命令模式下按下i就進入了輸入模式。

        在輸入模式中,可以使用以下按鍵:

底線命令模式

        在命令模式下按下:(英文冒號)就進入了底線命令模式。

        底線命令模式可以輸入單個或多個字符的命令,可用的命令非常多。

        在底線命令模式中,基本的命令有(已經省略了冒號):

        按ESC鍵可隨時退出底線命令模式。

        簡單的說,我們可以將這三個模式想成底下的圖標來表示:

vi/vim 使用實例使用 vi/vim 進入一般模式

如果你想要使用 vi 來建立一個名為 xtark.txt 的文件時,你可以這樣做:

$ vim xtark.txt

直接輸入 vi 文件名 就能夠進入 vi 的一般模式了。請注意,記得 vi 後面一定要加文件名,不管該文件存在與否!

按下 i 進入輸入模式(也稱為編輯模式),開始編輯文字

        在一般模式之中,只要按下 i, o, a 等字符就可以進入輸入模式了!

在編輯模式當中,你可以發現在左下角狀態欄中會出現 –INSERT- 的字樣,那就是可以輸入任意字符的提示。

        這個時候,鍵盤上除了 Esc 這個按鍵之外,其他的按鍵都可以視作為一般的輸入按鈕了,所以你可以進行任何的編輯。

按下 ESC 按鈕回到一般模式

        好了,假設我已經按照上面的樣式給他編輯完畢了,那麼應該要如何退出呢?是的!沒錯!就是給他按下 Esc 這個按鈕即可!馬上你就會發現畫面左下角的 – 輸入 – 不見了!

在一般模式中按下 :wq 儲存後離開 vi

        OK,我們要存檔了,存檔並離開的指令很簡單,輸入 :wq 即可保存離開!

OK! 這樣我們就成功創建了一個 xtark.txt 的文件。

vi/vim 按鍵說明

除了上面簡易範例的 i, Esc, :wq 之外,其實 vim 還有非常多的按鍵可以使用。

第一部分:一般模式可用的光標移動、複製粘貼、搜索替換等移動光標的方法h 或 向左箭頭鍵(←)光標向左移動一個字符j 或 向下箭頭鍵(↓)光標向下移動一個字符k 或 向上箭頭鍵(↑)光標向上移動一個字符l 或 向右箭頭鍵(→)光標向右移動一個字符

如果你將右手放在鍵盤上的話,你會發現 hjkl 是排列在一起的,因此可以使用這四個按鈕來移動

光標。如果想要進行多次移動的話,例如向下移動 30 行,可以使用 "30j" 或 "30↓" 的組合按鍵, 亦即加上想要進行的次數(數字)後,按下動作即可!

[Ctrl] + [f]屏幕『向下』移動一頁,相當於 [Page Down]按鍵 (常用)[Ctrl] + [b]屏幕『向上』移動一頁,相當於 [Page Up] 按鍵 (常用)[Ctrl] + [d]屏幕『向下』移動半頁[Ctrl] + [u]屏幕『向上』移動半頁+光標移動到非空格符的下一行-光標移動到非空格符的上一行n<space>

那個 n 表示『數字』,例如 20 。按下數字後再按空格鍵,光標會

向右移動這一行的 n 個字符。例如 20<space> 則光標會向後面移動

20 個字符距離。

0 或功能鍵[Home]這是數字『 0 』:移動到這一行的最前面字符處 (常用)$ 或功能鍵[End]移動到這一行的最後面字符處(常用)H光標移動到這個屏幕的最上方那一行的第一個字符M光標移動到這個屏幕的中央那一行的第一個字符L光標移動到這個屏幕的最下方那一行的第一個字符G移動到這個檔案的最後一行(常用)nG

n 為數字。移動到這個檔案的第 n 行。例如 20G 則會移動到這個檔

案的第 20 行(可配合 :set nu)

gg移動到這個檔案的第一行,相當於 1G 啊!(常用)n<Enter>n 為數字。光標向下移動 n 行(常用)搜索替換/word

向光標之下尋找一個名稱為 word 的字符串。例如要在檔案內搜

尋 vbird 這個字符串,就輸入 /vbird 即可!(常用)

?word向光標之上尋找一個字符串名稱為 word 的字符串。n

這個 n 是英文按鍵。代表重複前一個搜尋的動作。舉例來說, 如

果剛剛我們執行 /vbird 去向下搜尋 vbird 這個字符串,則按下 n 後,

會向下繼續搜尋下一個名稱為 vbird 的字符串。如果是執行 ?vbird 的

話,那麼按下 n 則會向上繼續搜尋名稱為 vbird 的字符串!

N

這個 N 是英文按鍵。與 n 剛好相反,為『反向』進行前一個搜尋動

作。例如 /vbird 後,按下 N 則表示『向上』搜尋 vbird 。

使用 /word 配合 n 及 N 是非常有幫助的!可以讓你重複的找到一些你搜尋的關鍵詞!:n1,n2s/word1/word2/g

n1 與 n2 為數字。在第 n1 與 n2 行之間尋找 word1 這個字符串

,並將該字符串取代為 word2 !舉例來說,在 100 到 200 行之間搜

尋 vbird 並取代為 VBIRD 則:『:100,200s/vbird/VBIRD/g』。(常用)

:1,$s/word1/word2/g 或 :%s/word1/word2/g從第一行到最後一行尋找 word1 字符串,並將該字符串取代為 word2 !(常用):1,$s/word1/word2/gc 或 :%s/word1/word2/gc

從第一行到最後一行尋找 word1 字符串,並將該字符串取代為 word

2 !且在取代前顯示提示字符給用戶確認 (confirm) 是否需要取代!

(常用)

刪除、複製與貼上x, X

在一行字當中,x 為向後刪除一個字符 (相當於 [del] 按鍵),

  X 為向前刪除一個字符(相當於 [backspace] 亦即是退格鍵) (常用)

nx

n 為數字,連續向後刪除 n 個字符。舉例來說,我要連續刪除 10 

個字符, 『10x』。

dd刪除遊標所在的那一整行(常用)ndd

n 為數字。刪除光標所在的向下 n 行,例如 20dd 則是刪除 20 行 (

常用)

d1G刪除光標所在到第一行的所有數據dG刪除光標所在到最後一行的所有數據d$刪除遊標所在處,到該行的最後一個字符d0那個是數字的 0 ,刪除遊標所在處,到該行的最前面一個字符yy複製遊標所在的那一行(常用)nyy

n 為數字。複製光標所在的向下 n 行,例如 20yy 則是複製 20 行

(常用)

y1G複製遊標所在行到第一行的所有數據yG複製遊標所在行到最後一行的所有數據y0複製光標所在的那個字符到該行行首的所有數據y$複製光標所在的那個字符到該行行尾的所有數據p, P

p 為將已複製的數據在光標下一行貼上,P 則為貼在遊標上一行! 

舉例來說,我目前光標在第 20 行,且已經複製了 10 行數據。則按

下 p 後, 那 10 行數據會貼在原本的 20 行之後,亦即由 21 行開始

貼。但如果是按下 P 呢?那麼原本的第 20 行會被推到變成 30 行。

(常用)

J將光標所在行與下一行的數據結合成同一行c重複刪除多個數據,例如向下刪除 10 行,[ 10cj ]u復原前一個動作。(常用)[Ctrl]+r重做上一個動作。(常用)

這個 u 與 [Ctrl]+r 是很常用的指令!一個是復原,另一個則是重做一次~ 利用這兩個功能按鍵,

你的編輯,嘿嘿!很快樂的啦!

.

不要懷疑!這就是小數點!意思是重複前一個動作的意思。如

果你想要重複刪除、重複貼上等等動作,按下小數點『.』就好了! 

(常用)

第二部分:一般模式切換到編輯模式的可用的按鈕說明進入輸入或取代的編輯模式i, I進入輸入模式(Insert mode):

i 為『從目前光標所在處輸入』, I 為『在目前所在行的第一個非空格符處

開始輸入』。(常用)

a, A進入輸入模式(Insert mode):

a 為『從目前光標所在的下一個字符處開始輸入』, A 為『從光標所在行

的最後一個字符處開始輸入』。(常用)

o, O進入輸入模式(Insert mode):

這是英文字母 o 的大小寫。o 為『在目前光標所在的下一行處輸入新的一

行』;O 為在目前光標所在處的上一行輸入新的一行!(常用)

r, R進入取代模式(Replace mode):

r 只會取代光標所在的那一個字符一次;R會一直取代光標所在的文字,直到

按下 ESC 為止;(常用)

上面這些按鍵中,在 vi 畫面的左下角處會出現『--INSERT--』或『--REPLACE--』的字樣。由名

稱就知道該動作了吧!!特別注意的是,我們上面也提過了,你想要在檔案裡面輸入字符時, 一

定要在左下角處看到 INSERT 或 REPLACE 才能輸入喔!

[Esc]退出編輯模式,回到一般模式中(常用)第三部分:一般模式切換到指令行模式的可用的按鈕說明指令行的儲存、離開等指令:w將編輯的數據寫入硬碟檔案中(常用):w!

若文件屬性為『只讀』時,強制寫入該檔案。不過,到底能不能

寫入, 還是跟你對該檔案的檔案權限有關啊!

:q離開 vi (常用):q!若曾修改過檔案,又不想儲存,使用 ! 為強制離開不儲存檔案。注意一下啊,那個驚嘆號 (!) 在 vi 當中,常常具有『強制』的意思~:wq儲存後離開,若為 :wq! 則為強制儲存後離開 (常用)ZZ

這是大寫的 Z 喔!如果修改過,保存當前文件,然後退出!效果等

同於(保存並退出)

ZQ不保存,強制退出。效果等同於 :q!。:w [filename]將編輯的數據儲存成另一個檔案(類似另存新檔):r [filename]

在編輯的數據中,讀入另一個檔案的數據。亦即將 『filename』 

這個檔案內容加到遊標所在行後面

:n1,n2 w [filename]將 n1 到 n2 的內容儲存成 filename 這個檔案。:! command暫時離開 vi 到指令行模式下執行 command 的顯示結果!例如

『:! ls /home』即可在 vi 當中察看 /home 底下以 ls 輸出的檔案

信息!

vim 環境的變更:set nu顯示行號,設定之後,會在每一行的前綴顯示該行的行號:set nonu與 set nu 相反,為取消行號!

        特別注意,在 vi/vim 中,數字是很有意義的!數字通常代表重複做幾次的意思!也有可能是代表去到第幾個什麼什麼的意思。

        舉例來說,要刪除 50 行,則是用 『50dd』 對吧!數字加在動作之前,如我要向下移動 20 行呢?那就是『20j』或者是『20↓』即可。

相關焦點

  • 【Linux筆記】Vi/Vim編輯器
    Vim 是 Vi improved 的縮寫,是 vi 的改進版。學習vi/vim編輯器的使用是很有必要的。正如vim官網(https://www.vim.org/)中有一張很形象的說明:2、vi/vim的使用在Linux終端中輸入 vim -v 或 vi -v查看當前的vim版本(本文使用的Linux髮型版為:紅帽企業版6):
  • 教你玩轉Linux—vi/vim
    但是目前我們使用比較多的是 vim 編輯器。vim 具有程序編輯的能力,可以主動的以字體顏色辨別語法的正確性,方便程序設計。什麼是 vim?Vim是從 vi 發展出來的一個文本編輯器。代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程式設計師中被廣泛使用。
  • Linux下vi(vim)編輯器新手入門教程
    vi(vim)是上Linux 非常常用的編輯器,很多Linux發行版都默認安裝了vi(vim)。
  • vi、vim、gvim功能簡介與gvim的安裝
    gvim簡介gvim是一種非常好的代碼/腳本編寫、修改、查看的工具,在Windows、Linux系統下均能下載到該工具,能熟練使用該工具則能非常方便數字集成電路的設計過程vi、vim、gvim的聯繫與區別
  • 有關vi(vim)的常用命令
    閱讀大概需要6分鐘vi(vim)是上Linux非常常用的編輯器,很多Linux發行版都默認安裝了vi(vim)。
  • Vim 基本命令入門-如何使用Vi/Vim文本編輯器
    我只是想創建一個名為linuxidc.com.txt的文件,並使用vi文本編輯器保存並關閉它。 如何使用vi保存文件?如何在CentOS中安裝Vim,您需要在運行CentOS的系統上手動安裝Vim。Vim或Vi enhanced是著名Vi編輯器的後繼版本,幾乎可以在每個Linux發行版中找到它,並且具有一些很好的功能,例如文件和其他有用內容的語法高亮。
  • vi/vim基本使用方法
    vi/vim 基本使用方法本文介紹了vi (vim)的基本使用方法,但對於普通用戶來說基本上夠了!
  • Linux vi/vim
    Linux vi/vim所有的 Unix Like 系統都會內建 vi 文書編輯器,其他的文書編輯器則不一定會存在。
  • 精通LINUX vim/vi命令
    Linux vi/vim所有的 Unix Like 系統都會內建 vi 文書編輯器,其他的文書編輯器則不一定會存在。
  • Linux:vi/vim編輯命令
    ,重複上一步操作【3】文本翻頁操作pgup鍵 或 ctrl+b快捷鍵鍵:向上翻頁pgdn鍵 或 ctrl+f快捷鍵鍵:向下翻頁【4】底線命令模式操作::q  退出:q!
  • linux之vi,vim命令
    n(Next) p(revious):file列出當前打開的所有文件vim 自定義技巧複製粘貼取消縮進:set paste進入 paste 模式以後,可以在插入模式下粘貼內容,不會有任何變形這個參數做了這麼多事:textwidth設置為0wrapmargin
  • Linux系列教程(十)——Linux文本編輯器vim
    這樣我們在實際應用中,遇到需要實現某個功能,我們腦海只要能想起來適用於某個命令就行,至於詳細格式我們可以通過查資料。當我們使用的多了,會不知不覺的記住這些命令,這才是正確的學習方法。Linux命令有很多,如果初學者就想全部記住這些命令的詳細格式,會對我們產生很大的學習挫敗性,還沒記完這些命令,或許你已經喪失了學習Linux的熱情了。
  • Linux之Vi/Vim和進程管理
    但是目前我們使用比較多的是 vim 編輯器。vim 具有程序編輯的能力,可以主動的以字體顏色辨別語法的正確性,方便程序設計。什麼是 vim?Vim是從 vi 發展出來的一個文本編輯器。代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程式設計師中被廣泛使用。簡單的來說, vi 是老式的字處理器,不過功能已經很齊全了,但是還是有可以進步的地方。vim 則可以說是程序開發者的一項很好用的工具。
  • 【Linux入門學習之】vi/vim編輯器必知必會
    比如經常聽說的就有Emacs、pico、nano、joe與vim等。vim可以看做是vi的高級版。我們為什麼一定要學習vim呢?有以下幾個原因:(1)所有的Unix like系統都會內置vi文本編輯器,其他的文本編輯器則不一定會存在。(2)很多軟體的編輯接口都會主動調用vi。
  • vim編輯器使用介紹
    第三章 vim編輯器3.1 vi編輯器簡介Vim是從 vi 發展出來的一個文本編輯器。代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程式設計師中被廣泛使用。簡單的來說, vi 是老式的字處理器,不過功能已經很齊全了,但是還是有可以進步的地方。
  • Vim 入門教程
    前言0.1 簡介 vim 被譽為『編輯器之神』,與之同時代的 emacs 被譽為『神之編輯器』。可以看得出 vim 在編輯器的地位是很高的,得益於 vim 的指法,敲起代碼來如行雲流水。特別膜拜創始人創始出這麼方便的敲代碼的指法,這篇文章就是來帶你入坑 vim 指法操作。之前我也寫了一篇給在校學生的幾點建議裡面提到了 vim 的重要性,以及好處,這裡給出入門教程。
  • vim的基本使用
    Linux下的最出名的編輯器大概就是 VIM 和 emacs.鍵,再輸入您想尋找的字符,如果第一次找的關鍵字不是您想要的,可以一直按「n」會往前尋找到您要的關鍵字為止。D) 保存文件「w」:在冒號輸入字母「w」就可以將文件保存起來。E) 離開vi「q」:按「q」就是退出,如果無法離開vi,可以在「q」後跟一個「!」強制離開vi。
  • 實用技能:Linux Vim命令使用
    在講vim前,先講下vi 和vim 的區別哦它倆都是多模式編輯器,不同的是vim 是vi的升級版本,它不僅兼容vi的所有指令,而且還有一些新的特性在裡面
  • CDR教程:小白到高手超詳細講解
    會員免費學習全站23套教程,也包括以後更新發布的支持微信公眾號+小程序+APP+PC網站多平臺學習支持試聽 全套CDR教程小白到高手超詳細講解【CDR教程】售前介紹 (VIP學員免費學習)今天的分享就到這,如果教程對大家有用,希望大家多多分享點讚支持小編哦!
  • vim 基本使用方法
    在 Linux 下我們經常使用 vim 來寫程序,學會使用它可以說是學習 Linux 的必經之路。Linux 系統默認是安裝了 vi 編輯器,而 vim 是 vi 的升級版,功能更強,所以我們更經常用 vim,這次就來介紹使用 vim 的正確姿勢,廢話不多說,先來安裝 vim。