vim編輯器

導讀:

     本章將主要介紹Linux中的一種常用文本編輯器vim,具體內容如下:

      □使用vi和vim的三種主要模式

      ?移動光標,進入插入模式

      ?改變、刪除、復制文本

      ?撤銷改變

      ?搜索文檔

      ?vim寄存器

      ?可視化和多窗口

      ?vim幫助


一、簡介

     vi:Visual Interface,是一種文本編輯器,所謂的文本數據是基于字符編碼的文件,常見的編碼有ASCII編碼,UNICODE編碼等等。

     文本編輯器的種類:

           行編輯器:行編輯器是指一行一行的來編輯處理的工具,如 sed

           全屏編輯器:即編輯空間占據整個屏幕,如:nano ,vi

           其他編輯器: gedit 一個簡單的圖形編輯器

                           gvim  一個Vim編輯器的圖形版本

           vim編輯器:即Vi IMproved 是vi的增強版,vim是模式化的編輯。vi對比vim如下圖:

vim.png

二、vim的使用

     1.語法:# vim [OPTION]… FILE…(可以同時打開多個文件)


             +#: 打開文件后,直接讓光標處于第#行的行首。 如:vim +10 f1

             +/PATTERN:打開文件后,直接讓光標處于第一個被PATTERN匹配到的行的行首

            vim + file 直接打開file,光標在最后一行

            vim –b file 二進制方式打開文件(只有在編輯二進制的時候才用到,對于文件來說沒效果)

            vim –d file1 file2… 比較多個文件(如果有不同的話會做出標注)

            vim -m file 只讀打開文件 (只能查案看文件,不能修改)

            ex file vim –e 直接進入ex模式

       如果該文件存在,文件被打開并顯示內容

       如果該文件不存在,當編輯后第一次存盤時創建它。(注意,打開的是一個文件,而不是目錄,目錄已經存在,是不允許修改存盤的。)

   2.vim在工作過程中有三種模式:

             命令模式(默認):移動光標,剪切/粘貼文本;

             插入(編輯)模式:修改文本,在文本文件當中進行輸入內容;

             擴展命令模式(末行模式):保存,退出等,執行vim的內置命令。

     3.模式轉換

        □命令模式–> 插入模式

             i: insert, 在光標所在處輸入

             I:在當前光標所在行的行首輸入

             a: append, 在光標所在處后面輸入

             A:在當前光標所在行的行尾輸入

             o: 在當前光標所在行的下方打開一個新行

             O:在當前光標所在行的上方打開一個新行

       □插入模式—-> 命令模式

                   ESC

       □命令模式—-> 擴展模式

                    :

       □擴展模式—-> 命令模式   插入模式不能直接切換至末行模式

                   ESC

