四、vi文本编辑器
一、vi和vim的區別
它們都是多模式編輯器,不同的是vim 是vi的升級版本,它不僅兼容vi的所有指令,而且還有一些新的特性在里面。
vim的這些優勢主要體現在以下幾個方面:
1、多級撤消
我們知道在vi里,按 u只能撤消上次命令,而在vim里可以無限制的撤消。
2、易用性
vi只能運行于unix中,而vim不僅可以運行于unix,windows ,mac等多操作平臺。
3、語法加亮
vim可以用不同的顏色來加亮你的代碼。
4、可視化操作
就是說vim不僅可以在終端運行,也可以運行于x window、 mac os、 windows。
5、對vi的完全兼容
某些情況下,你可以把vim當成vi來使用。
二、vi/vim的工作模式
有三種工作模式:命令模式、插入模式、編輯模式
它們都是多模式編輯器,不同的是vim 是vi的升級版本,它不僅兼容vi的所有指令,而且還有一些新的特性在里面。
vim的這些優勢主要體現在以下幾個方面:
1、多級撤消
我們知道在vi里,按 u只能撤消上次命令,而在vim里可以無限制的撤消。
2、易用性
vi只能運行于unix中,而vim不僅可以運行于unix,windows ,mac等多操作平臺。
3、語法加亮
vim可以用不同的顏色來加亮你的代碼。
4、可視化操作
就是說vim不僅可以在終端運行,也可以運行于x window、 mac os、 windows。
5、對vi的完全兼容
某些情況下,你可以把vim當成vi來使用。
二、vi/vim的工作模式
有三種工作模式:命令模式、插入模式、編輯模式
| 命令模式: | 移動光標 |
| h 或 向左方向鍵 | 光標向左移動一個字符 |
| j 或 向下方向鍵 | 光標向下移動一個字符 |
| k 或 向上方向鍵 | 光標向上移動一個字符 |
| l 或 向右方向鍵 | 光標向右移動一個字符 |
| [Ctrl] + [f] | 屏幕『向前』移動一頁(常用) |
| [Ctrl] + [b] | 屏幕『向后』移動一頁(常用) |
| [Ctrl] + [d] | 屏幕『向前』移動半頁 |
| [Ctrl] + [u] | 屏幕『向后』移動半頁 |
| + | 光標移動到非空格符的下一列 |
| - | 光標移動到非空格符的上一列 |
| n<space> | 按下數字后再按空格鍵,光標會向右移動這一行的 n 個字符。例如 20<space> 則光標會向后面移動 20 個字符距離。 |
| 0 | 這是數字『 0 』:移動到這一行的最前面字符處(常用) |
| $ | 移動到這一行的最后面字符處(常用) |
| H | 光標移動到這個屏幕的最上方那一行 |
| M | 光標移動到這個屏幕的中央那一行 |
| L | 光標移動到這個屏幕的最下方那一行 |
| G | 移動到這個檔案的最后一行(常用) |
| nG | 移動到這個檔案的第 n 行。例如 20G 則會移動到這個檔案的 20 行(可配合 :set nu) |
| n<Enter> | 光標向下移動 n 行(常用) |
| 命令模式: | 搜尋與取代 |
| /word | 向光標之后尋找一個字符串名稱為 word 的字符串。(常用) |
| ?word | 向光標之前尋找一個字符串名稱為 word 的字符串。 |
| :n1,n2s/word1/word2/g | 在第 n1 與 n2 行之間尋找 word1 這個字符串,并將該字符串取代為 word2 !(常用) |
| :1,$s/word1/word2/g | 從第一行到最后一行尋找 word1 字符串,并將該字符串取代為 word2 !(常用) |
| :1,$s/word1/word2/gc | 從第一行到最后一行尋找 word1 字符串,并將該字符串取代為 word2 !且在取代前顯示提示字符給使用者確認(conform)是否需要取代!(常用) |
| 命令模式: | 刪除、復制與貼上 |
| x, X | x 為向后刪除一個字符, X 為向前刪除一個字符(常用) |
| nx | 向后刪除 n 個字符 |
| dd | 刪除游標所在的那一整列(常用) |
| ndd | 刪除光標所在的向下 n 列,例如 20dd 則是刪除 20 列(常用) |
| d1G | 刪除游標所在到第一行的所有數據 |
| dG | 刪除游標所在到最后一行的所有數據 |
| yy | 復制游標所在的那一行(常用) |
| nyy | 復制光標所在的向下 n 列,例如 20yy 則是復制 20 列(常用) |
| y1G | 復制游標所在列到第一列的所有數據 |
| yG | 復制游標所在列到最后一列的所有數據 |
| p, P | p 為復制的數據在光標下一行貼上,P 則為貼在游標上一行!(常用) |
| J | 將光標所在列與下一列的數據結合成同一列 |
| c | 重復刪除多個數據,例如向下刪除 10 行,[ 10cj ] |
| u | 復原前一個動作。(常用) |
| 插入模式 | ? |
| i, I | 插入:在目前的光標所在處插入輸入之文字,已存在的文字會向后退;(常用) |
| a, A | 增加:由目前光標所在的下一個字開始輸入,已存在的文字會向后退:(常用) |
| o, O | 插入新的一行:從光標所在的下一行枝行首開始輸入文字;(常用) |
| r, R | 取代:r 會取代光標所在的那一個字符;R會一直取代光標所在的文字,直到按下 ESC 為止;(常用) |
| Esc | 退出插入模式,回到命令模式中(常用) |
| 編輯模式 | ? |
| :w | 將編輯的數據寫入硬盤檔案中(常用) |
| :w! | 若檔案屬性為『只讀』時,強制寫入該檔案 |
| :q | 離開 vi (常用) |
| :q! | 若曾修改過檔案,又不想儲存,使用 ! 為強制離開不儲存檔案。 |
| :wq | 儲存后離開,若為 :wq! 則為強制儲存后離開(常用) |
| :e! | 將檔案還原到最原始的狀態! |
| ZZ | 若檔案沒有更動,則不儲存離開,若檔案已經經過更動,則儲存后離開! |
| :w [filename] | 將編輯的數據儲存成另一個檔案(類似另存新檔) |
| :r [filename] | 在編輯的數據中,讀入另一個檔案的數據。亦即將 『filename』這個檔案內容加到游標所在行后面 |
| :set nu | 顯示行號,設定之后,會在每一行的前綴顯示該行的行號 |
| :set nonu | 與 set nu 相反,為取消行號! |
| n1,n2 w [filename] | 將 n1 到 n2 的內容儲存成 filename 這個檔案。 |
| :! command | 暫時離開 vi 到命令模式執行 command 的顯示結果!例如[ :! ls /home ] |
轉載于:https://www.cnblogs.com/limiracle/p/3895159.html
總結
- 上一篇: bzoj1669 [Usaco2006
- 下一篇: 数据库分库分表(sharding)系列(