1. 程式人生 > >vim 超強編輯器

vim 超強編輯器

一、Vim編輯器的基本操作

1. 基本操作

  1. VIM:模式化的編輯器

  2. 基本模式

    • 編輯模式 (命令模式)

    • 輸入模式 (插入模式)

    • 末行模式 (vim內建的命令列介面)

    • Note:開啟的時候預設的模式是編輯模式

  3. 開啟檔案

    • # vim [OPTION]... FILE...

    • +#:開啟檔案後,直接讓游標處於第#行的行首

    • +/PATTERN:開啟檔案後,直接讓游標處於第一個被PATTERN匹配到的行的行首;

  4. 模式轉換

  • 模式轉換:

    • :q:退出

    • :!:強制退出,丟棄做出的修改;

    • :wq:儲存退出;

    • :x:儲存退出;

    • :w /PATH/TO/SOMEWHERE:當前編輯的文字儲存到別的檔案;

    • ZZ:儲存退出;

    • ESC

    • ESC

    • iinsert,在游標所在處前面插入;

    • aappend,在游標所在處的後面插入;

    • oopen,在當前游標所在行的下一行開啟新行,並轉換為輸入模式;

    • I:在當前游標所在行的行首

      輸入;

    • A:在當前游標所在行的行尾輸入;

    • O:在游標所在行的上一行開啟一個新行,並轉換為輸入模式;

    • 編輯模式 – – > 輸入模式

    • 輸入模式 – – > 編輯模式

    • 編輯模式 – – > 末行模式

    • 末行模式 – – > 編輯模式

    • 關閉檔案

  • 圖示說明如下: (轉載請註明出處)

2. 游標跳轉:

  1. 字元間跳轉:

    • h

    • l

    • k

    • j

    • h,j,k,l

    • #COMMAND:跳轉由#指定的個數的字元;

  2. 單詞間跳轉:

    • w:跳轉至下一個單詞或後一個單詞的詞首

    • e:跳轉至當前或下一個單詞的詞尾

    • b:跳轉至當前或下一個單詞的詞首

    • #COMMAND:由#指定一次跳轉的單詞數;

  3. 行首行尾跳轉:

    • ^:跳轉至行首的第一個非空白字元;

    • 0:跳轉至絕對的行首

    • $:跳轉至絕對行尾

  4. 行間移動:

    • #G:跳轉至由#指定行;

    • G:跳轉至最後一行;

    • 1Ggg:跳轉至第一行;

  5. 句間移動:

    • ):跳轉至下一個句子;

    • (:跳轉至上一個句子;

  6. 段落間移動:

    • }:跳轉至下一段

    • {:跳轉至上一段

3. vim的編輯命令:

  1. 字元編輯:

    • x:刪除游標處的單個字元;

    • #x:刪除游標處起始的#個字元;

    • xp:交換游標所在處的字元及其後面字元的位置;

  2. 替換命令:

    • rreplace

    • r:替換游標所在處的字元;(單字元替換)

  3. 刪除命令:

    • #dd:向下刪除#行;

    • d$:刪除至絕對行尾

    • d^:刪除至行首的第一個非空白字元

    • d0:刪除至絕對行首

    • d:刪除命令,可結合游標跳轉字元,實現範圍刪除;

    • dd:刪除游標所在行;

  4. 貼上命令:

    • p,put,paste)

    • p:緩衝區中儲存的如果為整行內容,則貼上至當前游標所在行的方;否則,則貼上至當前游標所在處的面;

    • P:緩衝區中儲存的如果為整行內容,則貼上至當前游標所在行的方;否則,則貼上至當前游標所在處的面;

  5. 複製命令:

    • y$:複製至絕對行尾

    • y0:複製至絕對行首

    • y^:複製至行首的第一個非空白字元

    • yy:複製整行

    • #yy:複製多行;

    • yyank

    • y:複製,工作行行為相似於d命令;

  6. 改變命令:

    • 編輯模式 – -> 輸入模式

    • cchange

    • c:修改

    • cc:刪除並輸入新內容

    • #cc:一次刪除#行

