Vim基本介绍
一、Vim基本介紹
? ? ? ? Vim是一個超級超級強大的文本編輯器,它和Emacs是一個數量級。Vim及前身VI,歷史悠久(可能比多數讀者的年齡更大),經歷了幾十年的考驗和發展。Vim全稱叫Vi IMproved. 而vi則是Visual Interface的縮寫,他們處理都是ASCII碼字符數據;vim 是vi的升級版本,它不僅兼容vi的所有指令,而且還有一些新的特性在里面。例如語法加亮,可視化操作不僅可以在終端運行,也可以運行于x window、 mac os、 windows。
熟練使用vim絕對是你成為Linux大牛不可或缺的本領,但是Vim有很多命令,而且很多命令很復雜、很長,學習和掌握使用Vim需要一定的毅力,而且要通過不斷地練習,這個可能周期有點長,所以不要期望在短時間內將Vim用得比其他編輯器有效。
在Ubuntu終端下執行sudo apt-get install vim安裝Vim。
二、Vim的三個模式
? ? ? ? 這里引用一個對比:notepad無模式(或稱為只有一種編輯模式),你按下j,就是在正文中輸入j;要保存,就要ctrl+s;要下移一行,就要↓或鼠標。而在Vim中,打開一個文件后,并不處在編輯模式,而是Normal模式(命令模式),命令模式下可完成一些查找、光標移動等操作,不對文件做手動編輯;若要手動錄入文本內容,應該按i進入vim編輯器的insert模式(輸入模式);輸入模式按Esc退回normal命令模式。除此以外,還有一種特殊的模式可以執行文件保存、退出編輯器、查找替換等操作,稱為“末行模式”。因此,不同的操作切記要進入正確的模式:Esc到Normal命令模式;Normal下按i到insert輸入模式;Normal命令模式下按:到末行模式。
vim編輯器三種模式之間的切換關系、按鍵操作如下圖:
1、Normal模式(命令模式)
? ? ? ? 啟動Vim后,Vim會處于Normal模式。在Vim的Normal模式下,所有的鍵就是功能鍵,下面附上Vim功能鍵分布圖,每個按鍵都具有一定的功能:
命令模式下的基本操作:
(1)光標跳轉:按gg跳轉至文件第一行的行首、按G跳轉至文件最后一行的行首。
(2)復制、粘貼、刪除操作:按向下箭頭鍵將光標移動某處,再按2yy,將會復制光標處開始的2行內容(若直接按yy則只復制一行) 。再將光標移動至要粘貼處,然后按下p,完成粘貼操作。
(3)查找關鍵詞:按gg鍵回到文件開頭,輸入 /initdefault[關鍵字]?可在整個文件內查找“initdefault“關鍵詞,并高亮顯示;按 n 鍵跳轉至第2個匹配結果,再按一次n鍵跳轉至第3個匹配結果。
2、insert模式(輸入模式)
? ? ? ? 在Normal模式下,按下鍵盤上的i鍵入Insert輸入模式(當然還有其他方式,比如按下a、o、O等,i是最常用的方法),當你在Vim左下角看到 -Insert- 字體,表明你已經進入Vim的Insert輸入模式。在Insert模式輸入下,你可以自由的輸入你想要輸入的東西了,就像使用其他編輯器一樣。
3、末行模式
? ? ? ? 也叫?Visual模式。在Normal命令模式下,按鍵盤v鍵進入Visual模式,左下角會有VISUAL字樣。在Visual末行模式下,可以讓你選擇文件的一部分內容,以便進行刪除、復制等操作。
三、Vim三個基本模式之間的切換
每次切換模式都要按Esc鍵先切換到Normal模式,即命令模式。當然也可以用CTRL+[?或CTRL-C?先切到命令模式(CTRL-C 主要用來強制中止VIM正在執行的各種很耗時的操作)。
1、Normal命令模式<-----> Insert輸入模式
? ? ? ? 用Vim打開文件,默認就是Normal命令模式。此時按下鍵盤i、a、o、I健即可進入Insert輸入模式。在編輯模式中,按Esc就可返回到Normal命令模式。如果你不確定是否進入了Normal模式,可以多次按下Esc鍵。
進入編輯模式按鍵的含義:
i? 在光標所在字符前開始輸入文字(insert)。
a? 在光標所在字符后開始輸入文字(append)。
o? 在光標所在行下開一新行來輸入文字(open)。
I? 在行首開始輸入文字。
2、Normal命令模式<----->Visual末行模式
? ? ? ? 在Normal命令模式下,按鍵盤v鍵進入Visual模式,左下角會有VISUAL字樣。在Visual末行模式下,按下鍵盤上的Esc鍵回到Normal命令模式。
在Normal命令模式下,按鍵盤:鍵進入Visual模式,表示要輸入vim命令;可輸入的命令如下:
:q ?? ? ? ? ?退出(更確切的說應該是關閉當前文件)
:w ? ? ? ? ?文件名 保存。如果還是保存為當前文件,不必寫文件名
:wq ? ? ??保存并退出(退出后自動進入Normal命令模式)
:q! ? ? ? ??強制退出不保存
:wq! ? ? ?強制保存并退出。 ?保存時遇到E45?readonly?option?is?set?(add!to?override)可用。
總結
- 上一篇: rtt 在STM32F767上实现虚拟串
- 下一篇: 网络带宽的分类