編輯器之神VIM 總結 基礎部分

Coding-lover發表於2016-01-08

概要

vim和emacs,一個是編輯器之神,一個是神一樣的編輯器。他們被稱是UNIX系統下的倚天和屠龍,“二者得一,可得天下!”

幾年前,自從筆者學會了VIM,就再也不想回到以前windows系統下的notepad、word、ue等編輯器了;甚至程式設計的時候,都不習慣使用其它的IDE了,如visual studio、visual c++ 6.0、source insight、eclipse等等。原因很簡單,VIM高效很多!它非常適合程式設計師使用,學會VIM之後,能讓你在程式設計時,雙手一直遊離在鍵盤之上,而不需要移開去操作滑鼠。

接下來,我們就開始一起學習VIM。特別注意:紙上得來終覺淺,絕知此事要躬行。

PART-01 vim準備工作

安裝vim,通過命令如下:

$ sudo apt-get install vim

安裝完畢之後,即可通過下面的模板去編輯檔案:
vim [options] [file ..]

示例:
vim file.txt
表示用vim開啟/編輯file.txt檔案

說明:
options – 這項是編輯引數,可有可無。常用的有以下引數
-b : 以二進位制的形式開啟/編輯檔案。
-R : 以只讀的方式開啟/編輯檔案。
-S : 開啟vim書籤。
file – 這項是要編輯的檔名。vim支援同時編輯多個檔名:多個檔名時,請以空格分開。

有了上面的基礎之後,我們在當前目錄下新建一個file.txt,並用vim開啟編輯。並繼續後續的學習內容。
新建file.txt命令:

$ touch file.txt

vim開啟/編輯file.txt命令:

$ vim file.txt

開啟file.txt之後,顯示如下:

若要退出,輸入

:q

若要儲存退出,輸入

:wq

若要強制退出,不儲存,輸入

:q!

PART-02 vim常用模式

下面的內容介紹vim的幾種常用的模式。在詳細介紹之前,我們先建立一個大致的概念:vim包括許多模式,不同模式有不同的功能,如“插入模式”讓使用者輸入;“命令模式”>讓使用者執行儲存/退出等等命令。這裡,我們主要介紹vim的3種模式,其它模式後續再做說明!

vim包括主要包括3種模式:
插入模式
– 輸入文字,目的是讓使用者輸入文字。進入插入模式之後,vim就進入輸入狀態;使用者就能輸入文字。
編輯模式
– 也稱為正常模式,目的是讓使用者執行編輯操作。比如在編輯模式,使用者按“j”(敲擊一次字母j),當前的輸入游標會移動到下一行;使用者按“yy”(敲擊兩次y按鍵)拷貝一行文字。
命令模式
– 目的是讓使用者輸入命令。例如,在命令模式下,使用者輸入“w”表示儲存文字。

在下面的內容中若有標記”(常用)”的,務必要使用熟練;其它的可以後續慢慢掌握。

PART-02.01 插入模式

插入模式的作用就是讓使用者插入文字。但是用vim開啟檔案之後,檔案模式是“編輯模式”,而不是“插入模式”;所以,使用者要進入“插入模式”。可以通過以下方式進入:
i 在游標前插入 (常用)
I 在行首插入 (常用)
a 在游標後插入 (常用)
A 在行末插入 (常用)
o 在下一行插入,這裡是小寫字母o。 (常用)
O 在上一行插入,這裡是大寫字母o。 (常用)
s 刪除當前字元後插入
S 刪除當前行後插入
cc 刪除當前行後插入
c和方向鍵組合 刪除後插入。例如,依次輸入”c”、”l”表示刪除下一個字元後插入;依次輸入”c”、”j”表示刪除下一行之後插入。

例如,開啟file之後,按“o”進入插入模式。進入插入模式後,視窗的左下角會顯示“– INSERT –”,表示已經進入插入模式。
接著,我們可以輸入文字。如下圖:

如果要退出“插入模式”,按“ESC”即可。退出插入模式後,視窗的左下角會顯示“– INSERT –”會消失。

PART-02.02 編輯模式

編輯模式是讓使用者執行編輯操作。比如上/下/左/右移動輸入游標,複製/貼上文字,刪除文字等等。
在所有模式中,編輯模式是使用最多的。因此:一,每次用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就會不停的向前查詢。

這些就是編輯模式下的基本命令。

PART-02.03 命令模式

命令模式是讓使用者輸入命令。例如,通過“: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就是為了遠離滑鼠。

PART-03 vim其它模式

PART-03.01 選擇模式

選擇模式的主要作用是進行區域性的選擇,然後進行刪除或複製操作。這個模式也比較常用,它支援任意區域操作。
模式進入方式:在編輯模式下,按 “[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”即可。

PART-03.02 替換模式

替換模式的作用就是進行替換。
進入方式:在編輯模式下,按 “r” 或 “R” 。
[r] – 單個字元替換,只替換當前字元,替換之後返回編輯模式。例如,要將當前游標所在字元替換成”H”,則依次輸入”r”、”H”,就可以了。
[R] – 完全的替換模式,替換了當前字元後,會自動將游標移到下一字元…直到使用者按”ESC”鍵退出”替換模式”。

若要退出”替換模式”,按”ESC”即可。

後面會整理VIM的高階內容和筆者使用心得,以便更加有效的進行工作!

參考文獻

01, Vim使用者操作指南

02, 《鳥哥的 Linux 私房菜》

03, 《Vim使用者手冊中文版》

轉載自:編輯器之神VIM 總結(一) 基礎部分

相關文章