最近常在遠端使用,逼得一定要用 vim,也趁這個機會來讓自己對 vim 熟一點~
命令的格式如下,預設 number 是 1
1
[ number ] [ command ] object 或者 [ command ] [ number ] object
INSEART 模式
1
2
3
4
5
6
i # 在游標前開始進入插入模式
I # 在行首進入插入模式
a # 在游標後進入插入模式
A # 在行尾進入插入模式
o # 將在光標的下方打開新的一行並進入插入模式
O # 將在光標的上方打開新的一行並進入插入模式
位置
1
2
3
4
w # 從當前光標當前位置直到單字/單詞末尾,包括空格。
e # 從當前光標當前位置直到單字/單詞末尾,但是 *不* 包括空格。
$ # 從當前光標當前位置直到當前行末。
0 # 從當前光標當前位置直到當前行首。
更改類
刪除類
1
2
3
4
5
x # 刪除光標字
d # 刪除
dw # 光標處刪除至一個單字/單詞的末尾
dd # 刪除整一個當前行
d $ # 從當前光標刪除到行末
撤消類
1
2
3
u # 撤消最後執行的命令
U # 欲撤消在一行中所做的改動
CTRL - R # 欲撤消以前的撤消命令,恢復以前的操作結果
置入類
替換類
1
2
r [ word ] # 輸入 r 和一個字符替換光標所在位置的字符
R # 可連續替換多個字符
搜索類
1
2
3
4
/ [word] # 查找字符串
? [word] # 逆向查找字符串
n # 查找同上一次的字符串
N # 向相反方向查找同上一次的字
定位
1
2
3
4
5
6
gg # 跳至第一行
G # 跳至最後一行。
[ 行號 ] G # 直接跳到某一行
H # 跳至視窗頂端
M # 跳至視窗中間
L # 跳至視窗底端
配對括號的查找
1
% # 可以查找配對的括號 ) 、 ] 、 } 。 ** ,再次按 % 就可以跳回配對的第一個括號處。
修正錯誤
1
2
3
4
:s / old / new # 在一行內替換頭一個字符串 old 為新的字符串 new
:s / old / new / g # 在一行內替換所有的字符串 old 為新的字符串 new
:% s / old / new / g # 在文件內替換所有的字符串 old 為新的字符串 new,請輸入
:% s / old / new / gc # 進行全文替換時詢問用戶確認每個替換需添加 c 選項,請輸入
VIM 內執行外部命令的方法
1
2
3
: ! [ command ] # 輸入一個外部命令可以執行該外部命令。
: ! dir # 用于顯示當前目錄的內容。
: ! rm FILENAME #用于刪除名為 FILENAME 的文件。
設定類
安裝
新增一個 ~/.vimrc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
" Solarized Dark 記得要先安裝
syntax enable
set t_Co=256
" let g : solarized_termtrans = 1
let g : solarized_termcolors = 256
" 上色模式-針對亮背景上色,預設為亮背景(白色等)上色,但是終端機的初始背景色為深紫色,會出現文字失蹤 ( 例如註解為深藍色 ) 的情況。將這一行換成 :set bg=dark 即可。
set background=dark
colorscheme solarized
" 忽略大小寫 Ignore Case
:set ic
" 高亮度搜尋 high light search
:set hlsearch
" 在輸入搜尋樣本的期間就會開始進行搜尋
:set incsearch
" 顯示右下角的一些狀態列說明
:set ruler
" 顯示行號:對於 debug 相當有幫助 ! ( 加上 run 數字會跟著跑 )
:set nu rnu
" 自動對齊縮排:如果上一行有兩個 tab 的寬度,按 enter 繼續編輯下一行時會自動保留兩個 tab 鍵的寬度。
:set ai
" 光標底線:光標所在的那一行會有底線,幫助尋找光標位置
:set cursorline
" 縮排間隔數 ( 預設為 8 個空白對齊 ),也就是說按一次 tab 鍵,游標會自動跳 4 格空白字元的寬度。雖有多個空格但實際上只有一個 tab 字元。注意:也就是說,在其他環境下,看到 tab 字元,依舊是 8 個空白寬
:set tabstop=4
" 自動縮排對齊間隔數:向右或向左一個縮排的寬度
:set shiftwidth = 4
" vim底下有一個視窗,用以顯示狀態
:set laststatus=2
" 有用 lightline 要加這行
:set noshowmode
Reference