vim編輯器

vim編輯器:

         文本:ASCII, Unicode(全球統一編碼格式)

         文本編輯種類:

                 行編輯器: sed

                 全屏編輯器:nano,vi,vim

                         vi:Visual Interface

                         vim:Vi Improved

         其他編輯器:

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

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

vim:模式化的編輯器

        三種主要模式:

                 命令模式:移動光標,剪切,粘貼文本

                 輸入模式:修改文本

                 擴展命令模式:保存,退出等

        打開文件:

                 # vim  [OPTION]… FILE…

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

                 如果該文件不存在,當編輯后第一次存盤時創建它

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

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

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

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

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

                 vim -m file:只讀方式打開文件

                 ex file 或 vim –e 直接進入ex模式(擴展模式)

        模式轉換:

                 命令模式 –>  輸入模式

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

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

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

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

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

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

                 輸入模式 —->  命令模式

                         ESC

                 命令模式 —->  擴展模式

                          :

                 擴展模式 —->  命令模式

                          ESC(2次)

                 鎖定和解鎖文件:CTRL+s,Ctrl+q

        關閉文件:

                 ZZ:保存退出

                 ZQ:不保存退出

                 :q 退出

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

                 :wq 保存退出

                : x 保存退出

        光標跳轉:

                字符間跳轉:

                         h: 左  l: 右  j: 下  k: 上

                                 #COMMAND:跳轉由#指定的個數的字符;

                單詞間跳轉:

                         w:下一個單詞的詞首

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

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

                                 #COMMAND:由#指定一次跳轉的單詞數

                當前頁跳轉:

                        H:頁首 M:頁中間行 L: 頁底

                行首行尾跳轉:

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

                         0:跳轉至行首

                         $:跳轉至行尾

                行間移動:

                         #G:跳轉至由#指定行

                         G:最后一行

                         1G, gg:第一行

                句間移動:

                        ):下一句 ( :上一句

                段落間移動:

                        }: 下一段 { :上一段

         命令模式翻屏:

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

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

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

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

        vim的編輯命令:

                 字符編輯:

                         x:刪除光標處的字符;

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

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

                         ~:轉換大小寫

                 替換命令(r, replace)

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

                         R:切換成REPLACE,可以替代當前光標后面的n(n取決與你輸入的字符)個字符

                 刪除命令:

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

                         d$:刪除光標處到行尾

                         d^:刪除光標前一個字符到非空行首

                         d0:刪除光標前一個字符到行首

                         dw:刪除當前光標至單詞詞尾

                         de:刪除當前光標至單詞詞尾

                         db:刪除當前光標至單詞詞首

                                 #COMMAND:刪除多個行或單詞

                         dd:  刪除光標所在的行

                                 #dd :刪除#行

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

                 復制命令(y, yank):

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

                         y$:復制光標處到行尾

                         y^:復制光標前一個字符到非空行首

                         y0:復制光標前一個字符到行首

                         yw:復制當前光標位置至單詞詞尾

                         ye:復制當前光標位置至單詞詞尾

                         yb:復制當前光標位置至單詞詞首

                                  #COMMAND:復制多個行,單詞

                        yy:復制行

                                  #yy:復制#行

                         Y:復制整行,等同于yy

                 粘貼命令(p, paste): :

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

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

                 改變命令(c, change)

                         c:修改后切換成插入模式:命令模式 –>  輸入模式

                         用法同d命令,不過刪除數據后進入了輸入模式

                         c$:刪除光標處到行尾,并進入輸入模式

                         c^:刪除光標前一個字符到非空行首,并進入輸入模式

                         c0:刪除光標前一個字符到行首,并進入輸入模式

                         cw:刪除當前光標至單詞詞尾,并進入輸入模式

                         ce:刪除當前光標至單詞詞尾,并進入輸入模式

                         cb:刪除當前光標至單詞詞首,并進入輸入模式

                                  #COMMAND

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

                                  #cc:

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

                 使用小技巧

                         100iwang [ESC]

                                  粘貼“wang ”100次 次

                         <start position><command><end position>

                                 Command:

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

                                 例如0gU$命令意味著:(把當前行全變成大寫)

                                         0:先到行頭

                                         gU:變大寫

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

        其他編輯操作:

                 可視化模式

                        v面向字符,按字符選定

                         V面向行,按行選定

                        ctrl-v  面向塊

                                  結合編輯命令使用:d,c,y,p

                撤銷(undo)操作:

                         u:撤銷最近的更改

                        #u:撤銷之前多次更改

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

                撤銷此前的撤銷:

                        Ctrl + r 重做最后的“撤消”更改

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

                         . 重復前一個操作

                         n. 重復前一個操作n次

        vim的寄存器:

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

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

                         如:3"ayy  表示復制3行到a寄存器中

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

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

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

        編輯二進制文件:

                 以二進制方式打開文件

                         vim –b binaryfile

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

                         :%!xxd

                 編輯二進制文件

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

                         :%!xxd –r

                 保存退出

        擴展模式

                 按“: ”進入Ex 模式

                         創建一個命令提示符:, 處于底部的屏幕左側

                 命令:

                         ;w 寫(存)磁盤文件

                         :wq 寫入并退出

                         :x 寫入并退出

                         :q 退出

                         :q!不存盤退出,所有更改都將丟失

                         :r /path/from/file 讀文件內容到當前文件中

                         :w /path/to/file 將當前文件內容寫入另一個文件

                         :!command 不退出文件的情況下,執行命令,查看結果

                         :r!command 讀取command命令的輸出插入到當前位置的下一行(新建的空行)

                                 比如用戶加密的密碼;r!getent shadow gao | cut -d: -f1

                 內嵌命令接口:

                         地址定界

                                 :start_pos,end_pos

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

                                 #,#:從第一個#行起始,到第二個#行結尾

                                 #,+#:從左側#行起始,到左側#向后偏移第二個#的行(#+#行)結束

                                          2,+3:表示2到5行

                                 .:當前行

                                 $:最后一行

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

                                 %:全文,相當于1,$

                                 /pat1/,/pat2/

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

                                         #,/pat/:從#行開始,一直到第一次被pat匹配到的行結束

                                         /pat/,$:從第一次被pat1模式匹配到的行開始,一直到$行結束

                                 使用方式:地址定界后跟一個編輯命令

                                         d:刪除被地址定界的行

                                         y:復制被地址定界的行

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

                                         r /path/from/file:在地址定界的末行下一行插入指定文件中的所有內容

                        查找

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

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

                                         n:與命令查找方向相同

                                         N:與命令查找方向相反

                        查找并替換(類似sed命令中的s選項)

                                 s:末行模式的命令,在擴展模式下完成查找替換操作

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

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

                                                 替換為的內容:不能使用模式,但可以使用\1, \2, …

                                                  等后向引用符號;還可以使用“&”,表示引用前面查找時查找到的整個內容

                                         修飾符:

                                                 i:忽略大小寫

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

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

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

                                                  s@@@,s###

        vim的多文件功能:

                 多文件:

                         vim FILE1 FILE2 FILE3 …

                         文件間切換:

                                 :next  下一個

                                 :prev  前一個

                                 :first  第一個

                                 :last  最后一個

                         文件間退出:

                                 :wall  保存所有

                                 :qall  退出所有

                 多窗口:

                         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 退出

        定制vim 的工作特性:

                 配置文件:永久有效

                 全局:/etc/vimrc

                 個人:~/.vimrc

                 在擴展模式下配置的工作特性:當前vim 進程有效

                 (1)  行號

                         顯示:set number,簡寫為set nu

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

                 (2)  括號成對匹配(vim中默認是開啟的,無法關閉)

                         匹配: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)  文件格式

                         啟用:set=fileformat=unix

                         不忽略:set=fileformat=dos

                 (8)  設置文本寬度

                         :set textwidth=65 (vim only) :距離左邊65個字符換行

                         :set wrapmargin=15 :距離右邊15個字符換行,等價與上面的命令

        獲取幫助:

                 :help option-list

                 :set all                

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

