做爲一個典型的WIN用戶,其實咱們是沒法理解這兩大神器的。從WIN角度來講,一個好的軟件應該須要達到不使用說明書就能操做的地步。但咱們的linux同行顯然不這麼認爲,感受彷佛速度,效率,命令的支持纔是一個軟件的魅力的源泉。因此咱們只能入鄉隨俗,學習一個軟件,先讀他的說明書,背會他的快捷鍵和命令行。linux
確切的說,VIM有三種狀態,快捷鍵狀態,命令行狀態,編輯狀態。經過快捷鍵ESC切換。但大部分書都會把命令行和快捷鍵納入一種狀態,因此經常說是兩種狀態,這也不錯,快捷鍵和命令有時確實不太容易分清,通常來講,快捷鍵不須要回車確認,就會自動執行。android
VIM的學習應該分幾步,第一步是命令,快捷操做掌握。第二步是使用各類插什,第三步是編寫本身工做須要的環境腳本文件.vimrcshell
下面列出我剛開始學習時總結的快捷鍵:vim
- 跳轉,區分大小寫,加shift的是大寫:
- 1,上下左右箭頭 hkjl上下左右移一個字符
- 退格,左移一字符
- 空格,右移一個字符
- 2.Ctrl-f往下滾動一屏
- Ctrl-b往上滾動一屏
- 3.Ctrl-U往上滾動半屏
- Ctrl-D往下滾動半屏
- 4.Shift+h頂部第一行字符起始,也即大寫H
- Shift+m中間
- shift+l底部最後一行起始
- 5.^,0當前行起始
- $,當前行尾
- 6.~光標上一行首
- Enter下一行首
- 7.[n]G。指定行,500G,到500行
- gg 跳到文章開頭
- shift+g 跳到文章末尾
- 8.Ctrl-E內容總體上移一行
- Ctrl-Y內容總體下移一行
- 9.(){} 完整句子句首,完整句子句尾,完整段落首位置,完整段落尾位置
- 插入,記下a,i,使用跳轉也行:
- a,光標以後插數據
- A,光標行尾插數據(即shift+a)
- i,光標以前插數據
- I, 光標行首插數據(即shift+I)
- o.所在行以後
- O,所在行以前(即shift+o)
-
- 修改替換,記了C或者R,其餘也能使用跳轉
- shift+c 替換從光標開始的字符
- cw 替換單字
- [n]cc 替換行,n行,n>=1
- [n]s
- shift+s
- r替換一個
- R替換多個
- ~轉換大小寫
- 撤消
- u撤消先前執行的
- U撤消所有
- 刪除,記個x,不停的按就好了
- [n]x刪除當前單個字符
- [n]X刪除前一個字符
- dw
- [n]dd 刪除N行
- D刪除行尾
- 複製刪除粘貼
- yy,Y複製
- p光標行下
- shift+P光標行上面
- EX命令,上面的大都是快捷鍵,下面的大都是命令。
- 多行復制:
- :line#1, line#2 co line#3 從某行#1開始到某行#2結束內容複製到某行#3以後
- .當前行,$文件結尾
- 移動:
- :line#1, line#2 m line#3 從某行#1開始到某行#2結束內容複製到某行#3以後
- 刪除:
- :line#1, line#2 d
- 查找:
- :str 正向查找
- :?str 反向查找
- n 或者 /從當前位置開始檢索下一個,至關於F3
- shift+n 或者 ?從當前位置開始反向檢索下一個,至關於shift+F3
- :/pat/+n 光標移到pat所在行以後第n行
- :/pat?+n 光標移到pat所在行以前第n行
- 模式檢索:
- :/^search 只檢索行首位置
- :/serch$ 只檢索行尾
- :/\<search\>
- 支持通配符.*,[a-z],[dm]
- 替換字符串:
- :[g]/search-staring/s//replace-string/[g][c]
- 如:g/BankA/s//BankB/g
- 若是須要手動確認,加個C:
- g/BankA/s//BankB/gc
- 編輯多個文件:
- vim file1 file2
- 合併文件:
- :line# r filename 把讀取的文件插入當前光標位置
- 刪除特殊字符:
- 1,$ s/^M//
- VIM裏運行shell命令:
- :!command
- !!command
- :sh
- 如:!adb devices
- !!adb devices
-
- 保存文件退出
- :w 寫入不退出
- :w! 強制寫入
- :wq 寫入退出
- :wq! 寫入強制退出
- ZZ 寫入退出,使用shift+兩次ZZ
- :q 退出
- :q! 強制退出