回顧:
正則表達式(BRE,ERE)
基本正則表達式與擴展正則表達式之間的差別就是:
次數匹配和分組的時候擴展正則表達式沒有了反斜線。
BRE:
字符匹配:點號(.),[],[^]
次數匹配:*,\?,\+,\{m\},\{m,n\}
位置錨定:^,$,\<,\>
分組及引用:\(\),\1,\2.............
ERE:
字符匹配:點號(.),[],[^]
次數匹配:*,?,+,{m},{m,n}
位置錨定:^,$,\<,\>
分組及引用:(),\1,\2,.........
或者:|
上面的或者“|”他獲得的是整個事件的右側或者左側,所以我們如果僅僅是獲得一側的一部分內容的話,我們一定要加括號,當然這個括號依然起到分組的作用。
grep,egrep,fgrep
文本過濾器:PATTERN
-v
-o
-i
-q
-A
-B
-C
wc, cut, sort, uniq, diff, patch
vim編輯器
文本編輯器:
文本:純文本信息,如果站在ASSII角度來講,是不加任何修飾的信息:ASSII text;
word文檔不是純文本的,像記事本纔是純文本的編輯器。
ASIItext; Unicode;
文本編輯種類:
行編輯器:sed
全屏編輯器:nano,vi
vi:Visual Interface
vim: Vi IMproved
注意:vi與vim是不同的,有的linux系統發行版上只有vi,而沒有vim
vim:
模式化的編輯器
(什麼叫模式化?即對於vi來講,他有很多不同的模式,在每一種模式下,用戶擊鍵所帶來的功能是不一樣,也就是說我們打開文本的方式不同,所帶來的功能就不一樣。)
基本模式:
編輯模式,命令模式
輸入模式
末行模式:
內置的命令行接口;
打開文件:
本地沒有此文件,我們會自動創建此文件,對於vim打開一個文件時,如果指定的文件路徑事先並不存在,則事先會創建此文件,並把我們編輯的內容保留在文件中,如果文件事先存在的話,就會打開此文件,並讓光標默認處在第一行的最左側,即第一行的第一個字符上
格式:
#vim [options] [file ..]
vim打開一個文件後,我們再保存並關閉文件,則直接輸入兩個大寫的“Z”:ZZ
+#: 打開文件後,直接讓光標處於第#行的行首;
例:[root@centos6~]# vim +7 /etc/fstab
+/PATTERN:打開文件後,直接讓光標處於第一個被PATTERN匹配到的行的行首;
“+/”是固定的格式,後面直接跟正則表達式的模式
例:[root@centos6~]# vim +/tmpfs /etc/fstab
+:自動處在文件的尾行行首;(這個命令還是比較常用的,因爲我們需要在文件尾 部添加配置時經常使用)
例:[root@centos6~]# vim + /etc/fstab
使用vim編輯器打開文件後,界面右下角顯示光標處的位置,上面的截圖爲,光標處在第八行第一個字符;界面的左下角表示這個文件一共有16行,一共有899個字符
如果一個文件內容很多,使用vim打開時一屏顯示不完,那麼我們在往下查看的時候,界面的右下角會出現百分比。
模式轉換:
編輯模式(命令行模式):默認模式
編輯模式------->輸入模式
i:insert,在光標所在處輸入;
a:append,在光標所在處的後方輸入;
o:小寫“o”表示在光標所在處的下方打開一個新行,光標處在行首;
I:大寫“I”表示在光標所在行的行首插入;
A:表示在光標所在行的行尾插入;
O:大寫“O”表示在光標所在行的上方打開一個新行;
輸入模式--------->編輯模式(命令行模式):
鍵入“ESC”鍵即可。
編輯模式--------->末行模式:
:
使用冒號:進入末行模式,冒號就是內置的命令行接口,在末行模式下可以執行很多命令
刪除第10行到100行
:10,100d
將vim文本內容加上行號:
:set nu //顯示行號
:set nonu //表示取消行號
(vim是非常強大的內置的命令行接口;)
末行模式------------->編輯模式
連續按兩次“ESC”
末行模式下:關閉文件:
ZZ:保存並推出;
:q:退出,文件沒有執行過任何保存;
:q!:強制退出,不保存此前的編輯操作;
:wq:保存並推出;
:x保存並退出;
:w PATH/TO/SOMEFILE //將文件保存到什麼位置
命令行模式下光標的跳轉:
字符間跳轉
h,l
h:是向左跳轉一個字符;
l:是向右跳轉一個字符;
j,k
j:是向下跳一個字符;
k:向上跳轉一行;
(記憶J,K,就是想像成日本在韓國的下面)
#COMMAND:跳轉由#指定的個數的字符,COMMAND表示h,l,j,k命令;
舉例:6l:表示向右跳轉6個字符
單詞間跳轉
w:下一個單詞的詞首;
e:當前或後一個單詞的詞尾;
b:當前或前一個單詞的詞首;
#COMMAND:跳轉由#指定的個數的單詞;(COMMAND,表示w,e,b)
行首行尾跳轉
^:跳轉至行首的第一個非空白字符;
0:數字“0”跳轉至絕對行首;(tab鍵的空格在行首是跳不過去的,只跳行首空 格)
$:跳轉至行尾;
行間跳轉
#G:跳轉至由#指定的行;
1G,gg:第一行;
G:最後一行;
句間跳轉
):表示跳轉至下一句;
(:表示跳轉至上一句;
段間跳轉
}:表示下一個段落
{:表示上一個段落
命令行模式下的翻屏操作:
ctrl+f:向文件尾部翻一屏;
ctrl+b:向文件首部翻一屏;
ctrl+d:向文件尾部翻半屏;
ctrl+u:向文件首部翻半屏;
Enter:按行向後翻
vim的命令模式下編輯命令:
在編輯模式(命令行模式)下的操作:
字符編輯
替換命令
刪除命令
粘貼命令
複製命令
字符編輯:
x:小寫的x,刪除光標所在處的字符;
#x:刪除光標所在處起始的#個字符;
xp:交換光標處及其後面的字符的位置;
替換命令(replace):
r:替換光標所在處的字符;
rCHAR:CHAR表示要替換的內容
刪除命令:
d:刪除命令,可結合光標跳轉字符,實現範圍刪除;
d$:刪除光標處到行尾的內容;
d^:刪除光標處之前到行首的內容;
dw:刪除光標處的一個單詞;
de:
db:
上面的 dw,de,db,前面還可以加上數字,表示刪除多個單詞
#COMMAND:
dd:刪除光標所處的一整行內容;
#dd:刪除光標所處的行起始的共#行;
注意:刪除的命令,不會立即清掉,而是保存在緩存中,緩衝區中可以保留多個內容,但是隻有最後一個才能被粘貼。
粘貼命令(p put paste):
p:小寫“p”,緩衝區中的內容如果爲整行,則粘貼在當前光標所在行的下方;否 則,則粘貼至當前光標所在處的後方;
P:大寫“P”,緩衝區中的內容如果爲整行,則粘貼在當前光標所在行的上方;否 則,則粘貼至當前光標所在處的前方;
注意:我們刪除之後做了粘貼,那麼就相當於移動;如果不粘貼,則就是刪除;
複製命令(yank,簡寫y):
y:複製,工作行爲相似於d命令;
y$
y^
y0
ye
yw
yb
#COMMAND:表示支持前面加數字
yy:表示複製一整行;
#yy:複製#行
改變命令(change,c):
編輯模式(命令行模式)----->輸入模式,實現刪除操作;
dd命令是刪除一整行,但是模式還是命令行模式;
cc命令是刪除一整行,但是模式由命令行模式成爲輸入模式;
用法:
c$ c^ c0
cd ce cw 並且還支持 #COMMAND
cc:刪除光標所在的行,並轉化爲輸出模式;
#cc:
可視化模式:
v:小寫v,表示按字符選定;按小寫v之後,使用方向鍵移動光標,就能根據字符選 中內容;
V:大寫V,表示按行選定;按大寫V之後,使用方向鍵移動光標,就能根據整行選中 內容;
結合編輯命令:
d:表示選中並刪除
c:表示刪除並修改
y:表示選中並複製
撤銷操作:
u:小寫“u”撤銷此前的工作;
可撤銷的操作可以有多個,一般而言默認爲50個
#u:表示撤銷此前的#個操作;
撤銷此前的撤銷操作:
ctrl+r
點號“.”:重複執行前一個編輯操作:
vim自帶的練習教程:
vimtutor
我們直接在命令行中運行“vimtutor”即可打開教程;
vim末行模式:
進入末行模式使用冒號就行“:”
末行模式時內建的命令行接口