?   □鎖定屏幕和解鎖屏幕:CTRL+s,Ctrl+q

   4.關閉退出文件

       ?擴展模式下:

             :q 退出

             :q! 強制退出,丟棄做出的修改

             :wq保存退出

             :x 保存退出

        其他命令:

             按“:”進入Ex模式

             w:臨時存盤,相當于保存,防止意外掉電等

             r /filename: 讀文件內容到當前文件中

             w /filename:將當前文件內容寫入另一個文件

             !command :不用退出vim,就可以執行命令

            r!command :讀當前命令的標準輸出到文件當中

        ?命令模式下:不建議使用

             ZZ: 保存退出  

             ZQ:不保存退出

   5.命令模式下光標的跳轉:

        □字符間跳轉:

              h: 左l: 右j: 下k: 上  方向鍵也可以

              #COMMAND:跳轉由#指定的個數的字符; 如 10 +h(按下數字再按方向)

               擴展: 平時敲命令時要修改命令的快捷鍵

                    ESC +b 向左跳一個單詞   Ctrl +a;home : 跳到行首 

                    ESC +f 向右跳一個單詞   Ctrl +e;end : 跳到行尾

       ?單詞間跳轉:

              w:下一個單詞的詞首

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

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

              #COMMAND:由#指定一次跳轉的單詞數    如:5 +w (調到第五個單詞的詞首)

       ?當前頁跳轉:

              H:(head)跳轉至當前頁的頁首   

              M:(middle)跳轉至當前頁的中間行 

              L:(low)跳轉至當前頁的頁底

    □行首行尾跳轉:

              ^: 跳轉至行首的第一個非空白字符;

              0: 跳轉至行首

              $: 跳轉至行尾

      ?行間移動:

              擴展模式下 :# 跳轉至由#指定行    如 :100 (跳到100行)

              G:直接跳轉至文章的最后一行   

              #G:直接跳轉至是定的#行   如:1000 G (直接跳到1000行)

              1G, gg: 直接跳至全文的第一行

      ?句間移動:以點(.)算一句

              ):下一句 

              (:上一句  以點(.)為一句

      ?段落間移動:

             }:下一段

             {:上一段

    □翻屏操作:

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

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

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

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

    6.命令模式下的操作:

      □字符編輯:

             x: 刪除(實則為剪切)光標處的字符;

             #x: 刪除光標處起始的#個字符

             xp: 交換光標所在處的字符及其后面字符的位置

              ~:轉換大小寫

     ?替換命令(r, replace)

             r: 替換光標所在處的字符

             R:切換成REPLACE模式(輸入什么就會替換掉原來的字符顯示輸入的字符。退出按Esc)

     □刪除命令:

       d: 刪除命令,可結合光標跳轉字符,實現范圍刪除;

            d$:刪除到行尾

            d^:刪除到非空行首

            d0:刪除到行首

            dw:刪除光標之后的一個單詞

            de:刪除到單詞的尾部

            db:刪除前一個單詞

            dG:從當前光標刪到文章的尾部

            dgg:從當前光標刪除到文章的首部

            #COMMAND    如:10 dw  刪10個單詞

    ?dd: 刪除光標所在的行

            #dd:多行刪除

    ?D:從當前光標位置一直刪除到行尾,留空行,等同于d$

    □復制命令(y, yank):

            y: 復制,行為相似于d命令

            y$

            y0

            y^

            ye

            yw

            yb

            #COMMAND

    ?yy:復制行

           #yy: 復制多行

    ?Y: 復制整行

    □粘貼命令(p, paste):

            p:緩沖區存的如果為整行,則粘貼當前光標所在行的下方;否則,則粘貼至當前光標所在處的后面

            P:緩沖區存的如果為整行,則粘貼當前光標所在行的上方;否則,則粘貼至當前光標所在處的前面

    □改變命令(c, change)

            c: 修改后切換成插入模式

     ?命令模式–> 插入模式

            c$

            c^

            c0

            cb

            ce

            cw

            #COMMAND

    ?cc:刪除當前行并輸入新內容

            #cc:

    ?C:刪除當前光標到行尾,并切換成插入模式,同c$用法

    □100iwang [ESC] 粘貼“wang”100次

    ?<start position><command><end position>

    ?Command:

           y 復制、d 刪除、gU變大寫、gu變小寫

                 例如0y$ 命令意味著:

                       0 →先到行頭

                       y →從這里開始拷貝

                       $ →拷貝到本行最后一個字符

               從當前位置拷貝到本單詞的最后一個字符

   7.擴展模式:

     □地址定界

     :start_pos,end_pos

            #: 具體第#行,例如2表示第2行;

            #,#: 從左側#表示行起始,到右側#表示行結尾

            #,+#: 從左側#表示的行起始,加上右側#表示的行數    如:2,+3 表示2到5行

            .: 當前行

            $: 最后一行

            .,$-1 當前行到倒數第二行

            %:全文, 相當于1,$

     □/pat1/,/pat2/

     從第一次被pat1模式匹配到的行開始,一直到第一次被pat2匹配到的行結束

             #,/pat/

             /pat/,$

     ?使用方式:后跟一個編輯命令

             d:刪除

             y:復制   如:3,/^U/y 表示從第三行開始一直到一以U大頭的行中間的內容復制

             w file: 將范圍內的行另存至指定文件中

             r file:在指定位置插入指定文件中的所有內容

    □查找

             /PATTERN:從當前光標所在處向文件尾部查找

            ?PATTERN:從當前光標所在處向文件首部查找

            n:與命令同方向

            N:與命令反方向

     □查找并替換

           s: 在擴展模式下完成查找替換操作

           格式:s/要查找的內容/替換為的內容/修飾符

           要查找的內容:可使用模式

           替換為的內容:不能使用模式,但可以使用\1, \2, …等后向引用符號;還可以使用“&”引用前面查找時查找到的整個內容

      修飾符:

           i: 忽略大小寫

           g: 全局替換;默認情況下,每一行只替換第一次出現

           gc:全局替換,每次替換前詢問

    ?查找替換中的分隔符/可替換為其它字符,例如@#$

           s@/etc@/var@g

           s#/boot#/#

  8.命令模式下撤銷更改

      u:撤銷最近的更改

           #u:撤銷之前多次更改

            U:撤消光標落在這行后所有此行的更改

           按Ctrl-r:重做最后的“撤消”更改

           . :重復前一個操作

           n.:重復前一個操作n次

   9.vim的寄存器

         □由26個命名寄存器和1個無命名寄存器,常存放不同的剪貼版內容,可以不同會話間共享。

         ?用a,b,…,z表示,用 "寄存器 表示,放在數字和命令之間

              如:3"tyy 表示復制3行到t寄存器中

              "tp 表示將t寄存器內容粘貼

         ?未指定,將使用無命名寄存器

         ?有10個數字寄存器,用0,1,…,9表示,0存放最近復制內容,1存放最近刪除內容。當新的文本變更和刪除時,1轉存到2,2轉存到3,以此類推。數字寄存器不能在不同會話間共享。

  10.編輯二進制文件

         □以二進制方式打開文件

              vim –b binaryfile

         ?擴展命令模式下,利用xxd命令轉換為可讀的十六進制

               :%!xxd

         ?編輯二進制文件

         ?擴展命令模式下,利用xxd命令轉換回二進制

               :%!xxd –r

         ?保存退出

     11.可視化模式:

            允許選擇的文本塊

            v面向字符

            V面向行

            ctrl-v 面向塊

         ?可視化鍵可用于與移動鍵結合使用:

              w,),},箭頭等

         ?突出顯示的文字可以被刪除,復制,變更,過濾,搜索/替換等

   12.多文件模式

             vim FILE1 FILE2 FILE3 …

             :next 下一個

             :prev前一個

             :first 第一個

             :last 最后一個

             :wall 保存所有

             :qall退出所有

             :wqall 保存所有退出

   13.使用多個窗口:

      □多文件分割

              vim -o|-O FILE1 FILE2 …

              -o: 水平分割

              -O: 垂直分割

             在窗口間切換:Ctrl+w, Arrow

         ?單文件窗口分割:

              Ctrl+w,s: split, 水平分割

              Ctrl+w,v: vertical, 垂直分割

              ctrl+w,q:取消相鄰窗口

              ctrl+w,o:取消全部窗口

              :wqall退出

     14.定制vim工作特性:

          □配置文件:永久有效

              全局:/etc/vimrc

              個人:~/.vimrc

          ?擴展模式:當前vim進程有效

          (1) 行號

              顯示:set number, 簡寫為set nu

              取消顯示:set nonumber, 簡寫為set nonu

          (2) 括號成對匹配

               匹配:set showmatch, 簡寫為set sm

               取消:set nosm

          (3) 自動縮進

                啟用:set ai

                禁用:set noai

          (4) 高亮搜索

                啟用:set hlsearch

                禁用:set nohlsearch

          (5) 語法高亮

                啟用:syntax on

                禁用:syntax off

          (6) 忽略字符的大小寫

                啟用:set ic

                不忽略:set noic

          (7) 文件格式

                啟用:fileformat=unix

                不忽略:fileformat=dos

          (8) 設置文本寬度

                :set textwidth=65 (vimonly)

                :set wrapmargin=15

          ?:help option-list

          ?:setor:set all

     15.了解更多:

      □ vi/vim內置幫助

           :help

           :helptopic

          Use:qto exit help

      ?Vimtutor

  總結:

    vim編輯器的功能跟強大,內容也非常多,在今后的學習工作中需要我們不斷的去多加練習,才能熟練掌握這些命令的使用。








     

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

