文本全屏編輯器 vim

         vim在Linux中站著很重要的位置,是每一個學習Linux人員的必須掌握的技能之一,因為vim功能很強大為我們編輯文件和腳本帶來了很大的方便。接下來我們來一起了解vim的功能。

 

文本編輯種類:
     行編輯器: sed
     全屏編輯器:nano, vi,vim – Vi Improved
     其他編輯器:
         gedit :一個簡單的圖形編輯器
         gvim:一個 Vim 編輯器的圖形版本

 

 

vi: Visual Interface ,文本編輯器
vim 是 vi 的升級版,vim不僅包含了 vi 的全部功能,而且 vim 還增加了顏色功能,這樣更容易編寫和查找。

 

一,使用 vim打開文件:
# vim  [OPTION]… FILE…

      vim –b file  二進制方式打開文件
      vim –d file1 file2… 比較多個文件
      vim -m file 只讀打開文件

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

vim 指定某行的行首.PNG

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

vim 指定某個單詞的行首.PNG

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

vim 指定文件最后一行行首.PNG

 

 

 

二,使用vim打開文件后

vim分為三個模式,分別是命令模式,編輯模式,擴展模式。
       命令模式(默認):移動光標,剪切/ 粘貼文本
       編輯模式:修改文本
       擴展命令模式 :保存,退出等

擊鍵行為是依賴于 vim的“模式”

Esc鍵 退出當前模式,總是返回到命令模式。

鎖定和解鎖:CTRL+s,Ctrl+q(所有模式都可以用)三個模式轉換.PNG

 

命令模式:

命令模式.PNG

命令模式光標跳轉:
字符間跳轉:
      h: 左   l: 右  j: 下  k: 上
      #COMMAND :跳轉由# 指定的個數的字符;
單詞間跳轉:
      w :下一個單詞的詞首
      e :當前或下一單詞的詞尾
      b :當前或前一個單詞的詞首
      #COMMAND :由# 指定一次跳轉的單詞數
當前頁跳轉:
     H(head):頁首   M(middle):頁中間行   L(low): 頁底
行首行尾跳轉:
     ^:  跳轉至行首的第一個非空白字符;
     0:  跳轉至行首
     $:  跳轉至行尾
行間移動:
     #G:跳轉至由# (行數)指定行(擴展模式下輸入一個數字就是多少行)

擴展模式下輸入一個數字就是多少行.PNG    

      G :整個文件的最后一行
     1G, gg:  第一行
