VIM基本操作,掌握這些就夠了

1 引言

VIM是unxi或類unix操作系統必備的一款文本編輯器(當然目前也有windows版本GVim),其基本功能還是用來瀏覽編輯文本文件的。本文也是闡述文件的編輯保存功能,其他的一些高級功能請另行查閱相關文檔。

編輯文件前確定鍵盤大寫鎖定未開啓。先看一個實例:

打開文件test.txt,並將第一行刪除:
vim test.txt  --> gg --> dd --> shift + : --> wq

vim test.txt : VIM打開文件test.txt,如果文件不存在就是新建
gg           : 跳轉到第一行
dd           : 刪除當前光標所在行
shift + :    : 同時按下鍵盤shift鍵和:(L旁邊的冒號分號鍵),進入命令模式
wq           : 在上一步執行後的光標出,輸入wq,保存文件並退出

關於保存文件的一點說明:
w           : 英文write的縮寫,即寫入更新文件,也叫保存文件
q           : 英文quit的縮寫,退出當前文件編輯
w filename  : 保存到文件filename中
q!          : 放棄更改,強制退出

VIM的熟練使用,可以解放鼠標及光標,雙手一直在鍵盤字母輸入區域,可以大大提高輸入效率。另外由於VIM的操作涉及各個字符按鍵,多用VIM也可以提高對鍵盤操作熟練度。

2 操作模式

VIM的靈魂在於它的操作模式,不同模式間切換,能夠極大的豐富按鍵功能。VIM的操作模式有正常模式、插入模式、命令模式,以上三種是最基本必用的,還有一種可視模式,主要用於塊操作,可用要不用,但對程序員來說其列編輯模式還是十分有用的。

正常模式(normal-mode)

在其他模式下,按下Esc按鍵(一次不行多按幾次)就能回到正常模式。
正常模式,各種按鍵就相當於是一個功能鍵,代表的是某個功能。
正常模式也是最主要的一種模式,也是用的最多的,通常切換到其他模式下,都要先切換到正常模式,即其他模式間是不支持相互切換的。

插入模式(insert-mode)

插入模式,就是普通文本輸入模式。
從正常模式進入到插入模式有多種方式,以下列舉出一些常用的:

i            : 在光標前插入
I            : 在行首插入
a            : 在光標後插入
A            : 在行尾新增輸入(**大寫字母,未開啓大寫鎖定,可以shift+字母,**)
o            : 在光標下方新增一行,進行輸入
O            : 在光標上方新增一行,進行輸入
s            : 刪除光標所在字符,後進行插入
S            : 刪除光標所在行,後進行輸入

命令模式(command-mode)

命令模式下,可以執行各種命令,如w保存文件命令,還有諸如查找、替換、配置VIM選項等命令。
正常模式下,輸入:(shift+冒號分號鍵)可進入到命令模式,在屏幕出現:命令行,可輸入功能命令。

可視模式(visual-mode)

可視模式,主要是用來高亮選中一大段塊內容,正常模式只能移動光標,但不能選中一段內容。選中一段數據後,可以用於複製、保存、刪除等操作(此處的保存相當於實現部分保存功能,選中某部分內容,另存爲文件)。
可視模式有三種常見的模式,在可視模式下,即可相互切換:

v         : 普通可視,移動光標可以選中一段數據
V         : 可視行,移動光標*以行爲單位*選中一段數據
ctrl + v  : 可視列,移動光標*以列爲單位*選中一段數據,可進行可視列編輯

3 基本操作

文件的打開,保存在引言部分已有說明,在此不再複述。
本章節操作無特別說明都是在正常模式下使用,其他模式下會特意說明。

光標移動

  1. 基本移動

    h j k l 分別相當於光標 ←↓↑→,hjkl用於移動光標用得是最基本也是最多的。

  2. 其他的光標移動

    按鍵 功能說明 備註
    0 行首 按下按鍵0,光標會移動到所在行的行首
    $ 行尾
    b 單詞起始 b是begin首字母
    e 單詞結尾 e是end首字母
    w 下一個單詞 w是word首字母
    + 下一行行頭 行頭錶行第一個非空字符
    - 上一行行頭


    光標移動的操作是其他一切操作的基礎。

輸入內容