(0)
megedugaomegedugao
上一篇 2016-08-10 10:15
下一篇 2016-08-10

相關推薦

  • 網絡基礎知識札記

    Linux網絡屬性管理(1)     Bell(AT&T), PARC(Xerox)        以太網     計算機網絡:共享底層通信信道         CSMA/CD算法      &nbsp…

    Linux干貨 2016-09-06
  • 權限管理

    1、創建組sales,gid 3000,passwd:centos,sales admins:user2 將用戶user1,user2,user3加入到sales輔助組 希望user1 創建新文件 默認的所屬組為sales user2將用戶user3從sales組移除 # groupadd -g 3000 sales  # gpasswd sale…

    Linux干貨 2016-08-03
  • python寫一個通訊錄之step by step

    編寫過程:     第一步:手動代碼堆積         第二步:函數復用         第三步:數據持久化之數據保存         第四步:數據持久化之數據讀取       &nbsp…

    Linux干貨 2015-03-26
  • N25-第九周

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash #統計shell及非shell個數 #author:dodo declare -i loginnum=0 declare -i nologinnum=0 while…

    Linux干貨 2017-05-27
  • Linux文件系統的創建、檢測、修復、分區等工具的使用

    一、文件系統管理 什么是文件系統?     我的理解是文件系統是對磁盤上的數據和文件結構的管理規范。     如果文件系統沒有繼承性,那么以前文件系統的數據就無法傳到新的文件系統中。     Linux的文件系統有這么幾種:ext2, ex…

    系統運維 2016-03-03
  • Linux之啟動和內核管理

     Linux之啟動和內核管理     本文主要包括以下內容一  CentOS 5和6的啟動流程二  服務管理三  Grub管理四  自制Linux五  啟動排錯六  編譯安裝內核   Linux組成Linux: kernel+rootfskernel: 進程管…

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