Linux知識十二 vi vim詳解

2021-08-25 12:48:35 字數 4474 閱讀 8261

vi 知識:

按esc鍵後按 /,輸入要查詢的字元向下查詢、?輸入要檢視的字元向上查詢,查詢狀態中按:n為下乙個,n為上乙個查詢字元。

按esc鍵後按esc鍵後按q鍵不儲存退出;按wq鍵儲存退出。

按esc鍵後按shift+zz:儲存退出 ;

vi 的使用:基本上 vi 共分為三種模式,分別是『一般模式』、 『編輯模式』與『指令列命令模式』三種。

一般模式: 移動游標的方法

h 或 向左方向鍵(←)    游標向左移動乙個字元

j 或 向下方向鍵(↓)    游標向下移動乙個字元

k 或 向上方向鍵(↑)    游標向上移動乙個字元

l 或 向右方向鍵(→)    游標向右移動乙個字元

如果想要進行多次移動的話,例如向下移動 30 行,可以使用 "30j" 或 "30↓" 的組合按鍵, 亦即

加上想要進行的次數(數字)後,按下動作即可!

螢幕『向下』移動一頁,相當於 [page down]按鍵 (常用)

[ctrl] + [f]

螢幕『向上』移動一頁,相當於 [page up] 按鍵 (常用)

[ctrl] + [b]

[ctrl] + [d] 螢幕『向下』移動半頁

[ctrl] + [u]     螢幕『向上』移動半頁

+           游標移動到非空格符的下一列

-           游標移動到非空格符的上一列

那個 n 表示『數字』,例如 20 。按下數字後再按空格鍵,游標

會向右移動這一行的 n 個字元。例如 20則游標會向後面

n移動 20 個字元距離。

這是數字『 0 』:移動到這一行的最前面字元處 (常用)

0移動到這一行的最後面字元處(常用)

$h           游標移動到這個螢幕的最上方那一行

m           游標移動到這個螢幕的**那一行

l           游標移動到這個螢幕的最下方那一行

移動到這個檔案的最後一行(常用)

gn 為數字。移動到這個檔案的第 n 行。例如 20g 則會移動到這個

ng檔案的第 20 行(可配合 :set nu)

移動到這個檔案的第一行,相當於 1g 啊! (常用)

ggn 為數字。游標向下移動 n 行(常用)

n一般模式: 搜尋與取代

向游標之下尋找乙個字串名稱為 word 的字串。例如要在檔案

/word

內搜尋 vbird 這個字串,就輸入 /vbird 即可! (常用)

向游標之上尋找乙個字串名稱為 word 的字串。

?word

這個 n 是英文按鍵。代表『重複前乙個搜尋的動作』的意思。舉

例來說, 如果剛剛我們執行 /vbird 去向下搜尋 vbird 這個字元

串, 則按下 n 後,    會向下繼續搜尋下乙個名稱為 vbird 的字串。

n如果是執行 ?vbird 的話,那麼按下 n 則會向上繼續搜尋名稱為

vbird 的字串!

這個 n 是英文按鍵。與 n 剛好相反,為『反向』進行前乙個搜尋

n動作。 例如 /vbird 後,按下 n 則表示『向上』搜尋 vbird 。

n1 與 n2 為數字。在第 n1 與 n2 行之間尋找 word1 這個字元

串,並將該字串取代為 word2 !舉例來說,在 100 到 200 行

:n1,n2s/word1/word2/g

之間搜尋 vbird 並取代為 vbird 則:

『:100,200s/vbird/vbird/g』。(常用)

從第一行到最後一行尋找 word1 字串,並將該字串取代為

:1,$s/word1/word2/g

word2 !(常用)

從第一行到最後一行尋找 word1 字串,並將該字串取代為

word2 !且在取代前顯示提示字元給使用者確認 (conform) 是否

:1,$s/word1/word2/gc

需要取代!(常用)

一般模式: 刪除、複製與貼上

x, x在一行字當中,x 為向後刪除乙個字元 (相當於 [del] 按鍵), x為向前刪除乙個字元(相當於 [backspace] 亦即是退格鍵) (常用)

n 為數字,連續向後刪除 n 個字元。舉例來說,我要連續刪除 10個字元, 『10x』。

nx n 為數字,刪除游標所在的那一整列(常用)。

ndd dd 刪除游標所在的向下 n 列, 例如 20dd 則是刪除 20 列

(常用)

d1g         刪除游標所在到第一行的所有資料

dg         刪除游標所在到最後一行的所有資料

d$         刪除游標所在處,到該行的最後乙個字元

d0,那個是數字的 0 ,刪除游標所在處,到該行的最前面乙個字元。

yy,複製游標所在的那一行(常用)

nyy n 為數字。 複製游標所在的向下 n 列, 例如 20yy 則是複製 20 列。          

(常用)

y1g         複製游標所在列到第一列的所有資料

yg         複製游標所在列到最後一列的所有資料