句間移動:
       ) :下一句    ( :上一句
段落間移動:
       }: 下一段       { :上一段

命令模式翻屏操作
       Ctrl+f:  向文件尾部翻一屏
       Ctrl+b:  向文件首部翻一屏
       Ctrl+d:  向文件尾部翻半屏
       Ctrl+u:  向文件首部翻半屏
命令模式操作:
字符編輯:
       x:  刪除光標處的字符;
       #x:  刪除光標處起始的# 個字符(只能刪光標所在的一行)
       xp:  交換光標所在處的字符及其后面字符的位置
       ~: 轉換大小寫
替換命令(r, replace)
        r:  替換光標所在處的字符
        R: 切換成REPLACE下(exc回到命令模式)
刪除命令:
        d:  刪除命令,可結合光標跳轉字符,實現范圍刪除;
        d$:  刪除到行尾
        d^: 刪除到非空行首
        d0: 刪除到行首
        dw: 刪除單詞
        #COMMAND
        dd:  刪除光標所在的行
        #dd :多行刪除
        D: : 從 當前光標位置一直 刪除到行尾 ,留空行,等同于d$
復制命令(y, yank): :
         y:  復制,行為相似于d 命令
         y$: 復制到行尾
         y^: 復制到行首
         y0:復制到行首
         yw: 復制單詞
         yy :復制行
         #yy:  復制多行
         Y(大): 復制整行
粘貼命令(p, paste): :
       p(小):緩沖區存的如果為整行,則粘貼當前光標所在行的下方;否則,則粘貼至當前光標所在處的后面
       P(大) :緩沖區存的如果為整行,則粘貼當前光標所在行的上方;否則,則粘貼至當前光標所在處的前面
改變命令(c, change)
      c:  修改后切換成插入模式
      cc :刪除當前行并輸入新內容
      C(大):刪除當前光標到行尾,并切換成插入模式
<start position><command><end position>
      Command:
            y  復制、d  刪除、gU  變大寫、gu  變小寫
      例如 0y$  命令意味著:
            0 → →  先到行頭
            y → →  從這里開始拷貝
            $ → →  拷貝到本行最后一個字符
                     ye  從當前位置拷貝到本單詞的最后一個字
撤消更改
        u 撤銷最近的更改
        #u 撤銷之前多次更改
       U  撤消光標落在這行后所有此行的更改
       按Ctrl – r 重做最后的“撤消”更改
       .  重復前一個操作
      n. 重復前一個操作n次
關閉文件
   ZZ:保存退出
   ZQ:不保存退出

 

 

編輯模式:編輯模式.png      i: insert,  在光標所在處輸入
      I:在當前光標所在行的行首 輸入
      a: append,  在光標所在處后面輸入
      A :在當前光標所在行的行尾 輸入
      o:  在當前光標所在行的下方打開一個新行
      O:在當前光標所在行的上方打開一個新行

 

擴展模式:

擴展模式.PNG命令:
    r filename  讀文件內容到當前文件中
    w filename 將當前文件內容寫入另一個文件(也可以在編輯時保存一部分繼續編輯)
    !command : 不退出 vim 也可以執行命令

不退出 vim 也可以執行命令.PNG    r!command  : 不退出vim,把后面命令的標準輸出讀入到當前文件。
不退出vim,把后面命令的標準輸出讀入到當前文件.PNG   
地址定界
       :start_pos,end_pos
      #:  具體第# 行,例如2 表示第2 行;
      #,#:  從左側# 表示行起始,到右側# 表示行結尾
      #,+#:  從左側# 表示的行起始,加上右側# 表示的行數
       如:2,+3 表示2 到5行
       .:  當前行
       $:  最后一行
             .,$-1  當前行到倒數第二行
        % :全文,  相當于1,$
         /pat1/,/pat2/
        從第一次被pat1 模式匹配到的行開始,一直到第一次被pat2 匹配到的行結束
        #,/pat/
        /pat/,$
       使用方式:后跟一個編輯命令
           w file:  將范圍內的行另存至指定文件中
            r file :在指定位置插入指定文件中的所有內容
查找
      /PATTERN :從當前光標所在處向文件尾部查找
     ?PATTERN :從當前光標所在處向文件首部查找
     n :與命令同方向
     N :與命令反方向
     s:  在擴展模式下完成查找替換操作
            格式:s/ 要查找的內容/ 替換為的內容/ 修飾符
            要查找的內容:可使用模式
            替換為的內容:不能使用模式,但可以使用\1, \2, …等后向引用符號;還可以使用“&” 引用前面查找時查找到的整個內容
     修飾符:
           i:  忽略大小寫
           g:  全局替換;默認情況下,每一行只替換第一次出現
           gc: 全局替換,每次替換前詢問
查找替換中的分隔符/ 可替換為其它字符,例如
          s@/etc@/var@g
          s#/boot#/#i
關閉文件
    :q  退出(沒有修改過的文件)
    :q!  強制退出,丟棄做出的修改
    :wq  保存退出 
    :x  保存退出(一般不常用)    

 編輯二進制文件 
    以二進制方式打開文件
           vim –b binaryfile
    擴展命令模式下,利用xxd 命令轉換為可讀的十六進制
           :%!xxd
   編輯二進制文件
   擴展命令模式下,利用xxd 命令轉換回二進制
          :%!xxd –r
   保存退出

 

 

三,vim 的寄存器
      有26 個命名寄存器和1 個無命名寄存器,常存放不同的剪貼版內容,可以不同會話間共享。
      用a ,b,…,z 表示, 用“ 寄存器表示,放在數字和命令之間
              如:3"tyy  表示復制3 行到t 寄存器中
             "tp 表示將t 寄存器內容粘貼
       未指定,將使用無命名寄存器
       有10 個數字寄存器,用0 ,1 ,… ,9 表示,0 存放最近復制內容,1 存放最近刪除內容。當新的文本變更和刪除時,1 轉存到2 ,2 轉存到3 ,以此類推。數字寄存器不能在不同會話間共享。

四,可視化模式
  允許選擇的文本塊
       v 面向字符
       V面向行
       ctrl-v  面向塊
可視化鍵可用于與移動鍵結合使用:
       w , ) )  ,},箭頭等