(0)
zhumengxiaotaozhumengxiaotao
上一篇 2016-08-15 12:07
下一篇 2016-08-15 12:10

相關推薦

  • Linux文件管理命令

    2018-03-11

    2018-03-11
  • Linux啟動之GRUB詳解

    GRUB 在BIOS讀取先關信息之后,接下來就是去第一個可以啟動的設備當中的MBR中讀取Boot loader信息,bootloader具有菜單功能、直接加載內核信息,以及相關控制權限轉交功能。所以說系統的啟動必須有bootloader,然后才能去加載內核 grub:GRand Unified Bootloader  …

    Linux干貨 2016-09-15
  • mysql主從復制

    MySQL主從復制        主從復制原理: mysql主從同步其實是一個異步復制的過程,要實現復制首先在master上開啟bin-log日志功能。整個過程需要開啟3個線程, 分別是master開啟IO線程,slave開啟IO線程和SQL線程. (1) 在slave服務器執行start…

    Linux干貨 2016-06-26
  • sed命令解析

    處理文件的工具sed Stream EDitor, 行編輯器 一次只讀一行,只處理一行,不對源文件做處理,至輸出到屏幕上模式空間 sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space), 接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往…

    Linux干貨 2016-08-11
  • 基本網絡設置

    我們在上網的時候會遇到各種各樣的問題,比如有時候網絡不通,沒有ip地址,或者ip地址有沖突等等,這就需要我們懂得一些網絡的配置,方便以后使用?;揪W絡配置:主機名,ip地址,網關,DNS服務器。1、 主機名的配置第一種方法:在配置文件修改Centos7版本:vim /etc/hostname 改過配置文件后需要使其生效,命令為hostname centos7…

    2017-09-09
欧美性久久久久