Linux基本知識之Vim編輯器

vim文本編輯器:

   vim是Linux系統上的最著名的文本/代碼編輯器,也是早年的vi編輯器的加強版,而gVim則是其windows版。它的最大特色是完全使用鍵盤命令進行編輯,脫離了鼠標操作雖然Linux基本知識之Vim編輯器使得入門變得困難,但上手之后鍵盤流的各種巧妙組合操作卻能帶來極大幅度的效率的提升。

(1)打開文件與關閉文件:

     打開文件:

          vim [options][file..]

          +#:打開文件之后,讓光標直接處于第#行的行首;

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

          +:直接打開文件之后,光標直接處在最后一行

          -b:以二進制方式打開文件

          -d file1 file2 …:比較多個文件

          -m:以只讀方式打開文件

     關閉文件:

          a.在編輯模式下面連敲兩個大寫的Z鍵即可保存并退出

          b.在末行模式下面:

              :wq  保存并退出(:w保存文件)

              :x   保存并推出(相當于:wq平時不太建議使用)

              :q   直接退出(文件沒有執行過編輯操作,只是打開查看后退出)

              :q!  不保存退出 

(2)模式轉換:默認的模式為編輯模式

     編輯模式–>輸出模式:

         i:在光標所在處輸入

         a:在光標所在處后方輸入

         o:在光標所在處下方打開一個新行

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

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

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

     輸入模式–>編輯模式:

         ESC

     編輯模式–>末行模式:

         : /  ?

     末行模式–>編輯模式:

         ESC

     鎖定和解鎖文件:

         Ctrl+s,Ctrl+q(鎖定之后文件可以編輯只是屏幕被鎖定看不到任何編輯的過程)

