1. 程式人生 > >linux利器!一分鐘帶你瞭解VIM的前世今生

linux利器!一分鐘帶你瞭解VIM的前世今生

在一些關於文字編輯器的問題中,我都會提到Vim在文字編輯方面是無編輯器能出其右的,包括Vim的宿敵Emacs,在這方面都無法望Vim項背。

經過這幾天的學習,大家應該知道,linux是一個跟文字檔案打交道的系統,那麼如何去跟這樣一個系統打交道呢?我們就要學會如何去新建檔案、刪除檔案、修改檔案等等,那麼做這些操作就需要一個文字編輯工具。而在linux中最經典最流行的文字編輯工具就是vi/vim;本文將會給大家詳細講述如何在linux作業系統下使用vi/vim 文字編輯器,一分鐘瞭解vi/vim的前世今生。

首先我們要知道的是vi/vim是什麼?

vi編輯器是linux和unix上最基本的文字編輯器,工作在字元模式下。由於不需要圖形介面,vi是效率很高的文字編輯器。儘管在linux上也有很多圖形介面的編輯器可用,但vi在系統和伺服器管理中的功能是那些圖形編輯器所無法比擬的。

vi編輯器可以執行輸出、刪除、查詢、替換、塊操作等眾多文字操作,而且使用者可以根據自己的需要對其進行定製,這是其他編輯程式所沒有的。

Vim是從 vi 發展出來的一個文字編輯器。程式碼補完、編譯及錯誤跳轉等方便程式設計的功能特別豐富,在程式設計師中被廣泛使用。

對vim已經有了基礎瞭解的你們,肯定也想知道它的特點吧!它有三個大眾所能瞭解到的特點!

vi/vim是一種純文字編輯器,它不像word可以排版,可以調整字型大小,可以改變字型

vi/vim只是一個文字編輯工具,它只能對文字的內容進行操作

vi是一個全螢幕的文字編輯器,在編輯文字時它將佔據整個螢幕

雖然不能像Word文件一樣調整字型、改變大小但是優勢

卻也是顯而易見的

1.全鍵盤操作、快捷鍵的組合,使效率大大提高,

2.啟動快,輕便快捷

3.擴充套件多,足夠用

在linux vi/vim 文字編輯器裡有三種模式:命令模式,輸入模式和末行模式。這三者模式的區別是什麼呢?

命令模式:是vi/vim 編輯器進入後的預設模式,比如說你想編輯檔案,那麼就需要輸入“i”,讓當前模式變為插入模式或者輸入模式,這樣你就可以編輯這個文字了。歷史故事的成語,還可以讓使用者執行命令,比如複製行、貼上行。

輸入模式:顧名思義就是要對本文做輸入的操作,也就是說可以對檔案做出更改操作。

末行模式:用於查詢文字、儲存修改。

其中我們需要重點了解到的是他們之間的轉換模式,這可不簡單

命令模式-->輸入模式-->命令模式

命令模式-->末行模式-->命令模式

命令模式-->輸入模式

i:insert,在當前游標所在字元的前面,轉為輸入模式

I:大寫的i,在當前游標所在行的行首轉換為輸入模式

a:append,在當前游標所在字元的後面轉換為輸入模式

A:在當前游標所在行的行尾轉換為輸入模式

o:open,在當前游標所在行的下方新建一行並轉為輸入模式

O:大寫的o,不是數字0,在當前游標所在行的上方新建一行並轉換為輸入模式

輸入模式-->命令模式

ESC

命令模式-->末行模式

:

末行模式-->命令模式

ESC ESC

示意圖▲

瞭解完它的幾大模式和三大特點後,我們就開始進行操作了!文字編輯方式正確開啟的姿勢你有Get到嗎?(多圖預警!!!)

開啟檔案方式:檔案開啟後預設處於命令模式下

vim filename//開啟檔案

vim +n filename//開啟檔案並定位到第n行

vim +/pattern filename//開啟檔案並定位到第一次被/pattern匹配到的內容行首

關閉檔案方式:末行模式關閉檔案

命令>意義

q>退出 wq>儲存並退出

q! >不儲存退出 w>儲存但不退出

w! >強行儲存 wq!>強行儲存並退出

x>強行儲存並退出

命令模式關閉檔案:ZZ

移動游標

逐字元移動

h:向左移動一個字元

