vim的介绍及使用
目錄
1、vim的概述
1.1什么是 vim?
1.2、vim的三種模式
1.2.1、命令模式
1.2.2、輸入模式
1.2.3、底線命令模式
1、vim的概述
1.1什么是 vim?
vim(vi improved),是Linux系統中提供的編輯器,它是vi的增強版本,與vi向上兼容。通常,在LInux中用到的vi實際上是vim,即使輸入命令時輸入的是vi,但是使用的仍然是vim。
1.2、vim的三種模式
vi/vim 共分為三種模式,分別是命令模式(Command mode),輸入模式(Insert mode)和底線命令模式(Last line mode)。 這三種模式的作用分別是:
1.2.1、命令模式
用戶剛剛啟動 vi/vim(例如輸入vi命令),便進入了命令模式。
此狀態下敲擊鍵盤動作會被vim識別為命令,而非輸入字符。比如我們此時按下i,并不會輸入一個字符,i被當作了一個命令。
首先說明Ctrl+g,在屏幕下方可以查看到當前光標所在位置,例如:按下Ctrl+g組合鍵后,在下方看到:
在命令模式移動光標可以使用下面的按鍵:
| h 向左箭頭鍵(←) Backspace | 光標向左移動一個字符。 這幾個命令前面都可以添加數字,表示移動多個字符。 Backsapce在到達邊界時可以上移一行,即具有跨行的功能。 h和←不具備跨行功能。 |
| j 向下箭頭鍵(↓) Ctrl+n + Enter | 光標向下移動。 這幾個命令前面都可以添加數字,表示移動多行,除了Ctrl+n。 +和Enter將光標移到下一行的第一個非空白字符。 其他3個將光標向下移動一行,但是光標所在列不變。如果下一行比當前行光標所在位置還短,則下移到行尾。 |
| k 向上箭頭鍵(↑) Ctrl+p - | 光標向上移動。 這幾個命令前面都可以添加數字,表示移動多行,除了Ctrl+P。 -是將光標移到上一行的第一個非空白字符 其他3個將光標向下移動一行,但是光標所在列不變。 |
| l 向右箭頭鍵(→) space | 光標向右移動一個字符。 這幾個命令前面都可以添加數字,表示移動多個字符。 space在到達邊界時可以下移一行,即具有跨行的功能。 l和→不具備跨行功能。 |
| 例如:向下移動 30 行,可以使用 "30j" 或 "30↓" 的組合按鍵; 向左移動5個字符,可以使用“5h”或“5←”的組合按鍵; | |
| [Ctrl] + [f] | 屏幕『向下』移動一頁,相當于 [Page Down]按鍵 (常用) |
| [Ctrl] + [b] | 屏幕『向上』移動一頁,相當于 [Page Up] 按鍵 (常用) |
| [Ctrl] + [d] | 屏幕『向下』移動半頁 |
| [Ctrl] + [u] | 屏幕『向上』移動半頁 |
| 0 ^ | 0將光標移動到當前行的第1列,不管它是否為空白符。 ^將光標移動到當前行的第一個非空白字符。 該命令前面不能有數字。 |
| $ | 將光標移到當前行的最后一個字符上(包括空白字符)。 |
| n<space> | 那個 n 表示『數字』,例如 20 。按下數字后再按空格鍵,光標會向右移動這一行的 n 個字符。例如 20<space> 則光標會向后面移動 20 個字符距離,即使會換行。不指定n時,默認為1個字符。 |
| w | 移到下一個單詞的首字符,在移動的路徑上如果有逗號、句號會先跳到標點符號上。前面可以有數字。 |
| W | 移到下一個非空白字符串的開頭。 |
| b | 和w命令方向相反 |
| B | 和W命令相反 |
| e | 和w命令類似,只不過是,e將光標移到單詞結尾。 |
| E | 和W命令類似,只不過是,E將光標移到字符串的結尾。 |
| 0 或功能鍵[Home] | 移動到這一行的最前面字符處 (常用) |
| $ 或功能鍵[End] | 移動到這一行的最后面字符處(常用) |
| ( | 將光標移到上一個句子的開頭。句子被定義為以” . “、"?”、“!'結尾,后隨兩個空格或一個換行的字符序列。? |
| ) | 將光標移到下一個句子的開頭。句子被定義為以” . “、"?”、“!'結尾,后隨兩個空格或一個換行的字符序列。? |
| H | 光標移動到這個屏幕的最上方那一行的第一個字符(包括空白字符)。 |
| M | 光標移動到這個屏幕的中央那一行的第一個字符(包括空白字符)。 |
| L | 光標移動到這個屏幕的最下方那一行的第一個字符(包括空白字符)。 |
| G | 移動到這個檔案的最后一行(常用) |
| nG | n 為數字。移動到這個檔案的第 n 行。例如 20G 則會移動到這個檔案的第 20 行(可配合 :set nu) |
| gg | 移動到這個檔案的第一行,相當于 1G 啊! (常用) |
命令模式下修改文本命令(有些命令可以有命令模式轉換成輸入模式)介紹:
| i? | 在光標前插入內容。 | ||||||||||||||
| I | 在當前行的行首插入新增文本,行首是該行第一個非空白字符。 | ||||||||||||||
| a | 在光標后附加內容。 | ||||||||||||||
| A | 在當前行的行尾附加內容。 | ||||||||||||||
| o | 在當前行的下面新增一行,并寫入內容。 | ||||||||||||||
| O | 在當前行的前面新增一行,并寫入內容。 | ||||||||||||||
| c C cc | c命令的一般使用方式是:c+光標移動命令+新文本+Esc鍵 刪除多個字符或多個行,然后進入輸入模式(即修改)。配合光標移動命令例如:2c←或者c2←則會刪除光標(向左修改時不包括光標位,向右修改時包括光標位)左側2個字符然后進入insert輸入模式;c2↑刪除當前行和當前行上面2行,接著進入輸入模式; C命令刪除從光標當前位置到該行的末尾,接著進入輸入模式; cc和C類似,不過cc是刪除當前一整行,并進入輸入模式。 | ||||||||||||||
| x | 從光標所在位置向右刪除n個字符(包括光標處的字符)(n省略時,默認為1),但是不會由命令模式轉化成輸入模式。 | ||||||||||||||
| X | 從光標所在位置向左刪除n個字符(包括光標處的字符)(n省略時,默認為1),但是不會由命令模式轉化成輸入模式。 | ||||||||||||||
| r | 取代當前光標所在處的字符,但是不會由命令模式轉化成輸入模式。r前面可以有數字,例如:3ra表示光標位及光標后2個字符都被取代成a。 | ||||||||||||||
| R | 進入取代輸入模式。 | ||||||||||||||
| s | 刪除當前光標所在處的字符,接著插入(替換)。若在s前面給出一個數字,例如:5s表示刪除光標所在字符及其后的4個字符將被新輸入的正文替換。 | ||||||||||||||
| S | 刪除當前光標所在行,接著插入。 | ||||||||||||||
| nu | 撤消命令,撤銷到上n步。(常用)(n省略時,默認為1)(常用) | ||||||||||||||
| U | 把當前行恢復到編輯之前的狀態,無論該行被編輯了多少次。 | ||||||||||||||
| [Ctrl]+r | 重做上一個動作。(常用) | ||||||||||||||
| . | 不要懷疑!這就是小數點!意思是重復前一個動作的意思。 如果你想要重復刪除、重復貼上等等動作,按下小數點『.』就好了! (常用) | ||||||||||||||
| d... | d與光標移動命令(以...表示)組合而成的命令表示從光標位置開始刪到由光標移動限定的文本對象的末尾。向右刪除,會刪除當前光標所在位置,也就是包括當前光標所在處的字符;向左刪除,不會刪除當前光標所在位置,也就是不包括當前光標所在處的字符。
| ||||||||||||||
| D | 從光標位置刪除到當前行的末尾 | ||||||||||||||
| yy | yy與光標移動命令組合而成的命令表示從當前位置復制到移動位置
| ||||||||||||||
| p, P | p 為將已復制的數據在光標下一行貼上,P 則為貼在游標上一行!(常用) | ||||||||||||||
| > < >> << | 文本行移動命令
| ||||||||||||||
| ! | 過濾命令的格式是:!+光標移動命令+Linux命令,最后按Enter鍵。其功能是把當前行和光標移動命令指定的行之間的所有行由給定的Linux命令進行加工,替換原來的那部分正文。 | ||||||||||||||
| J | 文本行合并命令,把當前行與下面一行合并成一行。若在J之前給出一個數字,如nJ,則表示把當前行及其后的n-1行合并成一行。 | ||||||||||||||
| : | ?切換到底線命令模式,以在最底一行輸入命令。 |
1.2.2、輸入模式
在輸入模式下,用戶可以自由輸入文本內容。
在輸入模式下,可以使用下面的按鍵來快速移動光標:
| Ctrl+u | 將光標快速回退到剛插入字符串的第一個字符,并刪除該字符串,重新開始插入 |
| Ctrl+w | 將光標移到最后插入單詞的首字符,并刪除該單詞(單詞是以標點符號或空白符號分開的字母數字串) |
| Ctrl+t | 對當前光標所在行進行縮進。 |
1.2.3、底線命令模式
命令模式只有一些最基本的命令,因此仍要依靠底線命令模式輸入更多命令。所有的底線命令都可以使用Enter或者中斷鍵予以中止。
在底線命令行模式下,經常有些命令需要指定作用范圍,例如:檢索指定模式字符串。可以使用下述字符指定行的位置:
| . | 當前行,多數的命令默認地址是當前行。 |
| n | 編輯緩沖區中的第n行,行號從1開始編排 |
| $ | 緩沖區最后一行 |
| % | 從第一行到最后一行。等價于1,$ |
| +n | n表示相對當前行的位移。例如-3、.+3、+++,都表示向上移動3行;-5,表示向下移動5行。 |
指定命令作用范圍的語法格式:
:n1,n2命令
例如:
:10,20d? ? ? ? 刪除10至20行之間的內容
:.,+5d? ? ? ? 刪除當前行和它下面的5行
檢索指定模式字符串
| 檢索字符串 |
| ||||||||||||||||||||||
| 當前行中查找字符 |
| ||||||||||||||||||||||
| 使光標靠近字符 |
| ||||||||||||||||||||||
| 置標記 |
| ||||||||||||||||||||||
| 全局(局部)替換 |
|
定線命令行模式常用命令
| e命令 | 在vi中,%表示當前文件名,#表示上一個文件名 當時用e命令時,vi編輯器首先檢查修改緩沖區后,文件是否保存過,如果沒有保存則會發出警告信息,并終止該命令。
| ||||||||||
| Ctrl+^ | 當在vi中編輯多個文件時,可以使用Ctrl+^來切換文件。等價于? :e #Enter鍵 | ||||||||||
| r命令 | 把文本讀入編輯緩沖區的任意指定位置。所讀入文本必須至少長,可以是一個文件或命令的輸出
| ||||||||||
| w命令 | 將編輯緩沖區中的全部或則部分內容保存或另存為指定的文件。
| ||||||||||
| q命令 | 退出命令
| ||||||||||
| ZZ | 這是大寫的 Z 喔!如果修改過,保存當前文件,然后退出!效果等同于(保存并退出) | ||||||||||
| ZQ | 不保存,強制退出。效果等同于?:q!。 | ||||||||||
| ! command | 暫時離開 vi 到指令行模式下執行 command 的顯示結果!例如 『:! ls /home』即可在 vi 當中察看 /home 底下以 ls 輸出的檔案信息! |
總結
- 上一篇: 51单片机 静态数码管显示
- 下一篇: 寄云科技获评全球创企top10%