vim基本使用
增強功能
基本設定
vim是從vi發展出來的一個文字編輯器。程式碼補完、編譯及錯誤跳轉等方便程式設計的功能特別豐富,在程式設計師中被廣泛使用。
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