切換到插入模式,即可輸入文本內容,見第2節操作模式部分。

剪切、更改、複製、粘貼

  1. 剪切

    按鍵 功能說明 備註
    x 剪切字符 將光標所在字符剪切
    dd 剪切整行
    D 剪切到行尾
    dw 從光標處剪切到下個單詞起始位置 d是一個組合功能按鍵,單獨按沒有意義
    db 從光標處剪切到所在單詞起始位置
    de 從光標處剪切到所在單詞結束位置
    d0 剪切到行首 行頭錶行第一個非空字符
    d$ 剪切到行尾 與D效果一致,比D要多按個鍵
    d… d還可以接其他的光標移動操作按鍵,此處不再一一列舉


    關於剪切組合功能d, d是delete的首字母,其與光標移動的操作配合,能實現靈活的剪切操作功能,所有的光標移動操作都能與d組合使用。另外還可配合重複操作(下文有介紹),可快速實現多項的剪切,如5dd,表示刪除5行。剪切的數據存在於vim的緩衝區。

  2. 更改

    按鍵 功能說明 備註
    cc 更改整行 先剪切整行,進入插入模式,進行輸入
    C 更改至行尾 先剪切至行尾,進入插入模式,進行輸入
    cw 更改到下個單詞起始位置 c是一個組合功能按鍵,與d用法相似
    c… c還可以接其他的光標移動操作按鍵,此處不再一一列舉


    其實更改d功能與剪切c功能相比,就是多了個進入插入模式功能。cw與dwi是一樣的效果。 c是單詞change的首字母。

  3. 複製

    按鍵 功能說明 備註
    yy 複製整行 將光標所在行複製下來,複製到行尾只能用y$
    Y 同上 同上
    yw 複製到下個單詞起始位置 y也是一個組合功能按鍵,與d用法相同
    y… y還可以接其他的光標移動操作按鍵,此處不再一一列舉


    y組合按鍵的的用法,同剪切d的用法,與光標移動按鍵及重複操作配合,靈活實現複製操作。y用於複製,是單詞yank的首字母,之所以不用copy的首字母c, 是因爲c同時也是change的首字母,用於更改。複製的數據也是存在於vim的緩衝區。

  4. 粘貼

    p : 字母p,是用於正常模式下的粘貼,粘貼來自vim緩衝區的內容,包括剪切、更改去除、複製的內容。p是paste的首字母p

    如果要粘貼外部複製的數據,如在vim外的crtl+c複製來的數據,那麼切換到插入模式下,使用shift+Insert組合按鍵來實現粘貼,vim內部是不支持crtl+c、ctrl+v。

小結:剪切(d)、更改(c)、複製(y)都是可以配合光標移動按鍵使用,用法相同,需要熟練掌握。

查找、替換

  1. 查找

    vim的查找支持基本的正則表達式查找。

    按鍵 功能說明 備註
    /[pattern] 向下查找模式[pattren],按下Enter鍵開開始查找 /a 表示向下查找字母a; /[1-9] 表示向下查找1-9的任意一位數字
    ?[pattern] 向上查找模式[pattren]
    n 順方向查找下一處 n是next的首字母
    N 反方向查找下一處
    % 括號匹配 顯示匹配的括號,程序編寫檢查括號常用


    有些字符有特殊功能使用,需要轉義字符/轉義,如查找/, 要用“/\/”。下方的替換操作也是如此。
    /及?查找,最後需要按下Enter鍵纔開始執行動作。

    tips:

    查找單詞全詞匹配: /\<plus\> 查找單詞plus。
    其中\是轉義字符,<表示單詞開頭,>表示單詞結尾。

    查找時忽略大小寫:/plus\c 結尾使用\c表示忽略大小寫。
    如果要默認忽略大小寫,需要通過設置命令,下文會加以介紹。

  2. 替換

    s替換操作要切換到命令模式,在命令行上輸入,支持正則表達式模式操作

    按鍵 功能說明 備註
    r+單字符 單字符替換,將光標所在字符替換爲r後的字符 正常模式下使用,r是replace首字母
    R 連續替換多個字符 正常模式下使用
    s/old/new 將所在行匹配到的第一個old替換成new
    s/old/new/g 將所在行匹配到的所有old替換成new g是global的首字母
    s/old/new/c 將所在行匹配到的所有old替換成new,但替換前會提示確定 c是confirm的首字母
    %s/old/new/gc 將整個文件匹配到的old替換成new
    #,#s/old/new/gc 是一個數字表行數,將兩個數字之間的行中的old替換成new 10,20s/old/new/g 表示將10到20行中的old替換成new


    s替換操作,也是最後要按下Enter鍵纔開始執行

