Linux 學(xué)習(xí)筆記(五):Vim 快速入門

一、Vim 模式介紹

  • 普通模式(Normal mode)

    在普通模式中,用的編輯器命令,比如移動光標(biāo),刪除文本等等。這也是Vim啟動后的默認(rèn)模式。這正好和許多新用戶期待的操作方式相反(大多數(shù)編輯器默認(rèn)模式為插入模式)。

    Vim強(qiáng)大的編輯能來自于其普通模式命令。普通模式命令往往需要一個操作符結(jié)尾。例如普通模式命令 dd 刪除當(dāng)前行,第一個"d"的后面可以跟另外的移動命令來代替第二個"d",比如用移動到下一行的"j"鍵就可以刪除當(dāng)前行和下一行。另外還可以指定命令重復(fù)次數(shù),2dd(重復(fù)dd兩次),和 dj 的效果是一樣的。在學(xué)習(xí)了各種各樣的文本間移動 跳轉(zhuǎn)的命令和其他的普通模式的編輯命令,并且能夠靈活組合使用的話,能夠比那些沒有模式的編輯器更加高效地進(jìn)行文本編輯。

  • 插入模式(Insert mode)

    在這個模式中,大多數(shù)按鍵都會向文本緩沖中插入文本。大多數(shù)新用戶希望文本編輯器編輯過程中一直保持這個模式。

  • 可視模式(Visual mode)

    這個模式與普通模式比較相似。但是移動命令會擴(kuò)大高亮的文本區(qū)域。高亮區(qū)域可以是字符、行或者是一塊文本。當(dāng)執(zhí)行一個非移動命令時,命令會被執(zhí)行到這塊高亮的區(qū)域上。Vim 的"文本對象"也能和移動命令一樣用在這個模式中。

  • 選擇模式(Select mode)

    這個模式和無模式編輯器的行為比較相似(Windows標(biāo)準(zhǔn)文本控件的方式)。這個模式中,可以用鼠標(biāo)或者光標(biāo)鍵高亮選擇文本,不過輸入任何字符的話,Vim會用這個字符替換選擇的高亮文本塊,并且自動進(jìn)入插入模式。

  • 命令行模式(Command line mode)

    在命令行模式中可以輸入會被解釋成并執(zhí)行的文本。例如執(zhí)行命令(:鍵),搜索(/?鍵)或者過濾命令(!鍵)。在命令執(zhí)行之后,Vim返回到命令行模式之前的模式,通常是普通模式。

  • Ex模式(Ex mode)

    這和命令行模式比較相似,在使用 :visual 命令離開Ex模式前,可以一次執(zhí)行多條命令。

  • 三種常用模式的切換

    以上六種模式我們常用到就是普通模式、插入模式和命令行模式。

    vim 啟動進(jìn)入普通模式,處于插入模式或命令行模式時只需要按 Esc 或者
    Ctrl+[ 即可進(jìn)入普通模式。普通模式中按 i(插入)或 a(附加)鍵都可以進(jìn)入插入模式,普通模式中按 : 進(jìn)入命令行模式。命令行模式中輸入 wq 回車后保存并退出 vim。

二、Vim 編輯器的基本操作

  • 進(jìn)入 Vim

    vim 后面加上你要打開的已存在的文件名或者不存在(則作為新建文件)的文件名。

      vim practice_1.txt
    

    直接使用vim也可以打開vim編輯器,但是不會打開任何文件。

      vim
    

    進(jìn)入命令行模式后輸入 :e 文件路徑 同樣可以打開相應(yīng)文件。

  • 游標(biāo)移動

    在普通模式下,使用方向鍵或者h(yuǎn),j,k,l鍵可以移動游標(biāo)。

    按鍵 說明
    h
    l
    j
    k
    w 移動到下一個單詞
    b 移動到上一個單詞
  • 進(jìn)入插入模式

    在普通模式下使用下面的鍵將進(jìn)入插入模式,并可以從相應(yīng)的位置開始輸入。

    命令 說明
    i 在當(dāng)前光標(biāo)處進(jìn)行編輯
    I 在行首插入
    A 在行末插入
    a 在光標(biāo)后插入編輯
    o 在當(dāng)前行后插入一個新行
    O 在當(dāng)前行前插入一個新行
    cw 替換從光標(biāo)所在位置后到一個單詞結(jié)尾的字符
  • 命令行模式下保存文檔

    從普通模式輸入 : 進(jìn)入命令行模式,輸入 w 并回車,保存文檔。輸入 :w 文件名 可以將文檔另存為其他文件名或存到其它路徑下。

  • 命令行模式下退出 vim

    從普通模式輸入 : 進(jìn)入命令行模式,輸入 wq 回車,保存并退出編輯。

    以下為其它幾種退出方式:

    命令 說明
    :q! 強(qiáng)制退出,不保存
    :q 退出
    :wq! 強(qiáng)制保存并退出
    :w <文件路徑> 另存為
    :saveas <文件路徑> 另存為
    :x 保存并退出
    :wq 保存并退出
  • 普通模式下退出 vim

    普通模式下鍵入 Shift+zz 即可保存退出 vim 。

  • 普通模式下刪除 vim 文本信息

    進(jìn)入普通模式,使用下列命令可以進(jìn)行文本快速刪除:

    命令 說明
    x 刪除游標(biāo)所在的字符
    X 刪除游標(biāo)所在前一個字符
    Delete 刪除游標(biāo)所在的字符
    dd 刪除整行
    dw 刪除一個單詞(英文)
    d$或D 刪除至行尾
    d^ 刪除至行首
    dG 刪除到文檔結(jié)尾處
    d1G 刪至文檔首部

    除此之外,在命令之前加上數(shù)字,表示一次刪除多行,如:2dd 表示一次刪除2行。

三、 Vim 文本編輯命令

  • 重復(fù)執(zhí)行上次命令

    在普通模式下 . (小數(shù)點(diǎn))表示重復(fù)上一次的命令操作

  • 執(zhí)行指定次數(shù)相同的命令

    進(jìn)入普通模式輸入 N<command> ,N 表示重復(fù)后面的次數(shù),

    在普通模式下,你還可以使用 dw 或者 daw (delete a word)刪除一個單詞,dnw (n替換為相應(yīng)數(shù)字) 表示刪除n個單詞。

  • 使用命令進(jìn)行快速調(diào)整縮進(jìn)操作

    縮進(jìn)操作均在普通模式下有效

    • 普通模式下輸入 >> 整行將向右縮進(jìn)(用于格式化代碼)
    • 普通模式下輸入 << 整行向左回退
  • 行間跳轉(zhuǎn)

    如果默認(rèn)沒有顯示行號,請先進(jìn)入命令模式,輸入 :set nu 以顯示行號

    命令 說明
    nG(n Shift+g) 游標(biāo)移動到第 n 行
    gg 游標(biāo)移動到到第一行
    G(Shift+g) 到最后一行

    小技巧:你在完成依次跳轉(zhuǎn)后,可以使用 Ctrl+o 快速回到上一次(跳轉(zhuǎn)前)光標(biāo)所在位置

  • 行內(nèi)跳轉(zhuǎn)

    普通模式下使用下列命令在行內(nèi)按照單詞為單位進(jìn)行跳轉(zhuǎn)

    命令 說明
    w 到下一個單詞的開頭
    e 到當(dāng)前單詞的結(jié)尾
    b 到前一個單詞的開頭
    ge 到前一個單詞的結(jié)尾
    0或^ 到行頭
    $ 到行尾
    f<字母> 向后搜索<字母>并跳轉(zhuǎn)到第一個匹配的位置
    F<字母> 向前搜索<字母>并跳轉(zhuǎn)到第一個匹配的位置
    t<字母> 向后搜索<字母>并跳轉(zhuǎn)到第一個匹配位置之前的一個字母(不常用)
    T<字母> 向前搜索<字母>并跳轉(zhuǎn)到第一個匹配位置之后的一個字母(不常用)
  • 復(fù)制及粘貼文本

    普通模式中使用y復(fù)制,使用 p 粘貼。

    命令 說明
    yy 復(fù)制游標(biāo)所在的整行( 3yy 表示復(fù)制3行)
    y^ 復(fù)制至行首,或 y0(不含光標(biāo)所在處字符)
    y$ 復(fù)制至行尾(含光標(biāo)所在處字符)
    yw 復(fù)制一個單詞( y2w 復(fù)制兩個單詞)
    yG 復(fù)制至文本末
    y1G 復(fù)制至文本開頭
    p 代表粘貼至光標(biāo)后(下)
    P 代表粘貼至光標(biāo)前(上)
  • 剪切及粘貼

    其實(shí) dd 刪除命令就是剪切,你每次 dd 刪除文檔內(nèi)容后,便可以使用 p 來粘貼,也這一點(diǎn)可以讓我們實(shí)現(xiàn)一個很爽快的功能——交換上下行ddp

四、查找與替換

  • 替換和撤銷(Undo)命令

    替換和Undo命令都是針對普通模式下的操作

    命令 說明
    r+<待替換字母> 將游標(biāo)所在字母替換為指定字母
    R 連續(xù)替換,直到按下 Esc
    cc 替換整行,即刪除游標(biāo)所在行,并進(jìn)入插入模式
    cw 替換一個單詞,即刪除一個單詞,并進(jìn)入插入模式
    C 替換游標(biāo)以后至行末
    ~ 反轉(zhuǎn)游標(biāo)所在字母大小寫
    u{n} 撤銷一次或n次操作
    U 撤銷當(dāng)前行的所有修改
    Ctrl+r redo,即撤銷undo的操作
  • shiftwidth 命令

    shiftwidth 命令是指 >> 命令產(chǎn)生的縮進(jìn)(可以簡寫成 sw ) 普通模式下輸入:進(jìn)入命令行模式下對 shiftwidth 值進(jìn)行設(shè)置可以控制縮進(jìn)和回退的字符數(shù)。

    獲取目前的設(shè)定值 :set shiftwidth?

    設(shè)置縮進(jìn)為10個字符 :set shiftwidth=10

  • 調(diào)整文本位置

    命令行模式下輸入 :ce (center)命令使本行內(nèi)容居中

    命令行模式下輸入 :ri (right)命令使本行文本靠右

    命令行模式下輸入 :le (left) 命令使本行內(nèi)容靠左

  • 快速查找

    使用 vim 打開文件進(jìn)行編輯(搜索高亮需在配置文件 .vimrc 中設(shè)置 set hls

    • 普通模式下輸入 /icmp 然后回車即可查找字符串 icmp
    • 普通模式下輸入 n 查找下一個 icmp
    • 普通模式下輸入 ?tcp 向上查找字符串 tcp
    • 普通模式下輸入 N 查找上一個出現(xiàn)的 tcp
    • 命令行模式下輸入 noh 然后回車即可取消搜索
  • 高級查找

    • 普通模式下輸入 \* 尋找游標(biāo)所在處的單詞
    • 普通模式下輸入 \# 同上,但 \# 是向前(上)找,\* 則是向后(下)找
    • 普通模式下輸入 g\*\* ,但部分符合該單詞即可
    • 普通模式下輸入 g\#\#,但部分符合該單詞即可
    • 以上查找 n,N 的繼續(xù)查找命令依然可以用

五、Vim 高級功能入門

  • 使用 vim 編輯多個文件

    編輯多個文件有兩種形式,一種是在進(jìn)入 vim 前使用的參數(shù)就是多個文件。另一種就是進(jìn)入 vim 后再編輯其他的文件。默認(rèn)進(jìn)入第一個文件的編輯界面

    • 命令行模式下輸入 :n 編輯下一個文件,可以加 !:n! 強(qiáng)制切換,之前一個文件的輸入沒有保存,僅僅切換到另一個文件。
    • 命令行模式下輸入 :N 編輯上一個文件,可以加 !:N! 強(qiáng)制切換,之前文件內(nèi)的輸入沒有保存,僅僅是切換到另一個文件。
  • 進(jìn)入 vim 后打開新文件

    • 命令行模式下輸入 :e 3.txt 打開新文件 3.txt
    • 命令行模式下輸入 :e# 回到前一個文件
    • 命令行模式下輸入 :ls 可以列出以前編輯過的文檔
    • 命令行模式下輸入 :b 2.txt(或者編號)可以直接進(jìn)入文件 2.txt 編輯
    • 命令行模式下輸入 :bd 2.txt(或者編號)可以刪除以前編輯過的列表中的文件項(xiàng)目
    • 命令行模式下輸入 :e! 4.txt ,新打開文件 4.txt,放棄正在編輯的文件
    • 命令行模式下輸入 :f 顯示正在編輯的文件名
    • 命令行模式下輸入 :f new.txt ,改變正在編輯的文件名字為 new.txt
  • 恢復(fù)文件

    如果因?yàn)閿嚯姷仍蛟斐晌臋n沒有保存,可以采用恢復(fù)方式,vim -r 進(jìn)入文檔后,輸入 :ewcover 1.txt 來恢復(fù)

  • 可視模式命令簡介

    • 在普通模式下輸入 v(小寫),進(jìn)入字符選擇模式,就可以移動光標(biāo),光標(biāo)走過的地方就會選取。再次按下v后就會取消選取。
    • 在普通模式下輸入 Shift+v(小寫),進(jìn)入行選擇模式,按下 V 之后就會把整行選取,您可以上下移動光標(biāo)選更多的行,同樣,再按一次 Shift+v 就可以取消選取。
    • 在普通模式下輸入 Ctrl+v(小寫),這是區(qū)域選擇模式,可以進(jìn)行矩形區(qū)域選擇,再按一次 Ctrl+v 取消選取。
    • 在可視模式下輸入 d 刪除選取區(qū)域內(nèi)容
    • 在可視模式下輸入 y 復(fù)制選取區(qū)域內(nèi)容
  • 視窗操作簡介

    vim 可以在一個界面里打開多個窗口進(jìn)行編輯,這些編輯窗口稱為 vim 的視窗。 打開方法有很多種,例如可以使用在命令行模式下輸入 :new 打開一個新的 vim 視窗,并進(jìn)入視窗編輯一個新文件(普通模式下輸入 Ctrl+w 也可以),除了 :new 命令,下述列舉的多種方法也可以在命令模式或普通模式下打開新的視窗:

    • 命令行模式下輸入 :sp 1.txt 打開新的水平分屏視窗來編輯 1.txt
    • 命令行模式下輸入 :vsp 2.txt 打開新的垂直分屏視窗來編輯 2.txt
    • 普通模式下 Ctrl+ws 將當(dāng)前窗口分割成兩個水平的窗口
    • 普通模式下 Ctrl+wv 將當(dāng)前窗口分割成兩個垂直的窗口
    • 普通模式下 Ctrl+wq:q 結(jié)束分割出來的視窗。如果在新視窗中有輸入需要使用強(qiáng)制符 !:q!
    • 普通模式下 Ctrl+wo 打開一個視窗并且隱藏之前的所有視窗
    • 普通模式下 Ctrl+wj 移至下面視窗
    • 普通模式下 Ctrl+wk 移至上面視窗
    • 普通模式下 Ctrl+wh 移至左邊視窗
    • 普通模式下 Ctrl+wl 移至右邊視窗
    • 普通模式下 Ctrl+wJ 將當(dāng)前視窗移至下面
    • 普通模式下 Ctrl+wK 將當(dāng)前視窗移至上面
    • 普通模式下 Ctrl+wH 將當(dāng)前視窗移至左邊
    • 普通模式下 Ctrl+wL 將當(dāng)前視窗移至右邊
    • 普通模式下 Ctrl+w- 減小視窗的高度
    • 普通模式下 Ctrl+w+ 增加視窗的高度
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 1.一級目錄1.1二級目錄1.1.1三級目錄 一、實(shí)驗(yàn)介紹 1.1 實(shí)驗(yàn)內(nèi)容 本次實(shí)驗(yàn)將學(xué)習(xí)vim中的不同模式和一...
    粵川閱讀 273評論 0 1
  • 命令歷史 以:和/開頭的命令都有歷史紀(jì)錄,可以首先鍵入:或/然后按上下箭頭來選擇某個歷史命令。 啟動vim 在命令...
    im螞蟻閱讀 30,804評論 3 48
  • dpkg 學(xué)習(xí) 安裝mysql apt-get install mysql-server-5.6 apt-get ...
    sharonji閱讀 448評論 0 0
  • 朋友說我的音樂播放器里都是些老掉牙的歌曲,我當(dāng)時很想說你找找有幾首新近的音樂的,后來想想算了,也沒什么好反駁...
    gulonghaoyue閱讀 184評論 0 0
  • 那些去了遠(yuǎn)方的人,比遠(yuǎn)方更遠(yuǎn),是內(nèi)省中的異國他鄉(xiāng),遙遠(yuǎn),遼闊,光明,安靜,又深邃黑暗,永恒緘默,永無回還,笑容烙在...
    咸叔說閱讀 199評論 0 0