和sed相比,sed爲字處理器(行編輯器),將文本逐行放入到模式空間(也就是內存)中進行處理,並顯示在屏幕上。而vim、vi以及nano都是全屏文本編輯器,而vim則是vi的增強版本,相對於vi,vim則擁有特殊字符着色的功能,也是最爲經常使用的功能;正則表達式
本節咱們重點介紹vim編輯器的常見用法;shell
*Linux系統的核心就是經過文原本存儲全部的軟件配置文件*,因此,可以熟練的掌握文本編輯器對於學習Linux系統而言是相當重要的。vim
vim編輯器做爲vi編輯器的升級版,它將伴隨咱們學習Linux系統的整個過程!bash
vi:Visual interface可視化接口;less
vim:VI iMproved vi的加強版;【vim編輯器實現是語法自動着色,方便咱們判斷本身縮寫的語句是否正確】編輯器
vim編輯器分爲三種模式(這點和vi編輯器相同),編輯模式(命令模式),輸入模式,末行模式;學習
在咱們經過vim進入文本的時候,默認處於編輯模式。spa
模式切換:3d
編輯模式 -> 輸入模式server
i 在當前光標所在字符的前面,進入輸入模式;
a 在當前光標所在字符的後面,進入輸入模式;
o 在當前光標所在行的下面重啓一行,進入輸入模式;
I 在當前光標所在行的行首,進入到輸入模式(自動將光標移動到當前行行首);
A 在當前光標所在行的行尾,進入到輸入模式(自動將光標移動到當前行行尾);
O 在光標所在字符的上一行,轉換爲輸入模式(和 o 正好相反);
輸入模式 -> 編輯模式
ESC鍵
編輯模式 ->末行模式
輸入 「:」 便可
在輸入模式下能夠關聯vim的相關命令對文本進行編輯,或者切換光標位置:
例如:5d #刪除第5行
10,20d #刪除第10行到20行,總共刪除11行
set nu #顯示行號
! ls /etc #在vim下關聯shell命令
【以上操做都是咱們比較經常使用的操做】
末行模式 -> 編輯模式
ESC鍵
【三種模式之間的切換要注意一點:輸入模式不能和末行模式之間直接切換,必須經過編輯模式來進行切換!】
模式切換總結以下圖:
1、文本打開方式
首先 vim /path/FILE 能夠直接打開文件;
特殊使用方式:
vim +數字 /path/FILE 能夠打開文件,且直接將光標定義在數值指定的行;
vim + /path/FILE 打開文件,將光標處在文件的末尾;
vim +/string /path/FILE 打開文件,且將光標定義在string字符串處,相似於查找功能;
2、文本關閉方式
一、常見關閉文本都是在末行模式下進行
:q 表示退出文本,不保存;
:wq 保存並退出文本;
:q! 若是修改了文本,不想保存,則經過 :q! 來強制退出文本;
:w 只保存,不退出文本;
:w! 強制保存文本,這個權限只有管理員root才擁有;
二、在編輯模式(命令模式)下退出文本
ctrl+z 退出文本,可是不保存
ZZ 保存並退出文本
3、光標移動
注意:如下操做均處於編輯模式(命令模式)下運行;
一、逐字符的移動光標:
j 下
k 上
h 左
l 右
【這個「上下左右」要更加好於鍵盤的「上下左右」,它更加的方便】
結合數字來使用,既能夠同時移動多行,例如:5j 向下移動5行;6l 向右移動6個字符;
二、按照單詞爲單位來移動光標
w 光標處於單詞首部,以單詞爲單位向後移動
e 光標處於單詞尾部,以單詞爲單位向後移動
b 光標處於單詞首部,以單詞爲單位向前移動
同理,能夠結合數字來使用:5e 向後移動5個單詞位;10b 向前移動10個單詞位;
三、行內跳轉
0 表示跳轉到行首(不包含製表符)
^ 表示跳轉到絕對的行首
$ 表示跳轉到行尾
四、行間跳轉
數字G 指定跳轉到那個固定行,例如:5G 表示跳轉到第5行;
G 若是不加數字,則是直接跳轉到最後一行;
【末行模式下,也能夠進行行間跳轉;例如: 「:5」 表示跳轉到第5行;】
4、翻屏
編輯模式下:
ctrl+f 向下翻一屏
ctrl+b 向上翻一屏
ctrl+d 向下翻半屏
ctrl+u 向上翻半屏
5、刪除操做
刪除單個字符
x 刪除光標所處的單個字符;
數字x 和以前移動光標原理相同,能夠刪除「數字」個字符;例如:5x 刪除5個字符;
刪除命令--d
dw 刪除光標所在的那個單詞;
數字dw 刪除「數字」個單詞,從當前光標開始算起;
dd 刪除當前行;
【在末行模式下,能夠刪除多行「:StartADD,EndADDd」刪除startadd到endadd行;這裏記住一個特殊符號:. (點,表示當前行),例如: :.,$-3d 這表示刪除當前行到倒數第4行之間的全部內容;若是說要刪除刪除當前行到向下數十行的內容呢? :.,+10d 其中,+ 號表示向下多少行的意思,+多少,就是向下多少行】
【vim下刪除內容的時候要注意:刪除的內容不會被馬上清除,還能夠恢復刪除的內容,最近一次刪除的內容能夠複製或者剪切到其餘的地方,經過p命令粘貼到別的地方】
6、複製--y
複製的用法基本與刪除用法相同
其中 yy 複製當前行使用最爲多;
數字y 表示複製從當前光標單詞算起,複製多少個單詞;5y 複製5個單詞;
7、粘貼--p和P
P:若是刪除或複製的內容爲整行的內容,則粘貼至光標所在行的上方,若是複製或刪除的內容爲非整行內容,則粘貼在光標的前方;
p:若是刪除或複製的內容爲整行的內容,則粘貼至光標所在行的下方,若是複製或刪除的內容爲非整行內容,則粘貼在光標的後方;
8、修改--c
先刪除掉內容,再轉換爲輸入模式:
cc 刪除當前行後,直接進入輸入模式進行編輯;
c$ 刪除當前光標到末行的內容,在直接轉入到輸入模式進行編輯;
【cc 和 c$ 是比較常見的兩種用法】
9、替換--r
替換操做通常用於單個字符的操做:
r字符或數字 將光標所在字符替換爲輸入的字符或數字;
10、撤銷--u
u 撤銷前一次的操做,連續橋u命令,則是撤銷此前的n次操做;默認狀況下最多撤銷前50次操做;
數字u 直接撤銷前「數字」次操做;例如,5u 撤銷前5次的操做;
【取消最近一次撤銷的操做則爲 ctrl+r】
11、重複前一次的操做--.
. (點)這個符號就表示重複上一次的編輯操做
例如:dd 刪除了當前行,此時一致敲 . 則表示重複 dd 的命令;
12、可視化模式(標記內容)--v和V
進入但是化模式,經過移動光標來選擇要編輯的內容;
v 表示按照字符來選取內容
V 表示按照行來選取內容
選擇了對應的內容之後,再進行復制,刪除等等操做;
十3、查找,以及查找並替換
查找:
這個內容則和less命令的相似,就不在多說
查找並替換:
查找到對應的內容後,能夠進行替換操做,這裏和sed名的格式有點相似:
ADDR1,ADDR2s@pattedn@string@gi #其中ADDR1,ADDR2表示要替換的範圍,s能夠理解爲sed命令,pattern選擇出要替換的字符串,替換爲後面的string,最後g表示全局替換,而i則表示不區分大小寫
例如: :.,$-1s@he@HE@g #從當前行到倒數第二行,中的he所有替換爲HE
【1,$表示全文範圍,也能夠經過%來表示全文範圍】
練習:將/etc/yum.repos.d/server.rpo文件中的ftp://instructor.example.com/pub替換爲http://172.16.0.1/yum
vim /etc/yum.repos.d/server.rpo
:%s@ftp://inistructor\.example\.com/pub@http://172.16.0.1/yum@g
十4、同時編輯多個文件
vim是能夠支持跨文件編輯的(例如,將file1中的內容複製粘貼到file2中去)
vim FILE1 FILE2 FIEL3 #在vim後面接上多個文件的時候,其實是打開了FILE1,FILE2,FILE3三個文件,可是顯示只顯示了FILE1的內容。
在末行模式下:
:next 切換到FILE2或後者其餘文件
:prev 切回到FILE1或則前面的文件
:last 切換到最後一個文件
:first 切換到第一個文件
:q 只能退出當前文件,若是想退出全部文件,則須要使用
:qa 退出全部文件
十5、分屏顯示同一個文件--ctrl+w [s|v] 或者 -[o|O]
上面咱們說到了同時打開多個文件,可是不在同一個屏幕上面顯示,如何才能讓屏幕同時顯示多個文件呢?
ctrl+w鬆開後,再按s 水平分割窗口
vim -o FILE1 FILE2
ctrl+w鬆開後,再按v 垂直分割窗口
vim -O FILE1 FILE2
ctrl+w鬆開後,再按w或是小鍵盤上下左右 切換光標所在文件
十6、將當前文件中部份內容另存到另一個文件中--w
在末行模式下進行操做:
例如: :.,+5w /path/somefile #保存當前文件光標所在行,到接下來5行的內容保存到另一個/path/somefile文件中去;
十7、將另一個文件的內容填充到當前文件中--r
在末行模式下進行操做:
例如: :r /etc/inittab #將/etc/inittab文件的內容填充到當前文件光標所在的地方;
十9、調用shell腳本程序(調用命令)--!
在末行模式下進行操做:
例如: :! ls /etc #這樣就能夠直接在vim編輯器中去運行ls /etc的命令;
二10、高級操做
一、顯示或取消行號
:set number 也就是簡寫爲 :set nu
:set nonu 取消行號
【默認狀況下是沒有行號的,咱們所若是想默認進來就看到行號,就必須去修改vim的配置文件】
二、是否忽略大小寫
:set ignorecase 也就是簡寫爲 :set ic
:set noignorecase
三、設置自動縮進功能
默認狀況下回車後是沒有縮進的
:set autoindent 也就是簡寫爲 :set ai
:set nohlsearch
四、查找到的文本的高亮顯示與取消
語言着色功能,默認開啓(也叫作高亮顯示)
:set hlsearch
:set nohlsearch #關閉高亮顯示
五、語法着色功能(vim默認開啓)
:syntax on
:syntax off #關閉語法着色功能
二11、vim的配置文件
/etc/vimrc #爲全部shell下的主配置文件,修改這裏的配置文件,則在全部bash程序下生效;
~/.vimrc #各個用戶的家目錄下去編輯這個文件(沒有的能夠本身建立),則只在本bash進程下,對vim的編輯才生效
vimtutor #vim編輯器的教程,這裏有心的朋友能夠本身慢慢去看;
若是在你編輯文件的時候,忽然關閉了該shell程序,並非經過 :q 或者 ZZ 正常退出的文件,則會在當前被編輯文件的同一個目錄下生成 .swp 的隱藏文件文件;
當你再次想編輯這個文件時候則提示以下:
這裏提示您上次在 dated 時間的時候進行過編輯,您是否繼續編輯;
O表示打開該文件,可是隻讀,E表示編輯這個文件,R表示覆蓋這個文件從新編輯,D則是刪除上次編輯的內容,從新再進行編輯,A則是表示退出並終止;
此時,咱們只須要按E進去正常保存,這樣咱們以前編輯的內容就不會丟失,再刪除掉 .swp 的隱藏文件便可;