版本號 | 說明 | 做者 | 日期 |
1.0 | vim基礎知識 | Sky Wang | 2013/06/19 |
|
vim和emacs,一個是編輯器之神,一個是神同樣的編輯器。他們被稱是UNIX系統下的倚天和屠龍,「兩者得一,可得天下!」php
幾年前,自從筆者學會了VIM,就不再想回到之前windows系統下的notepad、word、ue等編輯器了;甚至編程的時候,都不習慣使用其它的IDE了,如visual studio、visual c++ 6.0、source insight、eclipse等等。緣由很簡單,VIM高效不少!它很是適合程序員使用,學會VIM以後,能讓你在編程時,雙手一直遊離在鍵盤之上,而不須要移開去操做鼠標。html
接下來,咱們就開始一塊兒學習VIM。特別注意:紙上得來終覺淺,絕知此事要躬行。linux
安裝vim,經過命令以下:c++
$ sudo apt-get install vim
安裝完畢以後,便可經過下面的模板去編輯文件:
vim [options] [file ..]程序員
示例:
vim file.txt
表示用vim打開/編輯file.txt文件編程
說明:
options -- 這項是編輯參數,無關緊要。經常使用的有如下參數
-b : 以二進制的形式打開/編輯文件。
-R : 以只讀的方式打開/編輯文件。
-S : 打開vim書籤。
file -- 這項是要編輯的文件名。vim支持同時編輯多個文件名:多個文件名時,請以空格分開。ubuntu
有了上面的基礎以後,咱們在當前目錄下新建一個file.txt,並用vim打開編輯。並繼續後續的學習內容。
新建file.txt命令:vim
$ touch file.txt
vim打開/編輯file.txt命令:windows
$ vim file.txt
打開file.txt以後,顯示以下:api
若要退出,輸入
:q
若要保存退出,輸入
:wq
若要強制退出,不保存,輸入
:q!
下面的內容介紹vim的幾種經常使用的模式。在詳細介紹以前,咱們先創建一個大體的概念:vim包括許多模式,不一樣模式有不一樣的功能,如「插入模式」讓用戶輸入;「命令模式」>讓用戶執行保存/退出等等命令。這裏,咱們主要介紹vim的3種模式,其它模式後續再作說明!
vim包括主要包括3種模式:
插入模式
-- 輸入文本,目的是讓用戶輸入文本。進入插入模式以後,vim就進入輸入狀態;用戶就能輸入文本。
編輯模式
-- 也稱爲正常模式,目的是讓用戶執行編輯操做。好比在編輯模式,用戶按「j」(敲擊一次字母j),當前的輸入光標會移動到下一行;用戶按「yy」(敲擊兩次y按鍵)拷貝一行文本。
命令模式
-- 目的是讓用戶輸入命令。例如,在命令模式下,用戶輸入「w」表示保存文本。
在下面的內容中如有標記"(經常使用)"的,務必要使用熟練;其它的能夠後續慢慢掌握。
插入模式的做用就是讓用戶插入文本。可是用vim打開文件以後,文件模式是「編輯模式」,而不是「插入模式」;因此,用戶要進入「插入模式」。能夠經過如下方式進入:
i 在光標前插入 (經常使用)
I 在行首插入 (經常使用)
a 在光標後插入 (經常使用)
A 在行末插入 (經常使用)
o 在下一行插入,這裏是小寫字母o。 (經常使用)
O 在上一行插入,這裏是大寫字母o。 (經常使用)
s 刪除當前字符後插入
S 刪除當前行後插入
cc 刪除當前行後插入
c和方向鍵組合 刪除後插入。例如,依次輸入"c"、"l"表示刪除下一個字符後插入;依次輸入"c"、"j"表示刪除下一行以後插入。
例如,打開file以後,按「o」進入插入模式。進入插入模式後,窗口的左下角會顯示「-- INSERT --」,表示已經進入插入模式。
接着,咱們能夠輸入文本。以下圖:
若是要退出「插入模式」,按「ESC」便可。退出插入模式後,窗口的左下角會顯示「-- INSERT --」會消失。
編輯模式是讓用戶執行編輯操做。好比上/下/左/右移動輸入光標,複製/粘貼文本,刪除文本等等。
在全部模式中,編輯模式是使用最多的。所以:一,每次用vim打開文本,默認進入編輯模式!二,每次按「ESC」鍵從其它模式退出時,都會返回到編輯模式。它的進入方式也很簡單:一,從新vim打開文件。二,在其它模式下按「ESC」返回。
--移動光標命令--
h 左移動光標 (經常使用)
l 右移動光標 (經常使用)
j 上移動光標 (經常使用)
k 下移動光標 (經常使用)
w 以單詞(word)爲單位向後移,移動到後一個單詞的起始處。 (經常使用)
e 以單詞(word)爲單位向後移,移動到當前單詞的結尾處。 (經常使用)
b 以單詞(word)爲單位向前移,移動到前一個單詞的起始處。 (經常使用)
f<charater> charater爲字母或者數字,表示向後查找charater,並將光標移動到charater處。(經常使用)
F<charater> charater爲字母或者數字,表示向前查找charater,並將光標移動到charater處。(經常使用)
上面的命令大均可以帶一個數字前綴或者一個數字範圍,好比:
5j 將光標上移動5行
5w 將光標後移5個單詞
[Ctrl]+f 屏幕向下移動一頁,至關於 [Page Down]按鍵。 (經常使用)
[Ctrl]+b 屏幕向上移動一頁,至關於 [Page Up]按鍵。 (經常使用)
[Ctrl]+d 屏幕向下移動半頁
[Ctrl]+u 屏幕向上移動半頁
+ 光標移動到非空白字符的下一列
- 光標移動到非空白字符的上一列
n<space> n表示數字,<space>表示空格鍵。n<space>表示光標向後移這一行的n個字符。 (經常使用)
0或[Home] 移動到這一行的開頭。(經常使用)
$或[End] 移動到這一行的結尾。(經常使用)
H 光標移動到本屏首行的第一個字符
M 光標移動到本屏中央行的第一個字符
L 光標移動到本屏末尾行的第一個字符
G 光標移動到本文檔的最後一行。(經常使用)
nG n爲數字,nG表示該文檔的第n行。例如,12G 表示移動到本文檔的第12行。(可配合 :set nu)。(經常使用)
gg 移動到該文檔的首行,至關於 1G。 (經常使用)
ngg 等價於nG
n<Enter> n爲數字,光標向下移動 n 行。(經常使用)
--編輯文檔命令--
dd 刪除一行 (經常使用)
yy 拷貝一行 (經常使用)
p 粘貼文本(小寫p,表示在當前光標以後粘貼) (經常使用)
P 粘貼文本(大寫P,表示在當前光標以前粘貼) (經常使用)
x 刪除當前字符 (經常使用)
X 刪除前一個字符 (經常使用)
上面命令大多均可以帶一個數字前綴或者一個數字範圍,好比:
5dd 從當前行開始刪除5行 (經常使用)
5yy 從當前行開始拷貝5行 (經常使用)
1,3d 刪除1至3行
1,3y 拷貝1至3行 (.表明當前行,$表明最後一行)
u 撤銷上一個動做引發的改變。(經常使用)
[Ctrl]+r 恢復上一個動做引發的改變。(經常使用)
. 這是小數點,做用是重複上一個動做。例如,若是你想要重複進行復制或者刪除等操做,暗下小數點"."就能夠了。 (經常使用)
' 這是單引號,做用是跳轉到上一次的操做行。(經常使用)
--搜索文檔命令--
在編輯模式下,能夠進行搜索和替代。替代涉及到命令模式,後續章節再詳細說明。
/word 向後搜索「word」。例如,要在檔案內搜索「skywang」,就輸入 /skywang 便可。 (經常使用)
?word 向前搜索「word」。
n 這是字符鍵n,表示「重複前一個搜索動做」。例如,咱們剛剛在檔案內輸入 /skywang 進行搜索skywang;接着,按n就會不停的向後查找。(經常使用)
N 這是字符鍵N,做用和n相反,表示「反向的重複前一個搜索動做」。例如,咱們剛剛在檔案內輸入 /skywang 進行搜索skywang;接着,按N就會不停的向前查找。
這些就是編輯模式下的基本命令。
命令模式是讓用戶輸入命令。例如,經過「:w」保存文本。
進入方式。在編輯模式下,輸入冒號":"進入命令模式。而後便可輸入命令。
經常使用的命令:
:w 保存文檔。
:w! 強制保存文檔。針對打開只讀文檔使用,至於可否保存成功,跟你對該文檔的權限有關。
:q 退出vim編輯器。
:q! 強制退出。若你修改文檔,當不想保存退出,則可使用強制退出。
:wq 保存文檔並退出。
:w [filename] 將文檔另外爲filename,filename是文檔名。
:r [filename] 插入「文檔filename的內容」插入到當前光標處。
:r! [cmd] 將「linux命令」(cmd是命令名)插入到當前光標出。例如「:! pwd」,表示將當前路徑插入到當前光標處。
:e [filename] 用vim打開文件filename,並進行編輯。
:set nu 顯示行號
:set nonu 不顯示行號
除了上面3種經常使用的模式以外,vim還有「選擇模式」、「替換模式」和「鼠標模式」。
下面介紹如下「選擇模式」和「替換模式」,而「鼠標模式」不作介紹,筆者以爲它與vim的精神相悖,由於使用vim就是爲了遠離鼠標。
選擇模式的主要做用是進行區域性的選擇,而後進行刪除或複製操做。這個模式也比較經常使用,它支持任意區域操做。
模式進入方式:在編輯模式下,按 "[v]" 或 "[V]" 或 "[Ctrl]+[v]"。
[v] -- 以字符爲單位,進行選擇
[V] -- 以行爲單位,進行選擇
[Ctrl]+[v] -- 以塊爲單位,進行選擇
下面,如下面的文本visual.txt爲例,來介紹選擇模式的使用。
Lesson 2 SUMMARY 1. To delete from the cursor up to the next word type: dw 2. To delete from the cursor to the end of a line type: d$ 3. To delete a whole line type: dd 4. To repeat a motion prepend it with a number: 2w 5. The format for a change command is: operator [number] motion where: operator - is what to do, such as d for delete [number] - is an optional count to repeat the motion motion - moves over the text to operate on, such as w (word), $ (to the end of line), etc. 6. To move to the start of the line use a zero: 0 7. To undo previous actions, type: u (lowercase u) To undo all the changes on a line, type: U (capital U) To undo the undo's, type: CTRL-R
目的:刪除 "The format ..." 到 "zero"之間的內容。
可使用如下操做:
01, 用vim打開文本visual.txt。使用如下命令:
$ vim visual.txt
02, 將光標移動到"The format ..."所在行。有許多方法,下面介紹經常使用的幾種:
方法一:不斷的按j,移動到下一行,直到移動到"The format ..."所在行爲止。
方法二:按8j,向下移動8行。
方法三:按9gg或者9G,直接跳轉到第9行。(能夠先經過":set nu"命令顯示行號)
03, 按數字"0",移動到"The format ..."所在行的起始爲止。
04, 按字母"l",移動到"The format ..."的字母"T"處。
05, 按字母"v"進入選擇模式。此時,編輯器的左下方顯示「-- VISUAL --」,表示進入選擇模式成功。
06, 按字母"j"移動到"zero"所在行。
07, 按"$"將光標移動到"zero"所在行的模式。
08, 按字母"h"移動到"zero"的字母"o"處。
至此,選擇完成!以下圖。
09, 按字母"d",執行刪除操做。便可刪除 "The format ..." 到 "zero"之間的內容。
若要退出"選擇模式",按"ESC"便可。
替換模式的做用就是進行替換。
進入方式:在編輯模式下,按 "r" 或 "R" 。
[r] -- 單個字符替換,只替換當前字符,替換以後返回編輯模式。例如,要將當前光標所在字符替換成"H",則依次輸入"r"、"H",就能夠了。
[R] -- 徹底的替換模式,替換了當前字符後,會自動將光標移到下一字符...直到用戶按"ESC"鍵退出"替換模式"。
若要退出"替換模式",按"ESC"便可。
後面會整理VIM的高級內容和筆者使用心得,以便更加有效的進行工做!
點擊瞭解:更多Linux相關知識
參考文獻:
01, Vim用戶操做指南
02, 《鳥哥的 Linux 私房菜》
03, 《Vim用戶手冊中文版》