vim文本編輯器之快捷鍵滿天飛

vim文本編輯器不同于nano的是其功能非常強大,強大的功能還支持各種快捷鍵,讓我們編輯文本的時候更方便更快捷。

本文將會按照下圖所展示的功能來對命令一一講解,

        vim.png

  •  打開文件:

                vim file:直接打開文件file   

                vim +# file:打開文件后光標在第#行顯示

                vim +/partern:打開文件后,直接讓光標在第一個被partern匹配到的行的行首處顯示

                vim + file:直接打開文件,光標在最后一行顯示

                vim -b file:二進制的方式打開文件

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

                vim -m file:只讀方式打開

                vim -e file:打開文件后直接進入編輯模式

                注意:如果文件存在,則直接打開顯示的內容,如果文件不存在,則在編輯完成之后在末行模式輸入wq或者x保存文件時才會寫入到硬盤中。

  •  編輯界面:

                vim 進入到文本界面后,我們首先進入的命令模式,在這個界面我們通常需要重復的切換三個模式來進行編輯操作,下面我們來介紹下VIM的三種主要模式及互相的切換方法。

                命令模式:可以使用快捷鍵移動光標,復制,粘貼,刪除或替換字符等操作

                插入模式:此時我們可以編輯文本,修改文本中的內容

                末行模式:可以執行,替換,刪除 ,保存退出等操作

                各個模式之間的切換方法:

                命令模式 —–(:)—–> 末行模式

                命令模式 -[iIaAoO]–> 插入模式

                插入模式—(ESC)—-> 命令模式

                插入模式–(ESC)(:)—> 末行模式

                末行模式—-(ESC)—> 命令模式

                末行模式-(ESC)[iIaAoO]-> 插入模式          

                 【iIaAoO】插入模式詳解:

                        i:在光標所在處插入要輸入的內容

                        I:在光標所在處的行首插入要輸入的內容

                        a:在當前光標所在處的后面插入要輸入的內容

                        A:在當前光標所在處的行尾插入要輸入的內容    

                        o:在當前光標所在行的下一行的行首插入要輸入的內容(新建行)

                        O:在當前光標所在行的上一行的行尾部插入要輸入的內容(新建行)

  •  關閉文件:

                在末行模式下輸入:

                        q:退出

                        q?。簭娭仆顺?/p>

                        wq:保存退出

                        x:保存退出

                        r /path/to/somefile:讀file到文本中

                        w /path/to/somefile:讀當前文本中的內容到file中

                        !command:命令的輸出會在執行vim命令之前的窗口顯示

                         r!command:命令的輸出結果會在文本中顯示

                 命令模式:

                         ZZ:保存退出

                        ZQ:退出不保存

    vim編輯器的命令分類:光標移動和跳轉、命令模式、文本編輯、地址定界、查找及替換、可視化編輯、文本塊選擇,多文件模式。

  •  光標移動和跳轉命令:

                行間跳轉:

                        #G:將光標移動到第#行的行首

                        1G:將光標移動到第一行的行首  gg也可

                        G  :將光標移動到最后一行的行首

                            ^:移動到行的第一個單詞首部

                            $:移動到行的最后一個單詞尾部

                             0:移動到行首部

                單詞間跳轉: web

                           w:向后移動到下一個單詞的行首

                            e:向后移動到下一個單詞的行尾

                            b:向前移動到下一個單詞的行尾部

                段落間跳轉:

                            }:向下移動到下一段的行首

                            {:向上移動到上一段的行首

                句子間跳轉:

                            ):下一句

                            (:上一句

                當前頁跳轉:

                              L:頁面尾部   —low

                             M:頁面中間  —middle

                              H:頁面首部  —head

                按屏幕跳轉:fb

                               ctrl+b:向前移動一屏

                                ctrl+f:向下移動一屏—-和more less 快捷鍵一致

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

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

                上下左右移動:

                                h:向左

                                 j:向下

                                k:向上

                                 l:向右

  • 命令模式相關命令:

                .:重復上一次操作,#. 重復前一個操作n次

               u:撤銷上一次的操作,也可#u

               ctrl+r:撤銷撤銷

                U:撤銷當前光標在此行的所有操作

                x:刪除當前光標所在的字符,向后刪,也可以#x

                r:按下r在按下要替換的字符即可替換

                R:直接進入替換模式,此時可以直接當光標所在處需要替換的字符,與r的區別是r每替換一次則需要按一下r。

                D:從當前光標開始刪除至行尾部同d$

                ~:字符大小寫轉換,小轉大,大轉小

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

                刪除:dd刪除整行,d^ 從當前字符開始刪除到行首,同理d$,d0,d[web],#dd(向后刪除#行,包括當前行)

                改變:cc刪除整行,和dd的區別主要時執行完cc操作后直接由命令模式進入插入模式,選項同d類似。

                復制:yy復制整行,y^–>p 從當前字符開始復制到行首并粘貼,同理y$,y0,y[web],#yy(向后復制#行,包括當前行)

                粘貼:p:如果粘貼的是整行,則粘貼在當前光標所在行的下方,否則粘貼當前光標所在處的前方。

                          P:如果粘貼的是整行,則粘貼在當前光標所在行的上方,否則粘貼當前光標所在處的前方。

                應用小技巧:100+i+naruto+esc,在光標所在處插入100個naruto

        

  • 地址定界相關命令:(在末行模式下,配合編輯命令使用,如y、d、w,r等)

                 %:全文

                   .:當前行

                  $:最后一行

                  a,b:a行開始到b行結束

                  a,+#:a行開始到下面#行結束

                  /root/,/user/:從第一個匹配到的root開始,到第一個匹配到user的結束

                  #,/root/:從第#行開始,到第一次匹配到root結束

                  /root/,$:從第一次匹配到的root開始到最后一行結束

  • 查找相關命令:

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

                    向上查找匹配到的字符:N

                    向上查找匹配到的字符:n

  •  查找并替換相關命令:

                   vim的末行查找并替換的功能與前面接觸過的sed命令類似。

                      格式:地址定界s@要查找的內容@要替換的內容@ig

                      要查找的內容:可以使用正則表達時的匹配模式

                      替換的內容:不能使用模式,只能使用引用功能 \1,\2,還可以使用&,來查找匹配前面匹配到的字符。

                      g:全局替換,默認情況下,每一行只替換第一次匹配到的

                      i:忽略大小寫

                      gc:全局替換,替換時交互式詢問             

                  

  •  可視化模式:在windows中我們通常可以用鼠標選擇文章的某一部分內容,linux也可以實現。

            v:可以按字符選擇,配合上下左右鍵來選擇需要的內容

            V:可以按行選擇

  • 多文件模式

           多文件模式:vim file1 file2 file3 ……..

            :next 下一個  :prev 前一個

            :first 第一個   :last  最后一個

  •         :qall 保存退出  :wqall 保存所有退出   :wall 保存所有

  • 使用多個文件分割:

  •             vim -o|O:水平或者垂直分割文件顯示

                 各個窗口間切換方法:ctrl+ww 或ctrl+w+向上下左右箭頭

  • 單文件窗口分割:

  •             ctrl + w,s   水平分割  (split水平)

                ctrl + w,v   垂直分割  (vertical垂直)

                ctrl + w,q   取消相鄰窗口   quit退出

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

  • 定制vim的工作特性:

  •             全局:/etc/vimrc

                個人:~/.vimrc

           我們也可以通過在末行模式輸入相關命令來對vim編輯器進行設置:

                 行首顯示行號:

                            顯示:set nu

                            取消:set nonu

                  括號成對匹配:

                            匹配:set sm

                            取消:set nosm

                   自動縮進

                             啟用:set ai

                             取消:set noai

                    高亮搜索

                            啟用:set hlsearch    

                            取消:set nohlsearch

                    忽略字符的大小寫

                            啟用:set ic

                            禁用:set noic

                    文本格式

                            啟用:fileformate=unix

                            禁用:fileformate=dos

                    設置文本寬度

                            set textwidth=65

                            set wrapmargin=15

     vim寄存器:

         vim有26個命令寄存器和1個無名寄存器,常存放不同的剪切板內容,可以不同會話間共享,windows該功能的寄存器就一個,linux中該寄存器的
    命名規則為a…z,默認情況下我們使用的是無名寄存器。linux還有10個數字寄存器,用0-9表示,0存放最近復制的內容,1存放最近刪除的內
    容,當新的文本變更和刪除時,1緩存2,2轉存3,以此類推,數字寄存器不能在不同會話間共享。

                例如:#“tyy 表示復制#行至t寄存器中,tp表示將t寄存器中的內容粘貼

        補充:vim中的 \033 –> ctrl +v +[   (同時按)

    練習:

    1、復制/etc/profile至/tmp/目錄,用查找替換命令刪除/tmp/profile文件中的行首的空白字符

        :%s@^[[:space:]]\+@@g

    2、復制/etc/rc.d/init.d/functions文件至/tmp目錄,用查找替換命令為/tmp/functions的每行開頭為空白字符的行的行首添加一個#號

        :%s@^[[:space:]]\+@#&@g

    3、如何設置tab縮進為4個字符?

         echo "tabstop=4" >> /etc/vimrc

    4、復制/etc/rc.d/init.d/functions文件至/tmp目錄;替換/tmp/functions文件中的/etc/sysconfig/init為/var/log;

         :%s@/etc\/sysconfig\/init@\/var\/log@g

    5、刪除/tmp/functions文件中所有以#開頭,且#后面至少有一個空白字符的行的行首的#號;

        :%s@^#\([[:space:]]\+\)@\1@

             

    

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

(2)
NarutoNaruto
上一篇 2016-08-11
下一篇 2016-08-11

相關推薦

  • linux 的套接字

    套接字是一種通信機制,憑借這種機制,客戶/服務器系統的開發工作既可以在本地單機上進行,也可以跨網絡進行。 套接字的特性有三個屬性確定,它們是:域(domain),類型(type),和協議(protocol)。套接字還用地址作為它的名字。地址的格式隨域(又被稱為協議族,protocol family)的不同而不同。每個協議族又可以使用一個或多個地址族定義地址格…

    Linux干貨 2016-08-18
  • 設計模式 ( 十八 ) 策略模式Strategy(對象行為型)

    設計模式 ( 十八 ) 策略模式Strategy(對象行為型) 1.概述         在軟件開發中也常常遇到類似的情況,實現某一個功能有多種算法或者策略,我們可以根據環境或者條件的不同選擇不同的算法或者策略來完成該功能。如查找、排序等,一種常用的方法是硬編碼(Hard Coding)在一個類中,如需要提供多種查找算…

    Linux干貨 2015-07-28
  • 馬哥教育網絡22期+第四周作業博客

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

    Linux干貨 2016-09-08
  • 在linux中創建虛擬網卡(網卡別名)的方法

    由于業務需要,要在單個物理網卡上建立多個虛擬網卡,操作如下:cd /etc/sysconfig/network-scripts/   #進入網卡目錄cp ifcfg-eth0 ifcfg-eth0:1   # 復制出ifcfg-eth0:1虛擬網卡vim ifcfg-eth0:1    #配置ifcfg-eth0:1虛…

    Linux干貨 2016-09-06
  • 使用cp命令定時復制數據

    cp命令 cp命令用來將一個或多個源文件或者目錄復制到指定的目的文件或者目錄。 cp [選項] [參數] 常用選項: -r -R 遞歸拷貝目錄及目錄里所有的內容 -i 交互式,默認支持 -d 復制的時候,如果目錄有鏈接文件,則只復制鏈接文件 -p –preserv,復制的時候將文件的屬性一起復制 -a = -dpR -v 復制的時候顯示詳細過程 如何定期執…

    Linux干貨 2017-04-03
  • 夢想走向現實的地方

    曾經羨慕打字快的同學指尖能在鍵盤上優雅地跳舞,于是我有努力練習打字。 曾經羨慕同事能很神奇地把一個交換機的端口關閉,讓那端口下面的人都不能上網,于是我努力學習交換機、路由。 現在我羨慕一個人能管很多服務器的人,于是我開始學習linux了。 努力成為一個也能管很多服務器的人,因為我也想別人叫我運維工程師

    Linux干貨 2016-10-25
欧美性久久久久