Linux下的vim命令你確定全部瞭解?

這一節主要是全面介紹vim(vi的高階版本),另外現在幾乎所有的linux分之版本vi命令都做了vim的軟連接,如果驗證的話可以再終端執行 ls -l `which vi`

Linux下的vim命令你確定全部瞭解?

vim軟連接vi

所以本節所介紹的vi即vim,兩者沒有很大區分。

  1. 幾乎所有的Unix like系統都會內置vi文本編輯器,相對其他文本編輯器而言,偏底層,適用行非常強
  2. 很多別的文本編輯軟件的底層是調用vi的
  3. vim具有部分語法檢查功能,程序編輯能力
  4. 編輯速度很快

以上四點中最重要的大概就是第二點了,所以說學會了vi,可以很大程度上避免"重複造輪子".怎麼才算學會了vi呢,vi有很多有趣的快捷鍵,有很多你不知道的東西,一起來看一看吧.

熟悉linux的人都知道vi有三種模式,

命令模式(也稱一般指令模式)

此模式是執行vi指令後的默認進入的模式,在此模式下可以通過"上下左右"移動光標,可以"刪除字符"或者"刪除整列",可以"複製"和"黏貼"

命令行模式

在命令模式下,輸入": / ?"三者之中任意一個都會進入命令行模式,在此模式當中,可以實現 搜索,讀取,存盤,顯示行號,退出vi等等

用一張圖來看一下三種模式的關係:

Linux下的vim命令你確定全部瞭解?

三種模式的關係

vim按鍵說明

命令模式下主要使用的功能:

移動光標:

h 或 左方向鍵 (←) 光標向左移動一個字符

j 或 下方向鍵 (↓) 光標向下移動一個字符

k 或 上方向鍵 (↑) 光標向上移動一個字符

l 或 右方向鍵 (→) 光標向右移動一個字符

如果想要移動多行的話,可以在相應字母前加數字,eg:"30j" 或 "30↓" 是向下移動光標30行.

[Ctrl] + [f] 屏幕“向下”移動一頁,相當於 [Page Down]按鍵 (常用)

[Ctrl] + [b]屏幕“向上”移動一頁,相當於 [Page Up] 按鍵 (常用)

[Ctrl] + [d]屏幕“向下”移動半頁

[Ctrl] + [u]屏幕“向上”移動半頁

0 或功能鍵[Home]這是數字“ 0 ”:移動到這一列的最前面字符處 (常用)

$ 或功能鍵[End]移動到這一列的最後面字符處(常用)

nG n 為數字。移動到這個文件的第 n 列。例如 20G 則會移動到這個文件的第 20 列(可配合 :set nu)

gg 移動到這個文件的第一列,相當於 1G 啊! (常用)

n n 為數字。光標向下移動 n 列(常用)

搜尋與取代:

/word向光標之下尋找一個名稱為 word 的字串。eg:/star就是在當前文件中搜尋star字符串

?word向光標之上尋找一個字串名稱為 word 的字串。

n 是搜索下一個的意思,

N 與 n 剛好相反,為“反向”進行前一個搜尋動作

使用 /word 配合 n 及 N 是非常有幫助的!可以讓你重複的找到一些你搜尋的關鍵字!

:n1,n2s/word1/word2/gn1 與 n2 為數字。在第 n1 與 n2 列之間尋找 word1 這個字串,並將該字串取代為 word2 !舉例來說,在 100 到 200 列之間搜尋 satr 並取代為 STAR 則:":100,200s/star/STAR/g”。(常用)

刪除複製與黏貼:

x, X 在一列字當中,x 為向後刪除一個字符 (相當於 [del] 按鍵), X 為向前刪除一個字符(相當於 [backspace] 亦即是倒退鍵) (常用)

nx n 為數字,連續向後刪除 n 個字符。舉例來說,我要連續刪除 10 個字符, “10x”。

dd 刪除光標所在的那一整行(常用)

ndd n 為數字。刪除光標所在的向下 n 行,例如 20dd 則是刪除 20 行 (常用)

d1G 刪除光標所在到第一行的所有數據

dG 刪除光標所在到最後一行的所有數據(刪除光標之後所有)

d$ 刪除光標所在處,到該行的最後一個字符(刪除光標那一行)

d0 那個是數字的 0 ,刪除光標所在處,到該行的最前面一個字符

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

nyy n 為數字。複製光標所在的向下 n 行,例如 20yy 則是複製 20 行(常用)

