1. 程式人生 > 實用技巧 >linux第三章-進入VIM

linux第三章-進入VIM

linux的入門篇

文章目錄

一,VIM文字編輯器

1,VI/VIM介紹

  • 1,一個文字編輯工具。而在linux中最經典最流行的文字編輯工具就是vi/vim,當然也有一些其他的文字編輯工具,

例如
emacs
pico
nano
joe
jed
諸如此類,但我們只需要掌握vi/vim即可

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

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

  • 2.3,vim是vi的增強版,比vi更容易使用。vi的命令幾乎都可以在vim上使用。


二,VI/VIM的使用方法

1,VI/VIM特性及特點

  • VI/VIM是一種純文字編輯器,它不像word可以排版,可以調整字型大小,可以改變字型等等,vi/vim只是一個文字編輯工具,它只能對文字的內容進行操作,比如新增內容、修改內容、刪除內容等等
  • vi是一個全螢幕的文字編輯器,在編輯文字時它將佔據整個螢幕

2,VI/VIM的三種模式

  • 2.1,vim編輯器有三種編輯模式,分別是命令模式(編輯模式);輸入模式(插入模式);末行模式
    \

三種模式

編輯模式作用
命令模式使用者執行命令,比如複製行,貼上行等待
輸入模式用於輸入文字,修改文字等等
末行模式用於查詢文字,儲存修改等等

vi/vim三種編輯模式之間轉換的方式
命令模式–>輸入模式
i:insert,在當前游標所在字元的前面,轉為輸入模式
I:大寫的i,在當前游標所在行的行首轉換為輸入模式
a:append,在當前游標所在字元的後面轉換為輸入模式
A:在當前游標所在行的行尾轉換為輸入模式
o:open,在當前游標所在行的下方新建一行並轉為輸入模式
O:大寫的o,不是數字0,在當前游標所在行的上方新建一行並轉換為輸入模式
輸入模式–>命令模式
ESC
命令模式–>末行模式

末行模式–>命令模式
ESC ESC


3,VI/VIM文字檔案的編輯方式

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

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

  • 關閉文字的方式:進入末行模式: 輸入q!不儲存退出,wq寫入退出,x強行儲存退出。
  • 命令模式關閉檔案:ZZ退出
  • 移動游標

在這裡插入圖片描述

  • 字元編輯:
    在這裡插入圖片描述
  • 刪除命令: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:取消顯示行號


4,vim的一個小練習

建目錄/tmp/test,將/etc/man_db.conf複製到該目錄下
用vim編輯man_db.conf檔案
在這裡插入圖片描述
設定顯示行號; 移動到第43行,向右移動57個字元,檢視括號內的是什麼內容;
在這裡插入圖片描述

移動到第一行,並向下查詢“gzip”這個字串,它在第幾行;在這裡插入圖片描述

將50行到100行之間的man更改為MAN;
在這裡插入圖片描述

修改完後,突然反悔了,要全部復原,有哪些方法?
通過u撤銷之前的操作。

複製65到73這9行的內容(含有MANDB_MAP),並且貼上到最後一行之後;
進入V視覺化檢視,選中9行的內容然後大寫的Y複製,然後跳轉到最後一行似乎用p貼上

21行到42行之間的內容取消註釋;
在末行模式下使用命令:21,42s/#/ /g
在這裡插入圖片描述

將這個檔案另存為man.test.config的檔案
末行模式下::w man.test.config
到第27行,並且刪除15個字元,結果出現的第一個字元是什麼?
在這裡插入圖片描述

在第一行新增一行,在該行內輸入“I am a student ”

儲存並退出
在這裡插入圖片描述