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 ”
儲存並退出