系統的學習和總結VIM的使用

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行

複製文板塊:

  1. 首先輸入v進入可視化模式
  2. 移動光標選擇文本
  3. 執行復制與粘貼的操作

剪切文本

先刪除(同上),再粘貼(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

發佈了101 篇原創文章 · 獲贊 51 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章