y0         複製游標所在的那個字元到該行行首的所有資料

y$         複製游標所在的那個字元到該行行尾的所有資料

p 為將已複製的資料在游標下一行貼上,p 則為貼在游標上一行!

舉例來說,我目前游標在第 20 行,且已經複製了 10 行資料。則

按下 p 後, 那 10 行資料會貼在原本的 20 行之後,亦即由 21

p, p

行開始貼。但如果是按下 p 呢? 那麼原本的第 20 行會被推到變

成 30 行。 (常用)

j          將游標所在列與下一列的資料結合成同一列

重複刪除多個資料,例如向下刪除 10 行,[ 10cj ]

c復原前乙個動作。(常用)

u重做上乙個動作。(常用)

[ctrl]+r:這個 u 與 [ctrl]+r 是很常用的指令!乙個是復原,另乙個則是重做一次~ 利用這兩個功能按鍵,您的編輯,嘿嘿!很快樂的啦!

不要懷疑!這就是小數點!意思是重複前乙個動作的意思。 如果

您想要重複刪除、   重複貼上等等動作, 按下小數點 .』

『 就好了! (常用)

進入編輯模式

i, i         插入:在目前的游標所在處插入輸入之文字,已存在的文字會向後退; 其中, i 為『從目前游標所在處插入』, i 為『在目前所

在行的第乙個非空格符處開始插入』。 (常用)

a, a            a 為『從目前游標所在的下乙個字元處開始插入』, a 為『從游標所在行的最後乙個字元處開始插入』。(常用)

o, o 這是英文本母 o 的大小寫。o 為『在目前游標所在的下一行處插入新的一行』 o 為在目前游標所在處的上一行插入新的一行! (常用)

r, r 取代:r 會取代游標所在的那乙個字元;r 會一直取代游標所在的文字,直到按下 esc 為止;(常用)

上面這些按鍵中,在 vi 畫面的左下角處會出現『--insert--』或『--replace--』的字樣。 由名稱就知道該動作了吧!!特別注意的是,我們上面也提過了,你想要在檔案裡面輸入字元時, 一定要

在左下角處看到 insert/replace 才能輸入喔!esc:退出編輯模式,回到一般模式中(常用)          

指令列命令模式

:w:將編輯的資料寫入硬碟檔案中(常用)           

:w!:若檔案屬性為『唯讀』時,強制寫入該檔案。不過,到底能不能寫入, 還是跟您對該檔案的檔案許可權有關啊!

:q:離開 vi (常用)

:q!:若曾修改過檔案,又不想儲存,使用 ! 為強制離開不儲存檔案。注意一下啊,那個驚嘆號 (!) 在 vi 當中,常常具有『強制』的意思~                    

:wq:儲存後離開,若為 :wq! 則為強制儲存後離開 (常用)

:e!          將檔案還原到最原始的狀態!                      

zz: 若檔案沒有更動,則不儲存離開,若檔案已經經過更動,則儲存後離開!                       

:w [filename]     將編輯的資料儲存成另乙個檔案(類似另存新檔)                       

:r [filename] 在編輯的資料中,     讀入另乙個檔案的資料。    亦即將 『filename』 這 個檔案內容加到游標所在行後面                      

n1,n2 w [filename]:將 n1 到 n2 的內容儲存成 filename 這個檔案。  

:! command:暫時離開 vi 到指令列模式下執行 command 的顯示結果!例如『:! ls /home』即可在 vi 當中察看 /home 底下以 ls 輸出的檔案資訊!

:set nu        顯示行號,設定之後,會在每一行的字首顯示該行的行號

:set nonu與 set nu 相反,為取消行號!

Linux編輯功能vi vim

建立cpp檔案 touch a.c 檢視cpp檔案 cat a.c 編輯cpp檔案 vim或者vi加檔名 切換到命令模式 按esc 在游標前插入 按i 在游標後插入 按a 刪除游標所在行 在命令模式按下dd 刪除游標前乙個字元 在命令模式下按x 刪前面幾個字元就按幾x,比如刪除游標前的hello,就...

linux文字操作(vi vim)

什麼是 vim?vim是從 vi 發展出來的乙個文字編輯器。補完 編譯及錯誤跳轉等方便程式設計的功能特別豐富,在程式設計師中被廣泛使用。簡單的來說,vi 是老式的字處理器,不過功能已經很齊全了,但是還是有可以進步的地方。vim 則可以說是程式開發者的一項很好用的工具。連 vim 的官方 自己也說 v...

Java知識 LinkedHashMap詳解

與hashmap的異同 同樣是基於雜湊表實現,區別是,linkedhashmap內部多了乙個雙向迴圈鍊錶的維護,該鍊錶是有序的,可以按元素插入順序或元素最近訪問順序 lru 排列,簡單地說 linkedhashmap 雜湊表 迴圈雙向鍊錶 首先,hashmap的構造方法都要呼叫乙個方法 init 而...