vim淺談

        在Linux的世界里,絕大部分的配置文件都是以ASCII的純文本形式存在的,所以作為一名優秀的Geek,熟練掌握一種文本編輯輯器是非常重要的。

        Linux世界中的文本編輯器有很多,比如:Emacs,pico,nano,vim等。

        但是vi是所以類Unix系統都會內置的文本編輯器,功能強大,且具備一定的程序編寫能力,(其他文本編輯器則不一定存在哦?。┧韵旅嫖覀冎攸c介紹vim。

        我們可以把vim視為高版本的vi。

        好了,下面我們說下vim的具體用法吧!

    vim打開一個文件非常簡單:

            #vim [option]… [FILE]     例如: #vim /etc/hosts    

QQ截圖20150422134441.png

      

QQ截圖20150422134349.png

    這樣就可以打開文本文件了。

    vim也可以什么都不跟,直接就敲vim,可以查看版本等信息。  

QQ截圖20150422134651.png

   

}OM0[YCPITT)YU{T0KST7@P.png

    vim有三種工作模式,分別是:編輯模式(也叫命令模式)、輸入模式、末行模式。下面我們分別介紹下! 

        編輯模式:我們先拷貝/etc/rc.d/init.d/functions到/tmp/下,然后在用vim打開function文件。

    

QQ截圖20150422135745.png

    

QQ截圖20150422135900.png

 QQ截圖20150423163425.png

QQ截圖20150424143704.png

        這樣我們就用vim打開一個文本文件了!當然打開文件不是目的,目的是對文件進行修改配置。

        下面我們就細述下vim。

        

        vim有三種工作模式:編輯模式(也叫命令模式),輸入模式,末行模式。我們先談下三種模式的作用與轉換關系。

            編輯模式:用vim打開文件時默認的模式,在這種模式下,鍵盤的操作常被理解為編輯命令,我們可以移動光標和做刪除復制的操作。

            輸入模式:可以對文件進行修改和編寫,如果想退回編輯模式就要按下【Esc】鍵了。

            末行模式:vim內置的命令接口,執行vim的內置命令。

        下面用張圖展示個人理解三者之間的轉換關系:

    

     QQ截圖20150424231527.png

                                            男                                     媒人                                女

            如圖所示,我們可以把這種相親,男放有問題需要找媒人溝通,而不能直接找女方,女方同理,編輯模式即起到紐帶的作用。

            下面我們介紹下編輯模式下我們可以用到的命令:

                    i:在光標所在處的前方轉換為輸入模式

                    a:在光標所在處的后方轉換為輸入模式

                    o:在光標所在處的下方新建一個空白行并轉換為輸入模式

                    R:轉換為輸入模式并一直替換光標所在處的字符

                    I:在光標所在行的行首轉換為輸入模式

                    A:在光標所在行的行尾轉換為輸入模式

                    O:在光標所在行的上方新建一個空白行并轉換為輸入模式

         那么當我們編輯完怎樣退出呢?

            退出文件:

                    在末行模式下

                    :q!不保存退出

                    :wq 保存退出       

                    :x 保存退出

                    :wq!強制保存并退出

                    :w!若文件屬性為“只讀”,強制寫入。

                    

            光標的移動:

                    h:光標向左移動一個字符

                    j:光標向下移動一行

                    k:光標向上移動一行

                    l:光標向右移動一個字節

                個人習慣了用上下左右鍵,但是這些鍵還是有必要知道的。

            單詞間的移動:

                    w:下一個單詞詞首

                    e:當前單詞或下一個單詞詞尾

                    b:當前單詞或下一個單詞詞首

                這里支持#w,#e,#b的是用,#代表數字,比如:3w:后面的第三個單詞的詞首。

            行內移動:

                    ^:移動到行首(這里指的行內第一個非空白字符)

                    0:絕對行首

                    $:絕對行尾

            

            編輯命令:

                x:刪除光標所在處的字符

                #x:刪除從光標所在處向右的#個字符

            刪除命令d:

                    可以結合w,b,e,$,0,^一起使用

                        例如:

                          dw:刪除一個單詞

                          dd:刪除光標所在行

                          #dd:刪除光標所在行及下面的#-1行

                          D:=d$刪除光標所在處到行尾

            復制命令:

                y:yank,復制

                同理也可以結合w,b,e,$,0,^來使用

                #yy:復制#行,包括光標所在的行

                Y:=yy

            粘貼命令:

                p:past,粘貼

                    行級別:

                        p:粘貼于當前行下方

                        P:粘貼于當前行上方

                    小于行級別:

                        比如:3yw

                        p:粘貼于當前光標所在處的后方

                        P:粘貼于當前光標所在處的前方

                    修改命令:

                        c:change

                            先刪除,再轉換為輸入模式

                                同理也可以結合光標跳轉字符使用w,e,b,$,0,^,修改跳轉范圍內的字符 2cw

            在我們編輯過程中難免會有操作失誤的時候,這里vim同樣提供給我們撤銷命令。

                    撤銷命令:

                        u:在編輯模式下按u鍵即可,就好比我們在windows下習慣用的Ctrl+z

                        #u:撤銷最近的#次操作

                    如果我們不想啟用剛剛的撤銷操作呢,想返回撤銷之前的樣子呢?

                        按下Ctrl+r即可

            末行模式:

                在末行模式下也可以鎖定行

                    :# 敲回車后直接跳轉到第#行

                    

                    :$ 跳轉到最后一行

                內容鎖定:

                       格式:starpos,endpos

                        #:第#行

                        .:當前行

                        $:最后一行

                        %:全文,相當于1,$

                        例:10,$-1:第十行到倒數第二行

                        c,

d,y等命令可以直接附加在地址范圍后使用

                上圖說明:

QQ截圖20150425093326.png

QQ截圖20150425093502.png

QQ截圖20150425093546.png

QQ截圖20150425093629.png

                內容鎖定還支持將選定范圍內的內容保存到另一個文件中和將指定文件中的內容讀取到指定位置

                   w /path/to/somefile:將選定范圍內的內容保存至某文件中 (.,$w /tmp/text.txt)

QQ截圖20150425093326.png

QQ截圖20150425094925.png

QQ截圖20150425095122.png

            將/etc/issue中的內容保存在function中

                

QQ截圖20150425095621.png

QQ截圖20150425095808.png

QQ截圖20150425095846.png

            vim還支持搜索替換

                格式為:s/查找模式/要替換成的內容/gi

                    查找模式:可以使用正則表達式

                    要替換成的內容:不能使用正則表達式,僅能使用引用

                        %s/file/FILE

                        g:global,全局替換

                        i:模式匹配不區分字符大小寫

                例如:替換/tmp/functions文件中的/etc/sysconfig/init為/var/log

                    

QQ截圖20150425101150.png

QQ截圖20150425101215.png

                文本查找:

                    /PATTERN

                    ?PATTERN

        

QQ截圖20150425102332.png

                n:搜索文本中的下一個etc單詞

                N:搜索上一個

                用?ect大小寫n的作用相反

            多文本模式:

                :next 下一個

                :previous 上一個

                :last 最后一個

                :first 第一個

        上圖說明:

QQ截圖20150425102953.png

QQ截圖20150425103131.png

QQ截圖20150425103150.png

QQ截圖20150425103213.png

QQ截圖20150425103228.png

                多文本編輯完后可以按wqall保存并退出。

                

                翻屏操作:

                    Ctrl+f:向文件尾部翻一屏

                    Ctrl+b:向文件首部翻一屏

                    Ctrl+d:向文件尾部翻半屏

                    Ctrl+u:向文件首部翻半屏

                    j:向文件尾部翻一行

                    k:向文件首部翻一行

                多窗口模式:

                    vim

                        -o:水平分割

                        -O:垂直分割

                        Ctrl+w:切換窗口

                        Ctrl+w后按s:水平分割

                        Ctrl+w后按v:垂直分割

                如圖:

QQ截圖20150425104205.png

QQ截圖20150425104337.png

QQ截圖20150425104452.png

QQ截圖20150425104701.png

             窗口屬性定義:

                :set nu 顯示行號

                :set nonu 取消行號

                :set ai 自動縮進(提示:同志們寫腳本/代碼時特別有用哦?。?/p>

                :set noai

                :set ic 忽略字符大小寫

                :set noic

QQ截圖20150425105323.png

                    其他定義還請同志們自行實驗。

                語法高亮:

                    :syntax on | off

QQ截圖20150425105553.png

QQ截圖20150425105621.png

                    搜索高亮:

                        :set hlsearch

                        :set nohlsearch

QQ截圖20150425105925.png

QQ截圖20150425110001.png

            這些定義的屬性都可在配置文件中設置

                全局:/etc/vimrc

                用戶:~/.vimrc

            好了vim的常用命令就講到這里了,有更豐富的用法和講述不正確的地方還請同志們指正出來!

            謝謝大家!

            

原創文章,作者:水蒸氣,如若轉載,請注明出處:http://www.www58058.com/3491

(0)
水蒸氣水蒸氣
上一篇 2015-04-27
下一篇 2015-04-27

相關推薦

  • mysql or條件可以使用索引而避免全表

    在某些情況下,or條件可以避免全表掃描的。 1 .where 語句里面如果帶有or條件, myisam表能用到索引, innodb不行。 1)myisam表:  CREATE TABLE IF NOT EXISTS `a` (   `id` int(1)&nb…

    Linux干貨 2015-04-13
  • 單網卡多IP,雙網卡實現負載

        有些時候會我們一個IP不夠用,但是又不想加網卡,可以試試一個網卡實現多個IP,下面我們來操作一下。 生成新增IP配置文件信息;  [root@localhost network-scripts]# cat ifcfg-eth0      DE…

    Linux干貨 2016-09-06
  • 網絡N23期第四周grep

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@localhost ~]# cp -R /etc/skel /home/tuser1 && chmod g-r,o-r /home/tuser1 [root@localhost ~]# ls -l…

    系統運維 2016-12-05
  • 配置使用基于mysql存儲rsyslog日志信息

    配置使用基于mysql存儲rsyslog日志信息   日志對于我們來說,肯定不會陌生。每個系統應用,只要有人訪問,每時每刻都會產生大量的日志,用來記錄服務器應用的運行信息。以便于我們在服務有異常時進行查看,或是從日志記錄中提取出應用系統的運行信息。某些電商Web網站甚至會利用日志記錄去對用戶的購買行為作分析,以便更好的服務于客戶。 &nb…

    Linux干貨 2016-09-05
  • 文件處理工具系列(二):行編輯器sed

    1、sed介紹     sed(Stream EDitor),是一種行編輯工具,它一次處理一行內容。處理時,把當前匹配到的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令對這些數據做出相應的增刪改查操作,處理完成后,默認輸出至屏幕,而未被匹配到的行也將默認輸出至屏幕。而原來的文件內容并沒有發生改變,除…

    Linux干貨 2016-08-11
  • 第三周n28

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 who | cut -d ” ” -f 1 | sort -u 2、取出最后登錄到當前系統的用戶的相關信息。 who | tail -1 3、取出當前系統上被用戶當作其默認shell的最多的那個shell。 cat /etc/passwd | …

    Linux干貨 2017-12-17

評論列表(2條)

  • stanley
    stanley 2015-04-27 21:41

    內容豐滿,少了些層次

    • 水蒸氣
      水蒸氣 2015-04-27 21:45

      @stanley謝謝老師指點!下次改進!

欧美性久久久久