二、其它編輯操作

1.視覺化模式

  • v:按字元選定

  • V:按行選定

  • Note:經常結合編輯命令;

2. 撤銷此前的編輯:

  • u(undo):撤銷此前的操作;

    • #u:撤銷指定次數的操作;

  • 撤銷此前的撤銷:

    • Ctrl+r

  • 重複前一個編輯操作:

    • .

三、翻屏操作

  • Ctrl+f:向檔案尾部翻一屏;

  • Ctrl+b:向檔案首部翻一屏;

  • Ctrl+d:向檔案尾部翻半屏;

  • Ctrl+u:向檔案首部翻半屏;

  • vim自帶的練習教程

    • vimtutor

四、vim的末行模式

  • 內建的命令列介面

  • 特性

  • (1). 地址定界

    • 後跟一個編輯命令:

    • d:刪除指定範圍的內容

    • y:複製指定範圍的內容

    • w /PATH/TO/SOMEWHERE:將範圍內的行另存至指定檔案中;

    • r /PATH/FROM/SOMEFILE:在指定位置插入指定檔案中的所有內容;

    • :start_pos,end_pos

    • #:具體的第#行,例如:2表示第2行;

    • #,#:從左側#表示起始,到右側#表示結束;

    • #,+#:從左側#表示的行開始,加上右側#表示的行數;

    • .當前行;

    • $:最後一行;

    • %:全文;相當於(1,$)

    • /pat1/,/pat2/:表示從第一次被pat1匹配到的行開始,一直到pat2匹配到的行結束

    • 使用方式

  • (2). 查詢

    • n:與命令同方向;

    • N:與命令反方向;

    • /PATTERN:從當前游標所在處向檔案尾部查詢

    • ?PATTERN:從當前游標所在處向檔案首部查詢

  • (3). 查詢並替換

    • s/要查詢的內容/替換為的內容/修飾符

    • 查詢替換中的分隔符/可替換為其它字元,例如:

    • i:忽略大小寫

    • g:全域性替換;預設情況下,沒一行只替換第一次出現的內容;

    • 要查詢的內容:可使用模式;

    • 替換為的內容:不能使用模式,但可以使用\1, \2, …等後向引用符號;好可以使用"&"引用前面查詢時查詢到的整個內容;

    • 修飾符:

    • [email protected]@@

    • s###

    • s:在末行模式下完成查詢替換操作

六、vim的檔案模式

1. 多檔案模式

  • vim FILE1 FILE2 FILE3 …

    • :next 切換至下一個文字

    • :prev 切換至前一個文字

    • :first 切換至前一個文字

    • :last 切換至最後一個文字

    • :wall 儲存所有

    • :qall 退出所有

2. 視窗分隔模式

  • vim -o|-O FILE1 FILE2 …

    • -o:水平分割

    • -O:垂直分割

    • 在視窗間切換Ctrl+w,Arrow

3. 單檔案視窗分割:

  • Ctrl+w,s:split,水平分割

  • Ctrl+w,v:vertical,垂直分割

4. 定製vim的工作特性:

  • 配置檔案:(永久有效)

    • 全域性/etc/vimrc

    • 個人~/.vimrc   (預設不存在,需要自己建立)

  • 末行:(當前vim程序有效)

  • (1) 行號

    • 顯示set number,簡寫為:set nu

    • 取消顯示set nonumber,簡寫為:set nonu

  • (2) 括號匹配

    • 匹配set showmatch,簡寫為:set sm

    • 取消匹配set nosm

  • (3) 自動縮排

    • 開啟set ai

    • 禁用set noai

  • (4) 高亮搜尋

    • 開啟set hlsearch

    • 禁用set nohlsearch

  • (5) 語法高亮

    • 開啟syntax on

    • 禁用syntax off

  • (6) 忽略字元大小寫

    • 啟用set ic

    • 禁用set noic

5. 書籍推薦:《Vim-handbook-cn-72》

6. 獲取幫助

  • 在末行模式下:help SUBJECT