1. 光標的移動
字符移動
h:向左移動一個字符
j:向下移動一行
k:向上移動一行
l:向右移動一個字符
數字+h|j|k|l移動指定的行或者字符
單詞移動
w: 將光標向前移動到下一個單詞的詞首
b: 將光標向後移動到前一個單詞的詞首
e: 將光標移動到下一個單詞的詞末
ge: 將光標移動到前一個單詞的詞末
2w: 指定移動的次數
行移動
$: 移動到行尾
0: 移動到行首
^: 移動到行首的第一個非空字符
2|:移動到第二列
fx:將光標移動到當前行第一個字符x上
3fx:將光標移動到當前行第3字符x上
tx:將光標移動到目標字符的前一個字符上
fx和tx可以通過;和,進行重複移動,;表示正向重複 ,表示反向重複
%:用於符號之間的移動,它可以在(),[],{}之間跳躍
文本塊移動
(, 移動到當前句子的開頭
), 移動到下一句子的開頭
{, 移動到當前段的開頭
}, 移動到下一段的開頭
[[, 移動到當前節的開頭
]], 移動到下一節的開頭
屏幕中移動
gg:移動到整個文件的開頭
G: 移動到整個文件的結尾
xG:跳轉到指定的行
H: 移動到當前屏幕的開始
M: 移動到當前屏幕的中間
L: 移動到當前屏幕的末尾
x%: 移動到文章指定的比例位置
兩點或者單引號可以返回到跳轉前的位置(“或者”)
ctrl+G: 查看當前文件的位置狀態
2. 滾屏和跳轉
半屏滾動: ctrl+u(向上滾動) ctrl+d(向下滾動)
全屏滾動: ctrl+f(向上滾動) ctrl+b(向下滾動)
定位光標的位置:
- zz: 將光標所在位置置於屏幕的中間
- zt: 將光標所在位置置於屏幕的頂部
- zb: 將光標所在位置置於屏幕的底部
設置跳轉標記:
- mx,my,mz設置三個位置(如何設置)
x,
y,`z 跳轉到設置
3. 文本插入操作
i 在當前光標的前面插入字符
a 在當前光標的後面追加字符
o 在光標所在行的下一行行首插入字符
I 在一行的開頭添加文本
A 在一行的結尾添加文本
O 在光標所在行的上一行插入文本
s 刪除當前光標所在的字符並進入插入模式
S 刪除光標所在處的行,並進入插入模式
注意: 通過u可以撤銷之前的修改
4. 文本刪除
字符刪除
- x: 刪除當前光標所在的字符
- X: 刪除當前光標之前的字符
單詞刪除:
- dw: 刪除一個單詞(從光標到空白)
- daw: 無論光標在什麼位置,刪除光標所在的整個單詞,包括單詞後面的空白字符
- diw: 刪除整個單詞,但是保留後面的空白字符不刪除
- d2w: 刪除從當前光標開始的連續兩個單詞
- d$: 刪除光標到行未的所有單詞
- d0: 刪除光標到行首的所有單詞
- dx:等價於x
- dh:等價於X
刪除行:
- dd 刪除光標所在的行,等價於D
- 5dd,刪除從光標開始向下的5行
- dgg:刪除從光標到文本的開頭
- dG:刪除從光標到文辦的結尾
- 啓發,d+位置或者範圍可以組合出不同的刪除命令
行合併
- J: 刪除一個分行符,將當前行與下一行合併
5. 文本的複製、剪貼與粘貼
複製文本
y: 複製
p:粘貼
yw:複製一個單詞
y2w: 複製兩個單詞
y$: 複製從當前光標到行結尾的所有單詞
y0: 複製從當前光標到行首的所有單詞
yy: 複製一整行 (複製到光標所在行的下一行)
2yy:複製當前光標所在行開始的2行
複製文板塊:
- 首先輸入v進入可視化模式
- 移動光標選擇文本
- 執行復制與粘貼的操作
剪切文本
先刪除(同上),再粘貼(p)
6 文本的修改與替換
cw: 刪除從光標處到單詞結尾的文本並進入插入模式
cb: 刪除從光標處到單詞開頭的文本並進入插入模式
cc: 刪除光標所在行並進入到插入模式
~: 修改光標下字符的大小寫
r: 替換當前光標下的字符
R: 進入到替換模式
xp: 交換光標和下一個字符
7 組合命令的使用
複製
- yL (複製從光標到屏幕底部的所有內容)
- yH (複製從光標到屏幕頂部的所有內容)
- y+ (複製從光標及其下一行的內容)
- y5| (複製從光標到第五列之間的內容)
- 2y)(複製從光標到第五列之間的內容)
- y{ 複製上一段, y} 複製下一段
- yG 複製到文件的結尾
- y13G 複製光標開始到下面的13行
刪除
- dL (刪除從光標到屏幕頂部的所有內容)
- dH (刪除從光標到屏幕頂部的所有內容)
- d+ (刪除從光標及其下一行的內容)
- d5| (刪除從光標到第五列之間的內容)
- 2d)(刪除從光標到第五列之間的內容)
- d{ 刪除上一段, d} 刪除下一段
- dG 刪除制到文件的結尾
- d13G 刪除光標開始到下面的13行
更改
- cL (更改從光標到屏幕頂部的所有內容)
- cH (更改從光標到屏幕頂部的所有內容)
- c+ (更改從光標及其下一行的內容)
- c5| (更改從光標到第五列之間的內容)
- 2c)(更改從光標到第五列之間的內容)
- c{ 更改上一段, c} 更改下一段
- cG 更改到文件的結尾
- c13G 更改光標開始到下面的13行
8 文本的查找與替換
查找
- /string: 進入正向查找模式, n 查看下一個 (set hls 高亮顯示)
- ?string: 進入方向查找模式, n 反向查看下一個
- ( * 高亮顯示與當前光標所在字符相同的所有字符)
替換
- :s/old/new 將當前行的第一個字符串old替換爲new
- :s/old/new/g 將當前行的所有字符串old替換爲new
- 90s/old/new/g 將第90行的所有字符串old替換爲new
- 90,93s/old/new/g 將第90到93行的所有字符串old替換爲new (指定行的範圍)
- %s/old/new/g 將文本中所有字符串old替換爲new
- %s/old/new/gc 依次替換每個字符串關鍵字
- 可以使用正則表達式進行模式匹配替換
9 修改的撤銷、重做和保存
u: 撤銷上一步的操作
ctrl+r: 將原來的撤銷再重做一遍
U:恢復一整行文件打開是文件的文本狀態
wq:保存退出
e!: 放棄修改,但不關閉文件
q!: 放棄修改,並關閉文件
10 編輯多個文件
文件和緩衝區的區別,vim每打開一個文件都會創建一個對應的緩衝區。
vim *.c
buffers或者ls: 顯示所有打開的文件
buffer N: 跳轉到緩存區中第N個文件的緩存區
bnext/bprev:遍歷緩衝區列表
bfirst/blast: 跳轉到緩衝區列表的開頭和結尾
write: 將緩衝區寫入文件
edit! 或者e! 放棄緩存區的修改
edit filename: 切換到要編輯的文件
wnext:保存當前緩存區的修改並跳轉到緩衝區列表中的下一個文件
注意: set autowrite 自動保存緩衝區的文件到文件
11 標籤頁和摺疊欄
標籤頁
- tabedit: 創建一個標籤頁
- tab split: 創建一個標籤頁,使用當前文件緩衝區中的數據
- tabn/tabp: 命令切換標籤頁
- gt/gT: 按鍵切換標籤頁
- tabclose: 關閉當前的標籤頁
- tabonly:關閉其它的標籤頁
摺疊
- zf200G:將光標和200行之間的代碼摺疊起來(不是在命令行模式下)
- za:打開和關閉摺疊
- zr/zm:一層一層的打開和關閉摺疊
- zR/zM:分別打開和關閉所有的摺疊
- zj/zk: 在各個摺疊處相互跳轉
- zd: 刪除光標下的摺疊
- zD:刪除光標下的摺疊以及嵌套的摺疊
- zE:刪除所有的摺疊標籤
注意:創建的摺疊當退出vim之後就丟失了
12 多窗口的操作
split filename: 水平分割窗口
vsplit filename: 垂直分割窗口
ctrl+w h|j|k|l: 切換窗口
ctrl+w w : 在窗口之間順序跳轉
ctrl+w H|J|K|L: 移動窗口
ctrl+w +/-: 調整窗口的高度
ctrl+w