文本全屏編輯器 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
下一篇 2016-08-15

相關推薦

  • 馬哥教育網絡班22期-第1周博客作業2

    date命令 date – print or set the system date and time 顯示或設置系統日期和時間 【SYNOPSIS】 date [OPTION]… [+FORMAT] 【OPTIONS】 -d:–date=STRING,顯示字符串所指的日期與時間, 而不是當前時間,字符串前后必須加上雙引號…

    Linux干貨 2016-08-15
  • Linux中設置磁盤配額和RAID

    第一篇:設置磁盤配額 綜述     ?在內核中執行     ?以文件系統為單位啟用     ?對不同組或者用戶的策略不同       根據塊或者節點進行限制         ?執行軟限制(soft limit)   &n…

    Linux干貨 2016-09-05
  • M22 Centos設置yum源方法

    實驗目的: 使用虛擬機模擬建立yum源服務器,在客戶機上指定yum源為該服務器。 實驗器材: WMware12安裝Centos6.8虛擬機作為yum服務源 WMware12安裝Centos7.3 作為客戶端訪問yum源服務器 實驗原理圖: 實驗過程: 服務器端: 1、  顯示已經掛載的光盤 #cd /misc/cd #先執行此命令才可以看到光盤掛載…

    2017-03-06
  • N21-北京-兔鍋-馬哥教育網絡班21期+第二周課程練習

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 A.wc命令: 功能:統計指定文件中的字節數、字數、行數,并將統計結果顯示輸出 語法:wc [選項]文件… 參數: -c:統計字節數。 -l:統計行數。 -m:統計字符數。這個標志不能與 -c 標志一起使用。 -w:統計字數。一個字被定義為…

    Linux干貨 2016-07-07
  • Linux磁盤管理詳解

    linux磁盤管理 添加磁盤步驟: fdisk 管理磁盤分區 格式化文件系統。 設備掛載 開機自動掛載 UUID掛載 取消掛載點 Parted(gpt大于2G分區) 查看文件系統的使用情況。 df 查看掛載信息與磁盤使用量 du 查看使用量 查看分區狀況lsblk 查看設備信息blkid linux磁盤管理 當全新安裝了一塊新的硬盤設備后,為了更充分、安全的…

    Linux干貨 2016-09-07
  • awk與systemd

    GNU awkGNU awk 文本處理三工具:grep,sed,awk    grep,egrep,fgrep:文本過濾工具    sed:行(流)編輯器    awk:報告生成器,格式化文本輸出 awk awk: Aho, Weinberger, Kerni…

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