vim是Linux中的一款功能強大的文本編輯器,基本能夠知足咱們在Linux中對文本處理的所有需求vim
一.用vim打開文件
通常狀況下,咱們用vim打開一個已有文件時都是用vim+文件名直接打開一個文件,若文件不存在則保存時在當前目錄下新建這個文件,並在底行提示「[New File]」,但vim打開的功能不止於此centos
格式:vim [option] [file]bash
vim [file] 直接打開(新建)文件,若是是已有文件,則光標編輯器
處於上次退出時的位置centos7
vim +# [file] 打開文件後,讓光標處於第#行的行首,+默認光標spa
處於末行行首命令行
vim -b [file] 以二進制的方式打開文件code
vim -d [file1] [file2] 比較多個文件(如果兩個文件則在屏幕上同orm
時顯示兩個文件)blog
vim -m [file] 以只讀的方式打開文件
二.vim的三種主要模式簡介
三種模式的簡介:
vim主要有Normal(命令),Insert(插入或編輯),extended command(擴展命令)三種模式,這三種模式各有各的功能
命令模式:咱們打卡一個文件時直接進入vim的命令模式,也就是vim的默認模式,因爲vim是個基於命令行的編輯器,因此沒有鼠標,全部的光標移動操做都經過鍵盤執行,而這些操做都是在命令模式中執行,除了移動光標,命令模式中還主要進行復制,剪切,粘貼,搜索等操做。
編輯模式:這個模式主要提供文本的具體編輯功能
擴展命令模式:多用於查找,讀取,顯示行號等功能
除了這三種經常使用的模式,vim還有:選擇(visual)模式,不過功能相較單一,主要用於vim中文本的選擇
替換(replace)模式,用於字符的替換
模式圖示:
模式間的轉換:
命令模式 --> 插入模式
i: 在光標所在處輸入
I:在當前光標所在行的行首輸入
a: 在光標所在處後面輸入
A:在當前光標所在行的行尾輸入
o: 在當前光標所在行的下方打開一個新行
O:在當前光標所在行的上方打開一個新行
插入模式 --> 命令模式
ESC
命令模式 --> 擴展命令模式
:
擴展命令模式--> 命令模式
ESC, enter
命令模式 --> 替換模式
R/r
替換模式-->命令模式
ESC
命令模式 --> 選擇模式
V/v
選擇模式-->命令模式
ESC
V/v
替換模式<-->編輯模式
Insert
三.命令模式
在命令模式下輸入的命令是在屏幕顯示的,下面是經常使用的命令模式的命令:
ZZ: 保存並退出
ZQ: 不保存直接退出
光標的移動指令:
字符間移動 h: 向左移動光標(等同鍵盤的上下左右鍵但上下左右鍵能夠在任意模式下使用,但在擴展命令模式下 使用上下
鍵,分別表示上一條命令和下一條命令,hjkl只能在命令模式和選擇模式使用)
l: 向右移動光標
j: 向下移動光標
k: 向上移動光標
#h/j/k/l 一次性移動指定行 #表示數字(例如輸入3 h則表示向左
移動三個字節)
單詞間移動w: 光標移到下一個單詞的詞首
e: 光標移到下一個單詞的詞尾
b: 光標移到當前或上一個單詞的詞首
#w|e|b 一次性移動指定個單詞 #表示數字
頁間移動H: 光標移到當前頁的頁首
L: 光標移到當前頁的頁尾
M: 光標移到當前頁的頁中
整個文件間移動 G: 光標移到整個文件的尾行
#G: 光標跳到指定行
gg: 光標移到整個文件的首行
^: 光標跳轉至行首的第一個非空白字符
行內移動0: 光標跳轉至行首
$: 光標跳轉至行尾
句段間移動):光標跳轉至下一句句首
(:光標跳轉至上一句句首
}:光標跳轉至下一段段首
{:光標跳轉至上一段段首
當前頁面的翻頁操做:
Ctrl+f: 向文件尾部翻一屏
Ctrl+b: 向文件首部翻一屏
Ctrl+d: 向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏
對文本的刪除複製等操做:
刪除 x: 刪除光標處的字符
#x: 刪除光標處起始的#個字符
xp: 交換光標所在處的字符及其後面字符的位置
c$: 刪除到行尾,同時進入插入模式
c^:刪除到行首,同時進入插入模式
c0:刪除到行首,包含帶空格的行首,同時進入插入模式
cw: 刪除到當前單詞的詞尾,同時進入插入模式
cc: 刪除當前行,同時進入插入模式
#cc:多行刪除,同時進入插入模式
替換 J:刪除當前行後的換行符
~:轉換大小寫
r: 替換光標所在處的字符
R:切換成REPLACE模式 此模式下輸入的字符將替換當前字符,退格鍵也由刪除變爲還原以前的字符,按ESC退出
剪切d$: 剪切到行尾
d^:剪切到非空行首
d0:剪切到行首
dw: 剪切當前單詞
dd: 剪切光標所在的行
#dd:多行剪切
複製y$: 複製到行尾
y^:複製到非空行首
y0:複製到行首
yw: 複製當前單詞
yy: 複製光標所在的行
#yy:多行復制,#表示複製的行數
"[a-z]d|y 複製或剪切到指定的寄存器
粘貼 p:緩衝區存的若是爲整行,則粘貼當前光標所在行的下方;不然,則粘貼至當前光標所在處的後面
P:緩衝區存的若是爲整行,則粘貼當前光標所在行的上方;不然,則粘貼至當前光標所在處的前面
"[a-z]p|P 粘貼到光標所在位置
撤銷重作u撤銷最近的更改
#u撤銷以前屢次更改
U 撤消光標落在這行後全部此行的更改
按Ctrl - r重作最後的「撤消」更改
. 重複前一個操做
n.重複前一個操做n次
四.擴展命令模式
按「:」進入擴展命令模式並建立一個命令提示符: 處於底部的屏幕左側
命令:
基礎命令:
w 寫(存)磁盤文件
wq 寫入並退出
x 寫入並退出
q 退出
q! 不存盤退出,即便更改都將丟失
r [filename] 讀文件內容到當前文件中
w [filename] 將當前文件內容寫入另外一個文件
! [command] 執行命令
r! [command] 讀入命令的輸出
擴展命令模式中的地址定界功能
地址定界第一步:
在擴展命令模式的「:」後面輸入數據來表示範圍
下面是輸入數據的格式:
# 具體第#行,例如2表示第2行
#,# 從左側#表示起始行,到右側#表示結尾行
#,+# 從左側#表示的起始行,加上右側#表示的行數例如2,+3 表示2到5行
. 當前行
$ 最後一行
% 全文, 至關於1,$
/pat1/,/pat2/表示從第一次被pat1模式匹配到的行開始,一直到第一次被pat2匹配到的行結束
例如/asd/,/zxc/表示從第一個有「asd」的行到其後面第一個有「zxc」的行
#,/pat/從第#行到其後面第一個有pat的行
/pat/,$從第一個有pat的行到最後
第二部在輸入的數據後跟一個編輯命令
d刪除前面所選擇的範圍
y複製前面所選擇的範圍
w file: 將範圍內的行另存至指定文件中
r file:在指定位置插入指定文件中的全部內容
擴展命令模式的查找功能
/PATTERN:從當前光標所在處向文件尾部查找,PATTERN爲要搜索的詞條
?PATTERN:從當前光標所在處向文件首部查找,PATTERN爲要搜索的詞條
n:與命令同方向
N:與命令反方向
擴展命令模式的替換功能
s: 在擴展模式下完成查找替換操做
格式:s/要查找的內容/替換爲的內容/修飾符
要查找的內容:可以使用模式
替換爲的內容:不能使用模式,但可使用\1, \2, ...等後向引用符號;還可使用「&」
引用前面查找時查找到的整個內容
修飾符:
i: 忽略大小寫
g: 全局替換;默認狀況下,每一行只替換第一次出現
gc:全局替換,每次替換前詢問
• 查找替換中的分隔符/可替換爲其它字符,例如
s@/etc@/var@g
s#/boot#/#i
舉例講解一:
替換/etc/rc.d/init.d/functions文件中的/etc/sysconfig/init爲/var/log
1.vim進入/etc/rc.d/init.d/functions,因爲文件過長,在此只選取一部分展現
[root@centos7 ~]# vim /etc/rc.d/init.d/functions # Read in our configuration if [ -z "${BOOTUP:-}" ]; then if [ -f /etc/sysconfig/init ]; then . /etc/sysconfig/init else # This all seem confusing? Look in /etc/sysconfig/init, # or in /usr/share/doc/initscripts-*/sysconfig.txt BOOTUP=color RES_COL=60 MOVE_TO_COL="echo -en \\033[${RES_COL}G" SETCOLOR_SUCCESS="echo -en \\033[1;32m" SETCOLOR_FAILURE="echo -en \\033[1;31m"
2.在命令模式下(默認模式)輸入「:」進入擴展命令模式
3.在「:」後輸入%s@/etc/sysconfig/init@/var/log@gi
[root@centos7 ~]# vim /etc/rc.d/init.d/functions # Read in our configuration if [ -z "${BOOTUP:-}" ]; then if [ -f /etc/sysconfig/init ]; then . /etc/sysconfig/init else # This all seem confusing? Look in /etc/sysconfig/init, # or in /usr/share/doc/initscripts-*/sysconfig.txt BOOTUP=color RES_COL=60 MOVE_TO_COL="echo -en \\033[${RES_COL}G" SETCOLOR_SUCCESS="echo -en \\033[1;32m" SETCOLOR_FAILURE="echo -en \\033[1;31m" :%s@/etc/sysconfig/init@/var/log@gi
解釋:「%」表示整個文本
s表示進行查找替換操做(本質上是表示引用「sed」命令)
@用來分界,三個@將命令分紅四部分,第二部分爲在文本中搜索的詞條
第三部分是要替換的詞條,第四部分是命令的參數
/etc/sysconfig/init要搜索的詞條
/var/log要替換的詞條
g表示替換
i表示忽略大小寫
結果:替換後部分用藍色背景顯示
[root@centos7 ~]# vim /etc/rc.d/init.d/functions # Read in our configuration if [ -z "${BOOTUP:-}" ]; then if [ -f /var/log ]; then . /var/log else # This all seem confusing? Look in /var/log, # or in /usr/share/doc/initscripts-*/sysconfig.txt BOOTUP=color RES_COL=60 MOVE_TO_COL="echo -en \\033[${RES_COL}G" SETCOLOR_SUCCESS="echo -en \\033[1;32m" SETCOLOR_FAILURE="echo -en \\033[1;31m"
五.編輯模式
編輯模式在vim中用來輸入,修改,刪除文本,是編輯文本的模式
編輯模式下的經常使用命令:ENTE 換行
BACK SPACE 退格鍵,刪除光標前一個字符
DELETE 刪除鍵,刪除光標後的一個字符
方向鍵 在文本中移動光標(在編輯模式下由於要輸入,
因此沒法使用hjkl來移動光標)
HOME/END 移動光標到行首/行尾
Page Up/Page Down 上/下翻頁
Insert 切換光標爲輸入/替換模式,光標將變成豎線/下劃線
ESC 退出輸入模式,切換到命令模式