[Linux]-VIM常用操作與基本設定說明

2020-08-16 13:09:36

vim基本使用

增強功能

基本設定

 

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

 

vim基本使用

vim有三種模式,分別是命令模式(Command mode)、輸入模式(Insert mode)和底線命令模式(Last line mode)。

命令模式

剛啓動時,就是命令模式;此時所有鍵盤動作被識別爲命令。

切換模式:

  • i 切換到輸入模式(從當前位置輸入),I在行首第一個非空白字元輸入

  • a 在遊標後插入,A 在行尾插入

  • o 在當前行後插入新行,O 在當前行前插入新行

  • r 進入替換模式(只替換當前字元後續即爲插入模式),R一直爲替換模式,直到按Esc退出替換模式

  • : 切換到底線命令模式

操作命令:

  • dd 刪除當前行

  • yy 複製當前行

  • p 貼上到下一行,P爲貼上到上一行

  • x 刪除當前遊標所在處的字元,X爲刪除遊標前的字元

  • u undo,復原操作

  • Ctrl+r redo,重做上一個動作

  • .(小數點) 重複上一個命令

  • J 合併當前行與下一行

  • cw 刪除遊標至當前當前單詞尾的內容,並切換到輸入模式

數位、命令組合後會產生更強的功能:

[n]dd #刪除當前行向下共n行
d1G #刪除第一行至當前行
dG #刪除當前行至檔案尾(最後一行)
d$ #刪除遊標到行尾
d0 #刪除關閉到行首

[n]yy #複製當前行向下共n行
y1G #複製第一行至當前行
yG #複製當前行至檔案尾(最後一行)
y$ #複製遊標到行尾
y0 #複製關閉到行首

搜尋

在命令列模式下輸入/或?進行搜尋(查詢字串末尾新增\c爲大小寫不敏感查詢;新增\C爲大小寫敏感)

  • /<word> 向下搜尋單詞

  • ?<word> 向上搜尋單詞

  • n 重複前面的搜尋(下一個)

  • N 反向重複前面搜尋(/時爲上一個,?時爲下一個)

/a\c  # 查詢所有a或A
/a\C  # 只查詢a

遊標操作

hjkl分別表示左下上右移動遊標

行間操作

  • gg 移動到第一行

  • G 移動到最後一行

  • Ctrl+f 下移一頁

  • Ctrl+b 上移一頁

  • Ctrl+d 下移半頁

  • Ctrl+u 上移半頁

  • [N]G 移動到第N行(按行數後,再按G),或者:N更方便

  • [N]<enter> 下移N行(先按數位鍵,再按回車)

行內操作

  • 0(數位) 移動到行首

  • ^ 移動到行首(第一個非空白字元處)

  • $ 移動到行尾

  • g_ 移動到行尾(最後一個非空白字元處)

  • [N]<space> 後移N個字元(先按數位鍵,再按空格)

  • w 下一個單詞頭

  • e 下一個單詞尾(若當前不在單詞尾部,在跳到當前單詞的尾部;否則下一個單詞的尾部)

  • f[a] 移到當前行下一個指定字元處(如a)

  • F[a] 移到當前行上一個指定字元處(如a)

輸入模式

輸入模式就是我們常用的編輯模式,可在命令模式下切換過來(常用i);
Esc退出輸入模式,切回到命令模式。

底線命令模式

在命令模式下按:(冒號),進入底線命令模式;按Esc切回到命令模式。常用命令:

  • q 退出

  • q! 不儲存退出(丟棄當前的修改)

  • w 儲存

  • w [filename] 數據另存爲filename

  • r [filename] 將[filename]內容插入到下一行

替換刪除

替換操作:[addr]s/<ori>/<new>/[option]

[addr]表示搜尋範圍,省略時爲當前行:

  • 1,[N] 從第一行到N行

  • % 整個檔案,同1,$

  • .,$ 從當前行到檔案尾

[option]表示操作型別,省略時僅對每行第一個匹配進行替換:

  • g 全域性替換

  • c 需進行確認

  • i 不區分大小

刪除匹配行 :g/<pattern>/d

刪除範例

#刪除所有空行
:g/^$/d

#多個空格替換爲一個空格(+要跳脫)
:s/ \+/ /g

替換範例

#將當前行第一個a替換爲b
:s/a/b/

#將當前行的所有a替換爲b
:s/a/b/g

#將每行第一個a替換爲b
:%s/a/b

#將整個檔案的所有a替換爲b
:%s/a/b/g

#將1至3行的第一個a替換爲b
:1,3s/a/b/

在源字串和目的字串中出現特殊字元,如'/','<','>',','等需要前面加反斜槓\進行跳脫

增強功能

多行操作

:set paste:進入貼上模式,複製內容保持原樣,不會自動縮排

在命令列模式下,可以通過N1,N2 <cmd>來操作多行

  • 9,12 copy 16:9~12行復制到16行後,可簡寫co

  • 9,12 move 16:9~12行移動到16行後,可簡寫m

  • 9,12 del:刪除9~12行,可簡寫d

塊操作(列)

以多行註釋爲例:

  • 在命令列模式下,按Ctrl+v,進入列模式;

  • 通過上下鍵選擇要註釋的行;

  • I(大寫),進入輸入模式;

  • 輸入(如#12:)增加的內容;

  • Esc,稍等就會發現所有選中行都修改完成。

分屏功能

啓動時分屏:

# 上下分屏(橫向分屏),N是數位,表示分成幾個屏
vim -o[N] file1 file2 ...

# 左右分屏(縱向分屏)
vim -O[N] file1 file2 ...

把遊標移到下一個的屏中:Ctrl+W w

關閉分屏

# 關閉當前視窗
Ctrl+W c

# 關閉當前視窗,如果只剩最後一個了,則退出vim。
Ctrl+W q

開啓分屏

# 上下分割當前開啓的檔案。
Ctrl+W s
# 左右分割當前開啓的檔案。 
Ctrl+W v

# 上下分割,並開啓一個新的檔案。
:sp filename
# 左右分割,並開啓一個新的檔案。
:vsp filename

基本設定

vim的全域性設定一般在/etc/vim/vimrc,個人的設定在~/.vimrc;修改組態檔,增加:

syntax on
set number
set showcmd
set autoindent
set tabstop=4
set shiftwidth=4
set cursorline
set showmatch