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


 

 

 版本號 說明 作者 日期 
1.0  vim基礎知識 Sky Wang 2013/06/19
       

 

概要

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的高級內容和筆者使用心得,以便更加有效的進行工作!

點擊了解:更多Linux相關知識

 

 

 


參考文獻:

01,  Vim用戶操作指南

02, 《鳥哥的 Linux 私房菜》

03, 《Vim用戶手冊中文版》

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM