第六周作業補充-vim簡介及其使用方法詳細介紹

vim.png

What

      Vim是由Vi發展出來的一個文本編輯器。代碼補全、編譯及錯誤跳轉等方便編程的功能特別豐富,在Unix& Unix Like操作系統中被廣泛使用。和Emacs并列成為Unix& Unix Like操作系統中最受歡迎的文本編輯器

When& Who

      Vim的第一個版本由布萊姆·米勒在1991年發布

Vim的具體操作介紹

      Vim是模式化編輯器,其基本模式為:

            編輯模式,也叫命令模式

            輸入模式

            末行模式:內置有命令行接口

      打開文件:

            # vim [OPTION] [file….]:如果文件不存在,創建文件

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

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

 

      模式轉換:

            編輯模式 à 輸入模式

                  i, Insert:在光標所在處開始輸入

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

                  o:在光標所在處下方打開新的一行開始輸入

                  I:在光標所在處行首開始輸入

                  A:在光標所在處行尾開始輸入

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

            輸入模式 à 編輯模式

                  鍵盤上的”Esc”鍵

 

            編輯模式 à 末行模式

                  鍵盤上的“:”鍵

            末行模式 à 編輯模式

                  鍵盤上的”Esc”鍵

      如何關閉文件:

            ZZ 保存并退出

            :q 退出

            :!q 強制退出,不保存此前編輯的內容

            :wq 保存此前編輯的內容并退出

            :x 保存并退出

            :w /pat/to/somefile,將當前文件另存到指定路徑    

 

      光標跳轉:

            k鍵:上

            j鍵:下

            h鍵:左

            l鍵:右    

            #[k|j|h|l]:跳轉有#自定個數的字符或者行數

 

      單詞間跳轉:

            w:下一個單詞的詞首

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

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

            #[w|e|b]:跳轉由#指定的單詞個數

 

      行首行尾跳轉:

            0:跳轉至行首

            $:跳轉至行首

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

      行間跳轉:

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

            1G,gg:跳轉至文件的第一行

            G:跳轉至文件的最后一行

 

      句間跳轉:

            ):下一句

            (:前一句

      段間跳轉:

            }:下一段落

            {:前一段落

      翻屏:

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

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

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

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

            Enter:按行向后翻屏

 

Vim的編輯明令

      字符編輯:

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

            #x:刪除以光標所在處為啟始位置的#個字符

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

 

      替換命令:

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

      刪除命令:

            d$:刪除光標所在處至行尾的所有字符

            d^:刪除光標所在處至行首非空白字符的內容

            dw:刪除光標所在處字符至下一個單詞詞首的所有字符

            de:刪除當前單詞光標所在處字符至詞尾內容或至下一個但單詞詞尾的所有字符

            db:刪除光標所在處至前一個單詞的詞首字符的所有內容

            dd:刪除一行

            #[d$|d^|dw|dw|de|db|dd]:刪除由#為數字指定的命令內容

 

      粘貼命令:

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

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

 

      復制命令(yank, y)

            y:復制,工作行為類似于d命令

            y$:復制光標所在處至行尾的所有字符

            y^:復制光標所在處至行首非空白字符的所有內容

            yw:復制光標當前位置到下一個單詞詞首的所有內容

            ye:復制光標當前位置到下一個單詞詞尾的所有內容

            yb:復制光標當前位置到當前單詞詞首的所有內容

            yy:復制整行內容

            #[y$|y^|yw|ye|yb|yy]:復制由#指定為數字的命令的內容

      改變命令(change,c)

            使用c命令的同時,從 編輯模式 à輸入模式,實現刪除功能并轉為輸入模式

            c$:刪除光標所在處至行尾的所有字符內容并轉為輸入模式

            c^:刪除光標所在處至行首非空白字符的所有內容并轉為輸入模式

            cw:刪除光標所在處至下一個單詞詞首的內容并轉入輸入模式

            ce:刪除光標所在處至當前或下一個單詞詞尾的字符并轉入輸入模式

            cb:刪除光標所在處至當前或前一個單詞詞首的字符并轉入輸入模式

            c0:刪除光標所在處至行首的所有字符并轉入輸入模式

            cc:刪除整行并轉入輸入模式

            #[c$|c^|cw|ce|cb|c0|cc|]:刪除由#指定的命令內容

其他編輯操作:

            可視化模式:

                  v:按字符選定

                  V:按行選定

                  結合編輯命令:d,c,y

            撤銷(undo, u)命令:

                  u:撤銷此前的操作

                        #u:撤銷此前的#次操作

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

                  .:重復前一個執行的編輯操作

末行命令模式

      地址界定:

      :start_pos[,end_pos]

            #:特定的第#行,例如”:5”:指定第5行內容

            .:當前行

            $:最后一行

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

            #,+#:指定航范圍。左邊#為起始行絕對編號,右邊+#為相對于左邊#起始行的偏移量。例如5,+7:范圍是從第五行到第12行的內容

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

                  1,$:第一行到最后一行

            %:全文

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

                  例如:/first/,$:查找光標所在處到行尾第一次被first匹配到的行

            /pattern1/,/pattern2/:從光標所在處起始第一次被pattern1匹配到的行,至第一次被pattern2匹配到的行之間的所有的行

            可結合編輯命令d,c,y,p一同實現編輯命令

            w /path/to/somefile:將范圍內的文本保存至指定的文件中

            r /path/from/somefile:將指定文件中的文本讀取至指定位置

 

      查找

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

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

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

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

      查找并替換

            s:末行模式的命令

            使用格式

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

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

                        要替換的內容:不可以所以用正則表達式,但可以引用

                 

                  修飾符:

                        i:忽略大小寫

                        g:全局替換,意味著一行中如果匹配到多次,則均替換

                  可把分隔符替換為其他:

                        s@@@

                        s###

vim的多文件功能

      打開多個文件:

            vim FILE1 FILE2 FILE3….

                  文件間的切換:

                        :next 下一個文件

                        :prev 上一個文件

                        :first 第一個文件

                        :last 最后一個文件

                  退出所有的文件:

                        :wqall 保存所有文件并退出

                        :wall 保存所有文件

                        :qall 退出所有文件

 

      多窗口:

            -o:水平分隔

            -O:垂直分隔

            在窗口間進行切換:Ctrl+w, ARROW

            注意:單個文件也可以分隔為多個窗口進行查看

                  Ctrl+w,s:水平分隔窗口

                  Ctrl+w,v:垂直分隔窗口

 

定制vim的工作特性:

      注意:在末行模式下的設定,僅對當前vim進程有效

      如果要永久有效,需要更改配置文件:

            全局:/etc/vimrc

            個人:~/.vimrc

      行號:

            顯示行號:set number,簡寫:set nu

            取消行號顯示:set nomber,簡寫:setnonu

      括號匹配高亮

            匹配:set showmatch, set sm

            取消:set nosm

      自動縮進

            啟用:set ai

            取消:set noai

      高亮搜索

            啟用:set hlsearch

            禁用:set nohlsearch

      語法高亮          

            啟用:syntax on

            禁用:syntax off

      忽略字符大小寫:

            啟用:set ic

            禁用:set noic

      獲取幫助:

            :help

            :help subject

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

(0)
mxb93mxb93
上一篇 2016-09-26
下一篇 2016-09-26

相關推薦

  • Linux的哲學思想

    2018-03-03

    Linux干貨 2018-03-03
  • N25_第四周

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 cp -R /etc/skel /home/tuser1chmod 700 -R /home/tuser1 2、編輯/etc/group文件,添加組hadoop。 vim /etc/group hadoop:x:1010:1…

    Linux干貨 2016-12-25
  • 權限管理

    權限管理 在linux中的每一個文件或目錄都包含有訪問權限,這些訪問權限決定了誰能訪問和如何訪問這些文件和目錄。 我們先來看看文件的屬性: 權限: r:可獲取文件數據(讀取文件) w:可修改文件的數據(寫入數據) x:可以把此文件提請內核啟動為一個進程 (執行) 文件的權限主要針對三類對象進行定義:  owner: 屬主, u  grou…

    Linux干貨 2016-08-05
  • 認識DNS

    DNS全稱是Domain Name System的簡稱,即域名系統。因特網上作為域名和IP地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析(或主機名解析)。DNS協議運行在UDP/TCP協議之上,使用端口號53。 認識DNS 安裝 創建一臺DN…

    Linux干貨 2016-12-07
  • keepalived雙主模型高可用Nginx服務

    配置前提: (1) 各節點時間必須同步;             ntp, chrony (2) 確保iptables及selinux不會成為阻礙; (3) 各節點之間可通過主機名互相通信(對KA并非必須);   &nb…

    2017-07-06
欧美性久久久久