重複及撤銷類操作

  1. 重複操作

    重複操作在前面已有提及,5dd表示刪除5行。
    重複操作就是在動作前面加個一個數字,表示用於連續執行動作次數。
    5j 向下移動五行;
    5dd 刪除5行;
    5yy 複製5行。

  2. 撤銷類操作

    撤銷類的操作,是針對文件修改的撤銷,未修改操作如光標移動,沒有撤銷說法,即光標移動後,再撤銷按鍵,是無法回到上次光標位置。

    按鍵 功能說明 備註
    u 撤銷上一次的修改操作
    ctrl+r 恢復撤銷 r是recover的首字母;如果誤操作撤銷,可按ctrl+r恢復
    U 撤銷或者恢復整行的修改 按下U,撤銷整行的修改,撤銷後再按一次U是恢復整行的修改


文件定位及狀態

本節主要介紹文件的定位操作(包括跳轉,翻頁等功能),以及查看文件狀態。

按鍵 功能說明 備註
ctrl+g 在屏幕下方顯示當前文件狀態
gg 跳轉到文件開頭
G 跳轉到文件末尾
數字+G 跳轉指定數字行
數字+gg 同上
ctrl+f 前滾一屏,也即下一頁
ctrl+b 後滾一屏,也即上一頁


命令模式操作

本節介紹下命令模式下的一些常用命令操作,顧名思義,首先得按:進入到命令模式下。

按鍵 功能說明 備註
set xxx 設置類命令,設置xxx選項,支持簡寫爲se
w FILENAME 以文件名FILENAME保存文件,相當於另存爲 w 保存當前文件
r FILENAME 提取文件FILENAME內容插入到當前光標處
r ![shell cmd] 執行shell cmd提取其標準輸出內容,插入到當前光標處 如r !ls表示在外部shell下執行ls命令並將其輸出內容,插入到當前光標處
!shell cmd 在外部shell中執行shell cmd


關於設置類常用命令:

按鍵 功能說明 備註
se nu 在每一行前顯示出行號 se是set的簡寫,number的簡寫
se nonu 取消設置行號,即不顯示出行號 取消設置某一命令,都是在相應命令前加上no組成取消命令,nonu就是nonumber的簡寫
se ic 設置查找時忽略大小寫 ic是igorecase的簡寫
se hls 將查找到的字符串高亮顯示 hls是hlsearch的簡寫
se is 在輸入查找內容時,就實時顯示出第一個找到的內容 is是incsearch的簡寫
help cmd 獲取命令幫助 如:help set、help incsearch


列塊操作,不常用(notepad++支持,程序員用的多)

1、保存部分內容
 shift+v --> 移動光標選中若干行 --> : w FILENAME

2、列編輯插入

crtl+v --> 移動光標選中若干列 --> shift+i 列插入--> 輸入文本 --> 連按兩次Esc鍵 --> 選中的列前都有輸入文本

crtl+v --> 移動光標選中若干列 --> d --> 刪除選中列

例:
//a[0].no    = 1;
//a[0].name  = "XiaoMing";
//a[0].grade = 1;
//a[0].class = 2;
將每行前的//刪除,且將a[0]中的0改成1

按如下操作:
光標移動到第一行行首處 --> crtl+v --> 按j跟l選中所有的// --> d --> 光標移動到第一行的0上 --> 移動j選中所有的0 --> 輸入r1,將所有0替換成1 --> 結束 

tips:
    I : 列編輯下,在光標處插入
    A : 列編輯下,在光標後插入

小結

掌握以上基本操作,相信就可以實現大部分的文件編輯功能。當然VIM的功能按鍵多如牛毛,往往在正常模式誤按到某個鍵而調用了其相應功能,只要使用撤銷操作,以及Esc鍵,回到正常模式下。

發佈了37 篇原創文章 · 獲贊 13 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章