(3)光標跳轉:

     字符間跳轉:

        h鍵或左箭頭 :光標向左移動一個字符

        j鍵或下箭頭 :光標向下移動一個字符

        k鍵或右箭頭 :光標向右移動一個字符

        i鍵或上箭頭 :光標向上移動一個字符

            #COMMAND:根據COMMAND命令跳轉相應的#個字符

    單詞間跳轉:

        w:下一個單詞的詞首

        e:當前或后一個單詞的詞尾

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

            #COMMAND:根據COMMAND命令跳轉相應的#個單詞

    行首行尾跳轉:

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

        0:跳轉至行首(跳轉至絕對的行首,但是托字符除外)

        $:跳轉至行尾

    行間跳轉:

        #G或#gg:跳轉至由#指定的行

        1G或gg:跳轉至首行

        G:跳轉至尾行

    句間跳轉:

        ):跳轉至下一句、

        #):跳轉至下#句

        (:跳轉至上一句

        #(:跳轉至上#句

    段間跳轉:

        }:跳轉至下一句、

        #}:跳轉至下#句

        {:跳轉至上一句

        #{:跳轉至上#句

    頁間跳轉:

        H:跳轉至當前頁的頁首

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

        L:跳轉至當前頁的頁底

(4)翻屏操作:

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

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

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

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

    Enter:按行向后翻

(5)編輯命令:

    字符編輯:

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

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

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

        ~:替換字符的大小寫

    替換命令:

        r(char):替換光標所在處的字符(將字符替換成char)

        R:切換成REPLAVCE模式

        刪除命令:刪除的內容不會被清理掉,儲存在緩沖區中

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

        d$:從光標開始處刪除至最后一個字符

        D: 從當前光標位置一直刪除到行尾

        d^:從光標開始處刪除至最前一個字符

        dd:刪除光標所在的那一整行

        #dd:刪除多行

        dw:從光標所在處刪除至下一個單詞的開頭

        de:從光標所在處刪除至當前或后一個單詞的詞尾

        db:從光標所在處刪除至當前或后一個單詞的詞首

            #COMMAND:執行#次COMMAND命令

    粘貼命令:緩沖區中的命令可以粘貼多次

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

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

    復制命令:

        y:復制命令,可結合光標跳轉命令,實現范圍復制

        y$:從光標開始處復制到最后一個字符

        y^:從光標開始處復制到最前一個字符

        y0:從光標開始處復制到本行的最前一個字符

        yy:復制光標所在的那一整行

        Y:復制光標所在的整行

        yw:從光標所在處復制至下一個單詞的開頭

        ye:從光標所在處復制至當前或后一個單詞的詞尾

        yb:從光標所在處復制至當前或后一個單詞的詞首

        #yy:復制了#行

        #COMMAND:執行#次COMMAND命令

    改變命令:

        c:編輯模式–>輸入模式,實現先刪除后輸入的效果,可結合光標跳轉命令實現組合改變命令

        用法同刪除命令d和復制命令y

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

        #cc:刪除多行并輸入新內容

        C:刪除當前光標到行尾,并切換成插入模式

        重復上面的編輯操作:.(點號)

(6)可視化模式

    v:根據光標所走的位置,實現單字符和整行選定

    V:實現光標所在行的選定

    編輯命令使用;d刪除,c修改,y復制

(7)撤銷操作: undo

    u:撤銷此前的操作,按步撤銷執行的命令,在手動保存之前,默認最多可撤銷50次

    #u:撤銷最近執行過的#次命令(按執行命令順序的倒序撤銷)

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

    Ctrl+r:撤銷之前的撤銷操作

    .:重復前一個撤銷操作 

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

(8)vim自帶的練習操作:#vimtutor

(9)vim末行模式:

    末行模式下的命令:

        輸出命令:

        w /PATH/TO/SOMEFILE:將范圍內的文本保存至指定的文件中

        :ADDR1,ADDR2w /path/to/somewhere

        將某些地址(ADDR1,ADDR2)之間的內容轉存到/path/to/somewhere這個文件下

        插入命令:

        r /PATH/FROM/SOMEFILE:將指定的文件中的文本讀取并插入至指定位置;

    內建的命令行接口

     ①地址定界:(可同編輯命令一同使用,實現編輯操作,d,y,c)

        :start_pos[,end_pos]

        .:當前行

        $:最后一行、

        %:全文

        /pattern/:從光標所在處開始向文件尾部第一次被模式所匹配到的行

        /pat1/,/pat2/:從光標所在處起始,第一次由pat1匹配到的行開始,至第一次由pst2匹配到的行結束的所有行,

        #:特定的第#行,例如5,即第5行

        #,#:指定行范圍,左側為起始行,右側為結束行

        #,+#:指定行范圍,左側為起始行絕對編號,右側為相對左側行號的偏移量,

    ②查找:

        /PATTERN:從當前光標所在處向文件尾部查找能夠被當前模式匹配到的所有字符串;

        ?PATTERN:從當前光標所在處向文件首部查找能夠被當前模式匹配到的所有字符串;

        n:下一個,與命令方向相同

        N:上一個,與命令方向相反

    ③查找并替換:

        s:末行模式的命令:使用格式:

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

        要查找的內容:可使用正則表達式

        替換為的內容:不能使用正則表達式,但可以引用

        如果"要查找的內容"部分在模式中使用分組符號,在"替換為的內容"中使用后向引用

        直接引用查找模式匹配到的全部文本。

        修飾符:

            i:忽略大小寫

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

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

(10)vim環境變量的設置:

    整體vim的設置值一般放在/etc/vimrc(通常不建議去用root用戶去直接修該文件)

    單用戶的配置文件為家目錄下的 ~/.vimrc (默認不存在,自行手動創建)

    vim會主動將記錄你曾經做過的行為,為家目錄下面的:~/.viminfo

    vim環境參數設置:

        ①:set nu/:set nonu   設置與取消行號

        ②:set hlsearch/:set nohlsearch   設置與取消查找字符高亮的設置值,默認值為hlsearch

        ③:set autoindent/:set nosutoindent     設置與取消自動縮進(set ai/set noai)

        ④:syntax on/off 設置與取消設置語法高亮

        ⑤:set ignorecase/noignorecase     區分與忽略字符大小寫(set ic/noic)

        ⑥:set showmatch/noshowmatch         設置與取消括號成對匹配(set sm/nosm)

        ⑦:fileformat=unix/dos                設置與使用unix/dos環境編程

        ⑧:set textwidth=65 set wrapmargin=15 設置vim編輯的文本的寬度(vim only)

        ⑨:help option-list            查看需要設置的文件的所有的簡寫清單

(11)vim自帶的寄存器:

    有26個命名寄存器和1個無命名寄存器,常存放不同的剪貼版內容,可以不同會話間共享。用a,b,…,z表示, 用“寄存器表示,放在數字和命令之間” 如:3"tyy:表示復制3行到t寄存器中,"tp 表示將t寄存器內容粘貼

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

(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 -b binaryfile

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

    :%!xxd

    編輯二進制文件

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

    :%!xxd -r

    保存并退出

(15)可視化編程:(相當于用鍵盤代替鼠標進行操作)

    允許選擇的文本塊

    V面向行編輯

    v面向字符進行編輯

    ctrl+v 面向塊編輯

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

    w,),},箭頭等使用;

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

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