y1G 複製光標所在行到第一行的所有數據

yG 複製光標所在行到最後一行的所有數據

y0 複製光標所在的那個字符到該列行首的所有數據

y$ 複製光標所在的那個字符到該列行尾的所有數據

p, P p 為將已複製的數據在光標下一行貼上,P 則為貼在光標上一行! 舉例來說,我目前光標在第 20 行,且已經複製了 10 行數據。則按下 p 後, 那 10 行數據會貼在原本的 20 行之後,亦即由 21 行開始貼。但如果是按下 P 呢? 那麼原本的第 20 行會被推到變成 30 行。 (常用)

J 將光標所在行與下一行的數據結合成同一行

c 重複刪除多個數據,例如向下刪除 10 行,[ 10cj ]

u 復原前一個動作。(常用)(類似於windows中的ctrl+z)

[Ctrl]+r重做上一個動作。(常用)(類似於windows中的ctrl+y)

i, I 進入插入模式(Insert mode):i 為“從目前光標所在處插入”, I 為“在目前所在行的第一個非空白字符處開始插入”。 (常用)

a, A 進入插入模式(Insert mode):a 為“從目前光標所在的下一個字符處開始插入”, A 為“從光標所在行的最後一個字符處開始插入”。(常用)

o, O 進入插入模式(Insert mode):這是英文字母 o 的大小寫。o 為“在目前光標所在的下一行處插入新的一行”; O 為在目前光標所在處的上一行插入新的一行!(常用)

r, R 進入取代模式(Replace mode):r 只會取代光標所在的那一個字符一次;R會一直取代光標所在的文字,直到按下 ESC 為止;(常用)

命令模式下使用的主要功能:

:w! 若文件屬性為“只讀”時,強制寫入該文件。不過,到底能不能寫入, 還是跟你對該文件的文件權限有關啊!

:q 離開 vi (常用)

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

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

ZZ 這是大寫的 Z 喔!若文件沒有更動,則不儲存離開,若文件已經被更動過,則儲存後離開!

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

:! command 暫時離開 vi 到命令行界面下執行 command 的顯示結果!例如 “:! ls /home”即可在 vi 當中察看 /home 下面以 ls 輸出的文件信息!

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

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

vim區塊選擇(Visual Block)

v 字符選擇,會將光標經過的地方反白選擇!

V 列選擇,會將光標經過的列反白選擇!

[Ctrl]+v區塊選擇,可以用長方形的方式選擇數據

y 將反白的地方複製起來

d 將反白的地方刪除掉

p 將剛剛複製的區塊,在光標所在處貼上!

Linux下的vim命令你確定全部瞭解?

區塊選擇

Linux下的vim命令你確定全部瞭解?

批量複製

區塊選擇還有一個重要的功能,批量註釋:

:files 列出目前這個 vim 的打開的所有文件

示例:

root@ubuntu:/tmp# vi hosts1 hosts2

Linux下的vim命令你確定全部瞭解?

輸入:n就進入到下一個文件中,輸入:N就可以到上一個文件中

vim多窗口功能

在命令行模式下輸入:sp是對同一個文件的多窗口操作,:sp filename引入其他文件多窗口操作(多用於對比操作,非常有用)

示例一,:sp

Linux下的vim命令你確定全部瞭解?

vim多窗口

示例二,:sp filename

Linux下的vim命令你確定全部瞭解?

vim多窗口不同文件

:sp [filename] 打開一個新窗口,如果有加 filename, 表示在新窗口打開一個新文件,否則表示兩個窗口為同一個文件內容(同步顯示)。

[ctrl]+w+ j [ctrl]+w+↓按鍵的按法是:先按下 [ctrl] 不放, 再按下 w 後放開所有的按鍵,然後再按下 j (或向下方向鍵),則光標可移動到下方的窗口。

[ctrl]+w+ k [ctrl]+w+↑同上,不過光標移動到上面的窗口。

[ctrl]+w+ q 其實就是 :q 結束離開啦! 舉例來說,如果我想要結束下方的窗口,那麼利用 [ctrl]+w+↓ 移動到下方窗口後,按下 :q 即可離開, 也可以按下 [ctrl]+w+q 啊!

以上就是本節所有的vim的功能介紹了,是否對你有幫助呢,如果對您有幫助將萬分榮幸,走過路過不要錯過,點一波贊,關注一下,後面陸續有Linux知識文章更新,謝謝各位看客!


分享到:


相關文章: