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 09:38
下一篇 2016-08-11 09:39

相關推薦

  • haproxy 實戰之haproxy實現httpd負載均衡

    haproxy 實戰之haproxy實現httpd負載均衡 實驗目的haproxy + httpd實現負載均衡 1.準備機器,做好時間同步,域名主機名解析 192.168.42.151 [node2 haproxy] 192.168.42.152 [node3 httpd] 192.168.42.153 [node4 httpd] 2.node3,node4…

    Linux干貨 2017-06-29
  • N25-第八周作業

    1、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;      在線的主機使用綠色顯示;      不在線的主使用紅色顯示; 2、如何給網絡接口配置多個地址,有哪些方式?     ifconfig eth#:# &n…

    Linux干貨 2017-02-01
  • lvm邏輯卷

    創建邏輯卷

    2017-12-17
  • lvm邏輯卷管理

    lvm邏輯卷管理: 允許對卷進行方便操作的抽象層,包括重新設定文件系統的大小 允許在多個物理設備間重新組織文件系統,將設備指定為物理卷 用一個或者多個物理卷來創建一個卷組 物理卷是用固定大小的物理區域(Physical Extent,PE)來定義的 在物理卷上創建的邏輯卷是由物理區域(PE)組成 可以在邏輯卷上創建文件系統 創建: 創建物理卷: pvcrea…

    Linux干貨 2016-09-01
  • 計算機組成及功能

    計算器:進行邏輯和算數運算 控制器:讀取,接受,發出控制指令 存儲器:存取程序和數據 I/O設備:輸入指令并顯示到標準輸出設備

    Linux干貨 2018-03-03
  • OpenSSL 的使用

    OpenSSL 是一個開源項目,其組成主要包括一下三個組件:     openssl:多用途的命令行工具     libcrypto:加密算法庫     libssl:加密模塊應用庫,實現了ssl及tls openssl可以實現:秘鑰證書管…

    Linux干貨 2017-06-07
欧美性久久久久