1. 程式人生 > >第十章:vim程式編輯器

第十章:vim程式編輯器

vi 文字編輯器 vim是高階的vi

一、vi與vim

1.1、為什麼要學vim

  1. 很多Unix Like都內建了vi + 很多程式編輯軟體都會呼叫vi + vi具有程式編輯能力
  2. vi 是文字編輯器 vim是高階的vi,可以是一個程式開發工具
  3. vim很根據副檔名或者檔案內的開頭資訊自動呼叫該程式的語法判別式。

1.2、vi的使用

  1. vi共有三種模式:一般模式、編輯模式、命令列模式
    1、一般模式:用vi開啟一個檔案就進入一般模式了(預設的模式)
    2、編輯模式
    3、命令列模式:一般模式下輸入“: / ?”三個中的一個進入命令韓模式

  2. 三種模式的轉換關係
    這裡寫圖片描述

  3. 編輯模式與命令列模式不能直接切換

2.1、簡單執行範例

  1. 使用vi進入一般模式
    1、vi test.txt:新建(開啟)檔案test.txt
  2. i進入編輯模式
  3. ESC從編輯模式進入一般模式
  4. 一般模式輸入:wq儲存後離開vi,強制寫入wq!

2.2、按鍵說明

  1. 一般模式可用的按鍵說明:P278,以下為常用的按鍵
    1、ctrl + f == page down、ctrl + b == page up
    2、0==home、$ == end
    3、G:移動到檔案的最後一行、gg:移動到檔案的第一行
    4、/?word:向下(上)查詢關鍵字word,n/N為重複查詢上一次的/?
    5、:1,¥s/word1/word2/g(c):全文替換(顯示確認)
    6、xX:向後/向前刪除一個字元
    7、dd:刪除貫標所在的一行,n(數字)dd,同理yy是複製,nyy
    8、pP:在游標的下一行/上一行貼上
    9、u:復原前一個操作,即撤銷,Ctrl + r:重複上一個操作
  2. 一般模式切換到編輯模式
    1、i I/a A/o O:進入插入模式
    2、r R:進入替換模式
  3. 一般模式切換到命令列模式
    1、:w:寫入(儲存),w!:強制寫入
    2、:q:離開vi(不儲存),:q!也不儲存
    3、:wq:儲存後離開,:wq!:強制儲存後離開
    4、:w 檔名:另存為

2.4、vim的儲存檔案、回覆與開啟時的警告資訊

  1. 使用vim編輯檔案的時候,會自動建立一個.filename.swp的暫存檔案用於資料恢復。
  2. 例如在用vim編輯檔案時非法斷電了,在此vi開啟該檔案會有相應的提示資訊:
    1、可能有多個使用者同時在編輯該檔案
    2、vim直接crash,該問題常見的處理方法為:按R(recover)鍵載入.filename.swp暫存檔案進行資料恢復,恢復後按D(delete)手動刪除該暫存檔案。
    3、對暫存檔案的其它操作:
    ①、O(open read-only):開啟並只讀
    ②、E(edit anyway):正常開啟該檔案 並且編輯
    ③、R
    ④、D
    ⑤、Q(quit):離開
    ⑥、A(abort):忽略這個資訊,與Q類似

三、vim的功能

  1. 大部分的distributions中vi都被vim替代了,alias中vim=vi,即執行vi即是執行vim,vim添加了顏色顯示功能,並且支援很多程式語法

3.1、塊選擇(visual block)

  1. 對塊進行操作:v字元選擇、V行選擇、Ctrl + v塊選擇、y複製選擇(反白)部分、d刪除

3.2、多文字編輯

  1. :n、:N、:files:編輯下一個檔案、編輯上一個檔案、列出vim編輯的所有檔案

3.3、多視窗功能

  1. 將一個檔案切割成多個視窗進行展示:sp filename,如果沒filename則切割開啟的檔案、如果有filename,則多視窗顯示本檔案和filename
  2. ctrl + w + j/下箭頭(k/上箭頭):(前兩個鍵先按,後一個鍵鬆開前兩個鍵再按)游標移動到下方/上方的視窗。
  3. ctrl + w + q:結束視窗

3.4、vim環境設定與記錄

  1. vim會將使用者的相關操作記錄下來(例如有些distribution在查詢字元反白後,下次編輯還會反白 + 游標定位在上一次退出的位置),對應的檔案為~/.viminfo,使用vim會自動產生
  2. 設定vim編輯器的相關檔案/etc/vimrc,但是不建議修改。

四、vim使用的注意事項

4.1、中文亂碼問題

4.2、Dos與Linux的斷行字元
1、兩者的斷行字元不一樣(換行?),解決方法,進行格式轉換,使用UNIX2dos或dos2UNIX進行轉換。

4.3、語系編碼的轉換

  1. 語系編碼的轉換,例如將big5編碼轉換成utf8,。可以使用iconv這個命令