l:向右移動一個字元

j:向下移動一個字元

k:向上移動一個字元

#h:向左移動#個字元

#l:向右移動#個字元

#j:向下移動#個字元

#k:向上移動#個字元

以單詞為單位移動

w:移動到下一個單詞的詞首

e:跳至當前或下一個單詞的詞尾

b:跳至當前或上一個單詞的詞首

#w:以當前游標為起點跳至第#個單詞的詞首

#e:以當前游標為起點跳至第#個單詞的詞尾

#b:以當前游標為起點跳至第#個單詞的詞首

行內跳轉

0:數字0,跳轉到絕對行首

:跳轉到行首的第一個非空白字元

$:跳轉到絕對行尾

行間跳轉

gg:跳轉到第一行

G:跳轉到最後一行

#gg:跳轉到第#行

#G:跳轉到第#行

句子間跳轉

(:左小括號,跳轉到上一個句子

):右小括號,跳轉到下一個句子

段落間跳轉

{:左大括號,跳轉到上一個段落

}:右大括號,跳轉到下一個段落

翻屏

ctrl+f:向下翻一屏

ctrl+b:向上翻一屏

ctrl+d:向下翻半屏

ctrl+u:向上翻半屏

字元編輯

編輯命令<意義

x<刪除游標所在處的單個字元

#x<刪除游標所在處及其向後共#個字元 xp<交換游標所在處的字元及其後面字元的位置

刪除命令:d

命令模式下d命令常與跳轉命令組合使用,如

d$:表示刪除當前游標所在位置到行尾的內容

d:表示刪除當前游標所在位置到第一個行首非空白字元位置的內容

d0:表示刪除當前游標所在位置到絕對行首的內容

#d跳轉符:刪除跳轉符指定範圍內的#個,例如 #dw #de #db

dd:刪除當前游標所在行整行

#dd:刪除包括當前游標所在行在內的#行

D:刪除當前游標所在行的內容,保留空行

末行模式下d命令的使用

語法::StartADD,EndADDd

這裡的StartADD與EndADD是指一個範圍,例如:

1,5d:表示刪除第1到第5行

範圍表示方法:

表示方法<意義

.<游標所在當前行 $<最後一行

+#<游標所在行往後#行

$-#<倒數第#行 %<全文

複製命令:yy

貼上命令:p

p:小寫p

若刪除或複製的為整行內容,則貼上至游標所在行的下方

若刪除或複製的為非整行,則貼上至游標所在字元的後面

P:大寫p

若刪除或複製的為整行內容,則貼上至游標所在行的上方

若刪除或複製的為非整行,則貼上至游標所在字元的前面

替換:r

R:替換模式,替換多個字元

r#:將當前游標的字元替換為#,這裡的#可以是任何字元

撤銷編輯:u

u:撤銷前一次的編輯操作,連線u命令可以撤銷此前的n次編輯操作

#u:直接撤銷此前的#次編輯操作

ctrl+r:還原最近一次的撤銷操作

重複前一次編輯操作:.

視覺化模式:

視覺化模式下可以對選取的內容進行前面講的所有編輯操作

v:按字元選取內容

V:按矩形塊(行)選取內容

文字查詢:

/pattern:從上往下查詢匹配的內容

?pattern:從下往上查詢匹配的內容

n:從上往下查詢匹配到的內容的下一條

N:從下往上查詢匹配到的內容的下一條

查詢並替換:s

s命令只能在末行模式下使用

語法:

ADDR1,ADDR2 s/pattern/string/gi

1,5 s/abc/def/g:

表示把第一行到第五行的所有abc替換為def

末行模式下顯示或取消顯示行號:

set nu:顯示行號

set nonu:取消顯示行號

VIM Text Editor

最經典實用的上古神器

如果你是一位 IT 界人士,需要或將要與 Linux 系統打交道,那麼學習好 Vim 的操作絕對能讓你的工作輕鬆百倍!!因為很多時候, Linux 作為伺服器是不會開啟圖形介面,當需要遠端操作時,你只能利用 SSH“命令字元式”的 Shell 介面對其進行操作,這時如果你需要修改伺服器上的網頁程式碼或配置檔案,VI 或 VIM 命令就是你最佳最方便也是最強大的夥伴了!相信我,學好 數理化 VIM,走遍天下也不怕……