文本編輯種類:
行編輯器:sed
全屏編輯器 :nano,vi
vim :vi Mproved
模式化的編輯器:
編輯模式,也叫命令模式
輸入模式,插入模式
末行模式:
內置行的命令行接口;
文件打開:如果打開文件時沒有,vim會自動創建文件。
vim 文件名 vim [options] [file ..]
打開文件后,最下一行信息為:
文件名字 總行數 總字符數 光標所在行 ,第幾個字符 內容百分比
"functions" 787L, 18586C 47,7 2%
兩個大寫:ZZ 保存并關閉
vim +# 文件:打開文件后,直接讓關閉處于低#行的行首
vim +/pattern 文件 :打開文件后,直接讓光標處于第一個pattern匹配到的行的行首。
vim + 文件 :直接將光標定位到行尾第一個字符
模式轉換:
編輯模式:默認模式
編輯模式–>輸入模式
i :在光標所在處輸入
I : 在光標所在行首輸入
a : 在光標所在處后方輸入
A :在光標所在行末尾輸入
o :光標所在處下方打開一個新行
O :光標所在處上方打開一個新行
輸入模式–>編輯模式
按ESC鍵
編輯模式–>末行模式
輸入:
末行模式–>編輯模式
按2次ESC鍵
關閉文件
在編輯模式下輸入: ZZ 表示保存并退出:
:q 退出
:q! 強制退出,不保存此前的編輯操作
:wq 保存并退出
:x 保存并退出
:w /位置/文件名 將文件保存在某位置,并命名
光標跳轉:
字符間跳轉
h 光標向左跳轉一個字符
l 光標向右跳轉一個字符
j 光標向下跳轉1行
k 光標向上跳轉1行
#h 光標向前跳#個字符
#l 光標向后跳#個字符
#j 光標向下跳#個行
#k 光標向上跳#個行
單詞間跳轉
w : 下一單詞的詞首
b:當前或前一個單詞的詞首
e:當前或后一個單詞的詞尾
#w 向后跳#個單詞,詞首
#b 向前跳#個單詞,詞首
#e 向后跳#個單詞,次尾
行首跳轉
^ : 跳轉至行首的第一個非空白字符
0 :跳轉至行首,絕對第1一個字符位置
$ :跳轉至行尾
行間跳轉
G 跳到行尾,第一個字符
#G 跳轉到#數行首 1G 跳轉到文件第一個行第一個字符
句間跳轉
) 跳轉至下一句
( 跳轉至上一句
段間跳轉
} 跳轉至下一段
{ 跳轉至上一段
翻屏操作
ctrl + f 向文件尾部翻一屏
ctrl +b 向文件首部翻一屏
ctrl +d 向文件尾部翻半屏
ctrl +u 向文件首部翻半屏
回車鍵 向文件尾部翻一行
vim編輯命令
字符編輯
x 刪除光標所在處字符
#x 刪除光標所在處起始后#個字符
xp 將光標所在位置處字符前后互換
替換命令replace
r 字符(任何字符) :替換光標所在處的字符
刪除命令
d 刪除命令,可結合光標跳轉字符,實現范圍刪除
d$ 刪除光標所在處至行尾的內容
d^ 刪除光標所在處至行首的內容
#dw 向后刪除#個單詞,詞首
#db 向前刪除#個單詞,詞首
#de 向后刪除#個單詞,次尾
dd 刪除光標所在行 刪除一次后,向繼續刪下面內容,可以用.號繼續刪
#dd 刪除光標所處的行起始的共n行 刪除內容保存在緩沖區,可以粘貼
:1,10 d 加回車鍵 刪除1,10行
粘貼命令
p :緩沖區的內容如果為整行,則粘貼在當前光標所在行的下方,否則,粘貼至當前光標所在處后方:
P 大 :緩沖區的內容如果為整行,則粘貼在當前光標所在行的上方,否則,粘貼至當前光標所在處前方
復制命令yank
y: 復制,工作行為相似于d命令
y$ 復制光標至行尾內容
y^ 復制光標至行首內容
y0 復制光標至行首內容
ye
yw
yb
yy 復制以整行
#yy 復制#號行 ,內容在緩存區,可以通過p進行粘貼
改變命令(change c)
編輯模式—>輸入模式,實現刪除操作
c$ 刪除光標至行尾
c^ 刪除光標至行首
c0 刪除光標至行首
cb 刪除光標后一個單詞,并開啟詞首插入模式
cw 刪除光標前一個單詞,并開啟詞首插入模式
ce 刪除光標后一個單詞,并開啟詞尾插入模式
#command
cc 刪除光標行,并開啟行首插入模式
可視化模式:
v 按字符選定
V 按行選定
結合編輯命令:d,c,y
撤銷操作 undo
u 撤銷此前操作
#u 撤銷#次操作
撤銷此前的撤銷
ctrl r 重復執行前一個編輯操作
vim自帶的練習教程:
[root@localhost testdir]# vimtutor
vim末行模式:內鍵的命令行接口
vim末行模式:
內鍵的命令接口:
(1)地址定界
startpost,endpost 起始位置,末尾位置
. 表示當前行
m: 特定的第m行
$ : 最后一行 .,$-1 從當前行到倒數第二行
% 全文
m,n 指定m-n行
m,+n 起始行m處,在加n行,右側為相對左側行號的偏移量:
例如:3,7 :從3第三行處開始數7行,也就是3-8行
/pattern/ 從光標所在處起始向維基尾部第一模式所匹配到的行
/first/,$ d 從光標所在處起始向維基尾部第一模式所匹配到的行
/pattern1/,/pattern2/ 從光標所在處起始,第一次由pat1匹配到的行開始,至第一次由pat2匹配到的行結束間的行
可以編輯命令一同使用,實現編輯操作
d
y
c
w /path/to/somewhere :將范圍內的文本保存至指定位置。
#r /path/to/somewhere 將指定的文件中的文本讀取并插入至指定位置
查找:
/pattern 從當前光標所在處向文件尾部查找能被匹配到的所有字符
?pattern 從光標所在處向文件首部查找能夠被當前模式匹配到的所有字符串
n :下一個,與命令方向相同
N : 上一個,與命令方向相反
(3)查找并替換
s:末行模式命令:
s/要查找的內容/替換為的內容/修飾符
要查找的內容:可以使用正則表達式
替換為的內容:不能使用正則表達式,但是可以引用:\1
如果'要查找的內容",部分在模式中使用分組符號,在‘替換為的內容’中使用后向引用
直接引用查找匹配到的文本
修飾符:
I:忽略大小寫 1,40 s/this/THIS/Ig
g:全局替換,意味著一行中如果匹配到多次,則都替換:
\ :轉義字符
將文件中/cgroup/systemd/替換成/etc/sysconfig/
%s/\/cgroup\/systemd/\/etc\/sysconig/g
可將分隔符替換成其他非常用字符
s@@@ %s@\<t\([[:alpha:]]\+\)\>@T\1@g 將文本中所有t開頭的詞,全部替換為T開頭的詞
s### %s#\<t[[:alpha:]]\+\>#&er#g 將文本中所有t開頭的詞,詞后都加上er,重點:&替換單詞
練習:
1.復制/etc/grb2.cg文件至/tmp目錄中,用查找替換命令刪除/tmp/grub1.cfg文件中以空白字符開頭的行的行首空白字符
%s@^[[:space:]]\+@@ 答案不符合:
2.復制/etc/rc.d/init.d/functions文件至/tmp目錄中,用查找替換命令為/tmp/functions文件的每個以空白字符
開頭的行首加上#號
%s@^$@# 或者 %s/^$/# %s@^[[:space:]]\+@#
3.為/tmp/grub2.cfg文件的前三行加#號
1,3 s/^/#
4.將/etc/yumrepos.d/CentOs-Base.repo文件中所有的enabled=0替換為enabled=1
% s/enabled=0/enabled=1/g
vim的多文件模式:
vim file1 file2 file3
:next 進行至下一個文件
:prev 上一個文件
:first 切換至第一個
:last 切換至最后一個文件
并且可以跨文件復制
退出所有文件:wq保存所有文件,并退出
退出單個文件用q
多窗口: vim
-o:水平分割窗口
-O : 垂直分割窗口
ctrl+w 后,用上下做右,回落至hjkl鍵可以進行,窗口切換
ctrl +w +s,可對文件進行水平二次分割
ctrl +w +v,可對文件進行垂直二次分割
q鍵退出一個窗口
qall退出所有
wqall保存,并退出所有文件
注意單個文件也可以分割為多個窗口進行查看
定制vim的工作特性
永遠有效:
全局:/etc/vimrc
用戶個人:~/.vimrc 不一定存在,需要用戶自己創建
個人vimrc設置:
vim .vimrc , 在.vimrc里寫入set nu,即完成設置行號設置。
1.行號
顯示行號:set number ,簡寫為set nu
不顯示行號:set nonumber,簡寫文 set nonu
注意:在末行模式設置只對當前有效
2.括號匹配高亮顯示
匹配 :set showmatch ,set sm 設置高亮
取消 :set noshowmatch,set nsm 取消高亮
3.自動縮進功能
set ai 設置縮進
set noai 取消設置縮進
4.搜索高亮
set hlsearch :設置高亮搜索
set nohlsearch :設置取消高亮搜索
5.語法高亮
syntax on 開啟語法
syntax off 關閉
6.忽略字符大小寫
set lc 啟用忽略
set nolc 取消大小寫
vim內容內
:help set 能查看用戶幫助
help subject :q! 退出
sed命令
sed options file
-n 不輸出模式空間的內容至終端
-e 可以指定多個命令的編輯
-r 支持使用擴展正則表達式
-i 直接編輯元文件 ,有危險可以用 -i.bak(sed -i.bak "/^#//" /etc/fstab )命令先保存一份文件在編輯。
地址定界:
(1)空地址:不給地址,對全文進行處理
(2)單地址:
#:指定第#行
/pattern/:被沒收所匹配到的每一行
(3)地址范圍:
m,n : m行至n行
m,m+5 :m行至m+5行
m,/part1/ :從m行到模式匹配到的第一行
/part1/,/part2/ 重模式匹配到的第一行至模式匹配到的第二行
(4)步進:
1~2:基數行
2~2:偶數行
sed選項
-d :刪除模式空間中的內容 : sed "/^$/d" /etc/fstab
-p :打印匹配到的行 sed "3p" /etc/fstab
-a \文本:在匹配行后下一行,追加文本,支持使用\n實現多行追加 "3a \xiong\nxiong\n" fstab
-i \文本:在匹配的前一行,行首追加文本,支持使用\n實現多行追加.
-c \文本: 將匹配的行替換成其他信息。sed "2c \xiong" fstab拍
-w 位置+文件 :將匹配的內容保存至某個文本: sed "/^U/w /root/sedResult" fstab
-r 文件 : 將文本內容讀入匹配行后 sed '3r /etc/issue' fstab
=:匹配的行前加行號: sed "/^UUID/=" /etc/fstab
! :匹配的到模式取反,放在命令之前 sed '/^#/!d' fstab
rev命令 將內容反向顯示 echo "/etc/rc.d/init.d/functions" | rev
s///查找替換,其分隔符可以咨詢指定,常用的有s@@@,s###等 ,一定要寫全///這個符號
替換標記:
g:全局替換
w /path/to/somefile:將替換成功的結果保存至指定文件中
p:顯示替換成功的行
& :代表替換原文內容 sed -i “s/root/&man/g” /etc/passwd
高級編輯命令:
h:將模式空間中內容覆蓋至保存空間中內容
H:將模式空間中的內容追加至保存空間內容
g:將保存空間中內容覆蓋至模式空間中內容
G:將保存中間中內容追加至模式空間中內容
x:將模式空間中內容與保存空間中內容互換
n:讀取匹配的下一行覆蓋至模式空間中
N:讀取匹配的下一行追加至模式空間中
d:刪除模式空間中的行
D:刪除多行模式空間的所有行
; 命令行間用;隔開
原創文章,作者:maoxiong,如若轉載,請注明出處:http://www.www58058.com/32340
文章都是一些理論的東西建議加上自己的實際操作,理論加上實踐,讓自己的文章更加豐滿起來哦。