突出顯示的文字可以被刪除,復制,變更,過濾,搜索 / 替換等

多文件模式
 vim FILE1 FILE2 FILE3 …(編輯過的文件必須保存過才能切換其他文件)
      :next  下一個
      :prev  前一個
      :first  第一個
      :last  最后一個
      :wall  保存所有
      :qall  退出所有
      :wqall

使用多個“窗口”
    多文件分割
          vim -o|-O FILE1 FILE2 …
          -o:  水平分割
          -O:  垂直分割
          在窗口間切換: Ctrl+w(按上下鍵切換v), 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)  括號成對匹配
            匹配: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)  文件格式
             啟用:fileformat=unix
             不忽略: fileformat=dos
      (8)  設置文本寬度
              :set textwidth=65 (vim only)(從左算起65個字符換行)
              :set wrapmargin=15(從右算起15個字符換行)
       :help option-list
       :set or :set all
vi/vim 內置幫助
       :help (在 vim 內就可以查看)
       :help topic
       Use :q to exit help
Vimtutor (不是只讀的,也可以修改,不過關閉后再開,你修改的會自動消失)

 

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

(0)
AN0519AN0519
上一篇 2016-08-15 09:24
下一篇 2016-08-15 09:24

相關推薦

  • DNS服務器之理論基礎

    一、什么是DNS     DNS全稱為Domain Name System,即域名系統,其作用就是將我們經常使用的“網址”解析為IP地址。     在互聯網上通信需要借助于IP地址,但人類對于數字的記憶能力遠不如文字,那么將IP地址轉換成容易記憶的文字是個好辦法,可是計算機只能識…

    Linux干貨 2015-04-29
  • Centos 6.5下DNS服務器主從復制搭建及測試

    一、實驗環境及IP地址規劃     VMware Workstation 10.0, CentOS 6.5 X86系統     主DNS服務器:192.168.1.102     從DNS服務器:192.168.1.110     www服務器:  …

    Linux干貨 2015-04-18
  • Btrfs文件系統的管理

    BTRFS文件系統 核心特性 支持將多個底層物理設備組合成同一個設備使用,即多物理卷支持。btrfs可由多個底層物理卷組成:支持RAID,以連擊“添加”、“移除”、“修改” 寫時復制,在修改文件時,先將文件復制一份,然后在新文件上進行修改,最后將文件名的指針指向新文件,所以原文件還是存在的。 數據及元數據校驗碼:checksum 子卷:在一個卷上創建子卷,每…

    Linux干貨 2016-07-16
  • N26-第二周

    一、文件管理類命令 pwd:顯示工作目錄 cd:切換目錄 cd [dir] cd: 切換回家目錄;注意:bash中, ~表示家目錄; cd ~:切換回自己的家目錄 cd ~USERNAME:切換至指定用戶的家目錄; cd -:在上一次所在目錄與當前目錄之間來回切換; 相關的環境變量 $PWD:當前工作目錄 $OLDPWD:上一次的工作目錄 file:查看文件…

    Linux干貨 2017-03-07
  • 硬盤基礎知識及 MBR、GPT分區格式

    一,硬盤知識     硬盤接口類型:         ? 并行:             IDE: 133MB/s &n…

    Linux干貨 2016-09-19
  • 文本處理三劍客之一的sed

    處理文本的工具sed Stream EDitor, 行編輯器 sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非你使用重定向存儲輸出。Se…

    Linux干貨 2017-04-27
欧美性久久久久