一:引言
系統管理員的重要工作就是修改與設置某些軟件的重要配置文件,而vim作為vi編輯器的升級版本,不僅能夠以不同顏色來顯示文字內容,還能夠進行諸如shell腳本、C等程序的編寫,所以,它還是一個程序編輯器,接下來,就讓我們一起來看看vim的有哪些好玩的用法和特征。
二:vim三種模式及其常見用法
雖然vim有非常龐大甚至說它復雜也不為過的功能體系,但用結構圖的方式把它表現出來,就一目了然了,那么接下來就讓我們庖丁解牛,來更加詳細的了解vim命令的基本用法及其vim三種模式都有哪些重要功能。
※vim
options:
-m filename 只讀打開文件(注意:當以只讀方式打開文件時,只有root與文件所屬者能夠強制修改保存并退出)
-b filename 打開二進制文件
-o file1 file2 同時打開多個文件
-d file1 file2 比較多個文件,結果會高亮顯示出不同內容所在的行及字符,效果如下:
※ 命令模式(默認模式)下的常見用法
當處于命令模式下時,常見的用法大致有以下幾種:
- 文本編輯(刪除d、復制y、粘貼p、修改c、撤銷與反撤銷)
- 切換至visual模式,進行批量操作
- 翻屏和行間跳轉
用法一:文本編輯:
1.刪除(d):
用法二:visual模式:
ctrl+v 面向塊
優點:能夠自由的選擇多個字符或行來對文本內容進行批量的復制、粘貼、刪除等操作。
用法三:翻屏和行間跳轉:
gg:首行
H:跳到當前頁的首行
※拓展命令模式常見用法
用法一:查找和替換
1.查找:
從當前光標處向尾行查找 :/要查找的內容
從當前光標處向首行查找 :?要查找的內容
2.單個字符替換:r
替換任意多個字符:R (進入替換模式)
3.查找并替換(重點)
①格式: :內容定界符s/要查找的內容/要替換為的內容/修飾符
②分隔符: 除常用的 “/” 以外,還有@與#。
相關例題:復制/etc/rc.d/init.d/functions文件至/tmp目錄,替換/tmp/functions文件中的/etc/sysconfig/init為/var/log
正解: :%s@/etc/sysconfig/init@/var/log@gi
看到這里,相比大家已經知道@與#存在的意義了吧,那就是當替換內容中含有如 / 這些特殊字符時,為了簡化操作,減少轉譯,我們常用@或#來代替/分隔符。
③內容定界符:
:% 全文查找
:m 查找m行
:m,n m-n行
:$ 只在最后一行中查找(注意啦愛舉一反三的小伙伴,并不存在^表示在首行中查找)
④要查找的內容:支持基本的正則表達式
⑤要替換為的內容:不支持正則表達式,但支持 后向引用 與 &
注意:&表示引用之前模式匹配的整體,并不同于后向引用。
相關例題:刪除/tmp/functions文件中所有以#開頭,且#后面至少有一個空白字符的行的行首的#號
正解: :%s/^#\([[:space:]]\+\)/\1/gc
錯解: :%s/^#\([[:space:]]\+\)/$/gc
錯誤原因:\1才代表\([[:space:]]\+\)這個整體,而$代表引用^#\([[:space:]]\+\)這個整體,所以此時#與其后的空格并沒有被替換
⑥修飾符:
g 全局替換(默認不加g時,只替換每行第一次出現)
i 忽略字母的大小寫
c 每次替換前詢問
查找替換相關例題:
1.復制/etc/profile至/tmp/目錄,用查找替換命令刪除/tmp/profile文件中的行首的空白字符
正解: :%s/^[[:blank:]]\+//g
2.復制/etc/rc.d/init.d/functions文件至/tmp目錄,用查找替換命令為/tmp/functions的每行開頭為空白字符的行的行首添加一個#號
正解: :%s/^[[:space:]]\+/#&/g 其中&匹配^[[:space:]]\+
用法二:多文件模式
用法三:定義窗口屬性
:set sm/nosm 括號匹配
:set tabstop=num 設置tab鍵為num個字符
:set hlsearch/nohlsearch 搜索高亮顯示(也可通過/kugkufguewgfuew搜索任意字符來取消高亮)
相關例題:在vim中設置tab縮進為4個字符
編輯配置文件/root/etc/vimrc—->插入一行 set tabstop=4
原創文章,作者:yunyunyu,如若轉載,請注明出處:http://www.www58058.com/83767