(0)
sjsirsjsir
上一篇 2016-08-10
下一篇 2016-08-10

相關推薦

  • diy自己的linux

    準備一臺liunx的機器,我用的是liunx虛擬機,Centos6.8的鏡像。 單獨加載一塊硬盤,我加載了一塊20G的硬盤,然后用fdisk /dev/sdb進行分區,sdb1用來作為將來系統的/boot分區,所有100M就可以了,sdb2用來作為將來系統的/分區,我給了10G。然后將兩個分區格式化為ext4系統。 mkdir /mnt/boot mkdir…

    Linux干貨 2016-09-13
  • Linux軟件包管理與實例

    Linux系統的早期,編譯是利用程序代碼生成可執行文件的過程的手動編譯。雖具有一定優勢,但是專業知識要求高,不利于實際操作。因此出現了許多軟件包管理器,最具代表的是由Red Hat 推出的RPM。Yum則有利于解決linux安裝軟件時的依賴性。 所謂依賴性,就是linux系統中的軟件將不同的功能模塊單獨寫入到不同的軟件包中,最后將多個相互依存的軟件包結合起來…

    2017-08-13
  • 進程工具總結

    一、top命令         top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似于Windows的任務管理器。top是一個動態顯示過程,即可以通過用戶按鍵來不斷刷新當前狀態.如果在前臺執行該命令,它將獨占前臺,直到用戶終止該程序為止.比較準確的說,top命令提供了實時的對系統處…

    Linux干貨 2016-09-12
  • 系統管理之程序包管理(二)yum詳解

    系統管理之程序包管理(二)yum詳解:     上節向大家介紹了程序包管理的理論和rpm命令的使用,本篇文章接著向大家介紹rpm的前端使用工具,方便大家更快捷的管理,使用rpm包,提高工作效率。 一 概論: Centos:yum,dnf 兩個rpm前端工具 YUM :yellow dog, Yellowdog,Upda…

    Linux干貨 2016-08-24
  • 自用vim環境參數設置

    基本顯示設置 set nu mber 顯示行號 syntax on 語法高亮 set cursorline 用淺色高亮當前行 set ruler 顯示標尺 set showcmd 輸入的命令顯示出來,看的清楚些 set cmdheight=1 命令行(在狀態行下)的高度,設置為1 set tabst…

    Linux干貨 2017-04-24
  • 磁盤分區管理之磁盤基礎知識1

    1、磁盤基礎知識 1.1 磁頭 磁頭是利用氣流漂浮在盤片上,并沒有接觸到盤片,因而可以在各軌間高速來回移動,但如果磁頭距離盤片太高,讀取的信號就會太弱;太低又會磨到盤片表面,所以盤片表面必須相當光滑平整,任何異物和塵埃均會使得磁頭摩擦到表面而造成數據永久性損壞。 硬盤讀寫磁頭為了能在磁盤表面高速來回移動讀取數據,則需漂浮在磁盤表面上,但是不能接觸,接觸就會造…

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