強大的文本處理工具:vim編輯器

一:引言

系統管理員的重要工作就是修改與設置某些軟件的重要配置文件,而vim作為vi編輯器的升級版本,不僅能夠以不同顏色來顯示文字內容,還能夠進行諸如shell腳本、C等程序的編寫,所以,它還是一個程序編輯器,接下來,就讓我們一起來看看vim的有哪些好玩的用法和特征。

二:vim三種模式及其常見用法

強大的文本處理工具:vim編輯器

雖然vim有非常龐大甚至說它復雜也不為過的功能體系,但用結構圖的方式把它表現出來,就一目了然了,那么接下來就讓我們庖丁解牛,來更加詳細的了解vim命令的基本用法及其vim三種模式都有哪些重要功能。

                                                  ※vim

options:

   -m filename   只讀打開文件(注意:當以只讀方式打開文件時,只有root與文件所屬者能夠強制修改保存并退出)

   -b filename    打開二進制文件

   -o file1 file2    同時打開多個文件

   -d  file1 file2   比較多個文件,結果會高亮顯示出不同內容所在的行及字符,效果如下:

    強大的文本處理工具:vim編輯器

                                     命令模式(默認模式)下的常見用法

  當處于命令模式下時,常見的用法大致有以下幾種:

  •   文本編輯(刪除d、復制y、粘貼p、修改c、撤銷與反撤銷)
  •   切換至visual模式,進行批量操作
  •   翻屏和行間跳轉

用法一:文本編輯:

 1.刪除(d):

   ①刪除字符
   x  刪除光標處字符
   #x 刪除以光標起始的#個字符
   ②刪除行
   d  刪除命令(常與w,e,b,^,0,$ 一起使用)   
   dd 刪除光標所在行
        #dd  多行刪除   
2.復制(y):
   y  復制命令(常與w,e,b,^,0,$ 一起使用)
  #y   多行復制
   yy 復制當前行
3.粘貼(p):
  p   若復制的為整行,則粘貼到下邊一行。否則,粘貼到當前光標后面
  P   若復制的為整行,則粘貼到上邊一行。否則,粘貼到當前光標前面
4.修改(c)
  含義:先刪除,后插入
  cc/C:刪除光標所在行后進入插入模式(=‘dd+i’)
          #cc 修改多行
5.撤銷:
  u 撤銷最近的更改
  ctrl+r  反撤銷
  #u撤銷之前多次更改
  . 重復前一個操作
 n.重復前一個操作n次
6.替換模式(R):同時完成多個字符的替換

用法二:visual模式:

 v   面向字符
 V   面向行

 ctrl+v  面向塊

優點:能夠自由的選擇多個字符或行來對文本內容進行批量的復制、粘貼、刪除等操作。

用法三:翻屏和行間跳轉:

ctrl +f 向下翻一屏
ctrl +b 向上翻一屏
ctrl +d 向下翻半屏
ctrl +u 向上翻半屏
G :   尾行

gg:首行

H:跳到當前頁的首行

L: 跳到當前頁的尾行
M: 跳到當前頁的中間行

                                       ※拓展命令模式常見用法

用法一:查找和替換

 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行    

    :$  只在最后一行中查找(注意啦強大的文本處理工具:vim編輯器強大的文本處理工具:vim編輯器愛舉一反三的小伙伴,并不存在^表示在首行中查找)

④要查找的內容:支持基本的正則表達式

⑤要替換為的內容:不支持正則表達式,但支持 后向引用 與  &

   注意:&表示引用之前模式匹配的整體,并不同于后向引用。

   相關例題刪除/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:]]\+

                                      

用法二:多文件模式

vim -o file1 file2………..
 :next 切換到下一個文件
 :previous  切換到上一個文件
 :last  切換到最后一個文件
 :first  切換到第一個文件
 :wqall  保存所有文件并退出

用法三:定義窗口屬性

 設置全局窗口屬性:  /etc/vimrc
 設置用戶窗口屬性: ~/.vimrc
:set all  顯示當前文件所有set
:set nu/nonu 顯示行號
:set ai/noai 自動縮進
:set ic/noic 忽略字符大小寫

:set sm/nosm 括號匹配

:set tabstop=num   設置tab鍵為num個字符

  syntax on/off  語法高亮

:set hlsearch/nohlsearch  搜索高亮顯示(也可通過/kugkufguewgfuew搜索任意字符來取消高亮)

 相關例題在vim中設置tab縮進為4個字符

  編輯配置文件/root/etc/vimrc—->插入一行 set tabstop=4

原創文章,作者:yunyunyu,如若轉載,請注明出處:http://www.www58058.com/83767

(0)
yunyunyuyunyunyu
上一篇 2017-08-05 20:37
下一篇 2017-08-05 20:45

相關推薦

  • linux中的管道符

    管道符 less只能看文件 但是這樣做會產生一個垃圾文件ls.txt,所以下面我們就會需要用到管道符 |只將傳遞正確結果傳遞給 而使用這兩種方法可以傳遞正確和錯誤的結果[root@localhost ~]# ls /etc/passwd /cpp/passwd 2>&1|less   ,  (2>&1…

    2017-07-22
  • linux快捷鍵

    $ 用法 $變量名 表引用變量的值 $()或(單引號) 表示引用命令執行的結果 $[] 表示運算 ${變量名} 或"$變量名" 當變量名的起止不分明時,用來劃定變量名的范圍,同時引用變量。 {} 用法 {a..z} 表示引用指定范圍的字母 {1..9999} 表示引用指定范圍的數字? {1,3,5} 表示分別引用每一個字符 TAB 用法 …

    Linux干貨 2017-07-13
  • CentOS6.9系統上編譯安裝httpd.2.2.32

    本文所做的所有操作是在一部新安裝的CentOS6.9系統上。 1.環境與配置 環境說明:VMware上安裝的CentOS6.9系統,兩張系統盤做成的yum源 配置:編譯生成的所有的文件都存放在/usr/local/httpd22/這個目錄下 2.安裝GCC編譯器 [root@localhost ~]# yum grouplist | grep “Develo…

    2017-04-20
  • Linux基礎(七)-軟RAID,LVM,bash腳本之循環

    1.創建一個10G的分區,并格式為ext4的文件系統; (1)要求其block大小為2048,預留空間百分比為2,卷標為MYDATA,默認掛載屬性包含acl;(2)掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; [root@localhost ~]# fdisk /dev/sdb We…

    Linux干貨 2016-11-06
  • 2016-10-17練習題

    1 生產環境發現一臺服務器系統時間產生偏差,造成服務異常,請幫忙校正。 linux系統查看當前時間命令為date [root@Shining pirate]# date Mon Oct 17 20:50:42 CST 2016 修改系統時間選項為-s 格式為 只修改系統的日期,不修改時間 …

    Linux干貨 2016-10-17
  • Linux進程管理命令和性能監控工具的應用

    概述 監控系統的各方面的性能,保障各類服務的有序運行,是運維工作的重要組成部分,本篇就介紹了一些常用的系統監控命令和相關參數的說明 具體包含一下幾個部分 1.進程管理基礎 2.進程管理工具(ps,top,htop,kill) 3.內存監控類工具(vmstat,pmap) 4.系統監控累工具(glances,dstat)…

    Linux干貨 2016-09-26
欧美性久久久久