11 vim文本編輯器

  和sed相比,sed爲字處理器(行編輯器),將文本逐行放入到模式空間(也就是內存)中進行處理,並顯示在屏幕上。而vim、vi以及nano都是全屏文本編輯器,而vim則是vi的增強版本,相對於vi,vim則擁有特殊字符着色的功能,也是最爲經常使用的功能;正則表達式

  本節咱們重點介紹vim編輯器的常見用法;shell

vim文本編輯器詳解

  *Linux系統的核心就是經過文原本存儲全部的軟件配置文件*,因此,可以熟練的掌握文本編輯器對於學習Linux系統而言是相當重要的。vim

  vim編輯器做爲vi編輯器的升級版,它將伴隨咱們學習Linux系統的整個過程!bash

  vi:Visual interface可視化接口;less

  vim:VI iMproved vi的加強版;【vim編輯器實現是語法自動着色,方便咱們判斷本身縮寫的語句是否正確】編輯器

vim的模式

  vim編輯器分爲三種模式(這點和vi編輯器相同),編輯模式(命令模式),輸入模式,末行模式學習

  在咱們經過vim進入文本的時候,默認處於編輯模式。spa

  模式切換:3d

    編輯模式 -> 輸入模式server

      i  在當前光標所在字符的前面,進入輸入模式;

        a  在當前光標所在字符的後面,進入輸入模式;

      o  在當前光標所在行的下面重啓一行,進入輸入模式;

      I  在當前光標所在行的行首,進入到輸入模式(自動將光標移動到當前行行首);

      A  在當前光標所在行的行尾,進入到輸入模式(自動將光標移動到當前行行尾);

      O  在光標所在字符的上一行,轉換爲輸入模式(和 o 正好相反);

    輸入模式 -> 編輯模式

      ESC鍵

    編輯模式 ->末行模式

      輸入 「:」 便可

      在輸入模式下能夠關聯vim的相關命令對文本進行編輯,或者切換光標位置:

      例如:5d  #刪除第5行

           10,20d  #刪除第10行到20行,總共刪除11行

           set nu  #顯示行號

           ! ls /etc  #在vim下關聯shell命令

      【以上操做都是咱們比較經常使用的操做】

   末行模式 -> 編輯模式

      ESC鍵

   【三種模式之間的切換要注意一點:輸入模式不能和末行模式之間直接切換,必須經過編輯模式來進行切換!】

    模式切換總結以下圖:

 

vim下的常見操做

1、文本打開方式

  首先  vim /path/FILE  能夠直接打開文件;

  特殊使用方式:

    vim +數字 /path/FILE  能夠打開文件,且直接將光標定義在數值指定的行;

    vim + /path/FILE  打開文件,將光標處在文件的末尾;

    vim +/string /path/FILE  打開文件,且將光標定義在string字符串處,相似於查找功能;

 

2、文本關閉方式

  一、常見關閉文本都是在末行模式下進行

    :q  表示退出文本,不保存;

    :wq  保存並退出文本;

    :q!  若是修改了文本,不想保存,則經過 :q! 來強制退出文本;

    :w  只保存,不退出文本;

    :w!  強制保存文本,這個權限只有管理員root才擁有;

  二、在編輯模式(命令模式)下退出文本

    ctrl+z  退出文本,可是不保存

    ZZ  保存並退出文本

 

3、光標移動

  注意:如下操做均處於編輯模式(命令模式)下運行;

  一、逐字符的移動光標:

    j 下

    k 上

    h 左

    l 右

    【這個「上下左右」要更加好於鍵盤的「上下左右」,它更加的方便】

    結合數字來使用,既能夠同時移動多行,例如:5j  向下移動5行;6l  向右移動6個字符;

  二、按照單詞爲單位來移動光標

    w  光標處於單詞首部,以單詞爲單位向後移動

    e  光標處於單詞尾部,以單詞爲單位向後移動

    b  光標處於單詞首部,以單詞爲單位向前移動

    同理,能夠結合數字來使用:5e  向後移動5個單詞位;10b  向前移動10個單詞位;

  三、行內跳轉

    0  表示跳轉到行首(不包含製表符)

    ^  表示跳轉到絕對的行首

    $  表示跳轉到行尾

  四、行間跳轉

    數字G  指定跳轉到那個固定行,例如:5G  表示跳轉到第5行;

    G  若是不加數字,則是直接跳轉到最後一行;

    【末行模式下,也能夠進行行間跳轉;例如: 「:5」 表示跳轉到第5行;】

 

4、翻屏

  編輯模式下:

  ctrl+f  向下翻一屏

  ctrl+b  向上翻一屏

  ctrl+d  向下翻半屏

  ctrl+u  向上翻半屏

 

5、刪除操做

  刪除單個字符

    x  刪除光標所處的單個字符;

    數字x  和以前移動光標原理相同,能夠刪除「數字」個字符;例如:5x  刪除5個字符;

  刪除命令--d

    dw  刪除光標所在的那個單詞;

    數字dw  刪除「數字」個單詞,從當前光標開始算起;

    dd  刪除當前行;

    【在末行模式下,能夠刪除多行「:StartADD,EndADDd」刪除startadd到endadd行;這裏記住一個特殊符號:. (點,表示當前行),例如: :.,$-3d  這表示刪除當前行到倒數第4行之間的全部內容;若是說要刪除刪除當前行到向下數十行的內容呢? :.,+10d 其中,+ 號表示向下多少行的意思,+多少,就是向下多少行】

    【vim下刪除內容的時候要注意:刪除的內容不會被馬上清除,還能夠恢復刪除的內容,最近一次刪除的內容能夠複製或者剪切到其餘的地方,經過p命令粘貼到別的地方】

 

6、複製--y

  複製的用法基本與刪除用法相同

  其中  yy  複製當前行使用最爲多;

  數字y  表示複製從當前光標單詞算起,複製多少個單詞;5y  複製5個單詞;

 

7、粘貼--p和P

  P:若是刪除或複製的內容爲整行的內容,則粘貼至光標所在行的上方,若是複製或刪除的內容爲非整行內容,則粘貼在光標的前方;

  p:若是刪除或複製的內容爲整行的內容,則粘貼至光標所在行的下方,若是複製或刪除的內容爲非整行內容,則粘貼在光標的後方;

 

8、修改--c

  先刪除掉內容,再轉換爲輸入模式:

  cc  刪除當前行後,直接進入輸入模式進行編輯;

  c$  刪除當前光標到末行的內容,在直接轉入到輸入模式進行編輯;

  【cc 和 c$ 是比較常見的兩種用法】

 

9、替換--r

  替換操做通常用於單個字符的操做:

  r字符或數字  將光標所在字符替換爲輸入的字符或數字;

 

10、撤銷--u

  u  撤銷前一次的操做,連續橋u命令,則是撤銷此前的n次操做;默認狀況下最多撤銷前50次操做;

  數字u  直接撤銷前「數字」次操做;例如,5u  撤銷前5次的操做;

  【取消最近一次撤銷的操做則爲 ctrl+r】

 

11、重複前一次的操做--.

  .  (點)這個符號就表示重複上一次的編輯操做

  例如:dd  刪除了當前行,此時一致敲 . 則表示重複 dd 的命令;

 

12、可視化模式(標記內容)--v和V

  進入但是化模式,經過移動光標來選擇要編輯的內容;

  v  表示按照字符來選取內容

  V  表示按照行來選取內容

  選擇了對應的內容之後,再進行復制,刪除等等操做;

 

十3、查找,以及查找並替換

  查找:

    這個內容則和less命令的相似,就不在多說

  /PATTERN 從前面日後面找
  ?PATTERN 從後面往前面找
  【支持正則表達式】
  n 下一個
  N 上一個

  查找並替換:

    查找到對應的內容後,能夠進行替換操做,這裏和sed名的格式有點相似:

    ADDR1,ADDR2s@pattedn@string@gi  #其中ADDR1,ADDR2表示要替換的範圍,s能夠理解爲sed命令,pattern選擇出要替換的字符串,替換爲後面的string,最後g表示全局替換,而i則表示不區分大小寫

    例如: :.,$-1s@he@HE@g  #從當前行到倒數第二行,中的he所有替換爲HE

    【1,$表示全文範圍,也能夠經過%來表示全文範圍】

 

  練習:將/etc/yum.repos.d/server.rpo文件中的ftp://instructor.example.com/pub替換爲http://172.16.0.1/yum

  vim /etc/yum.repos.d/server.rpo

  :%s@ftp://inistructor\.example\.com/pub@http://172.16.0.1/yum@g

 

十4、同時編輯多個文件

  vim是能夠支持跨文件編輯的(例如,將file1中的內容複製粘貼到file2中去)

  vim FILE1 FILE2 FIEL3  #在vim後面接上多個文件的時候,其實是打開了FILE1,FILE2,FILE3三個文件,可是顯示只顯示了FILE1的內容。

  在末行模式下:

    :next  切換到FILE2或後者其餘文件

    :prev  切回到FILE1或則前面的文件

    :last  切換到最後一個文件

    :first  切換到第一個文件

    :q  只能退出當前文件,若是想退出全部文件,則須要使用

    :qa  退出全部文件

 

十5、分屏顯示同一個文件--ctrl+w [s|v] 或者 -[o|O]

  上面咱們說到了同時打開多個文件,可是不在同一個屏幕上面顯示,如何才能讓屏幕同時顯示多個文件呢?

  ctrl+w鬆開後,再按s  水平分割窗口  

    vim -o FILE1 FILE2

  ctrl+w鬆開後,再按v  垂直分割窗口  

    vim -O FILE1 FILE2  

  ctrl+w鬆開後,再按w或是小鍵盤上下左右  切換光標所在文件

 

十6、將當前文件中部份內容另存到另一個文件中--w

  在末行模式下進行操做:

  例如: :.,+5w /path/somefile  #保存當前文件光標所在行,到接下來5行的內容保存到另一個/path/somefile文件中去;

 

十7、將另一個文件的內容填充到當前文件中--r

  在末行模式下進行操做:

  例如: :r /etc/inittab  #將/etc/inittab文件的內容填充到當前文件光標所在的地方;

 

十9、調用shell腳本程序(調用命令)--!

  在末行模式下進行操做:

  例如: :! ls /etc  #這樣就能夠直接在vim編輯器中去運行ls /etc的命令;

 

二10、高級操做

  一、顯示或取消行號

    :set number  也就是簡寫爲 :set nu

    :set nonu  取消行號

    【默認狀況下是沒有行號的,咱們所若是想默認進來就看到行號,就必須去修改vim的配置文件】

  二、是否忽略大小寫

    :set ignorecase  也就是簡寫爲 :set ic

    :set noignorecase

  三、設置自動縮進功能

    默認狀況下回車後是沒有縮進的

    :set autoindent  也就是簡寫爲 :set ai 

    :set nohlsearch

  四、查找到的文本的高亮顯示與取消

    語言着色功能,默認開啓(也叫作高亮顯示)

    :set hlsearch

    :set nohlsearch  #關閉高亮顯示

  五、語法着色功能(vim默認開啓)

    :syntax on

    :syntax off  #關閉語法着色功能

 

二11、vim的配置文件

  /etc/vimrc  #爲全部shell下的主配置文件,修改這裏的配置文件,則在全部bash程序下生效;

  ~/.vimrc  #各個用戶的家目錄下去編輯這個文件(沒有的能夠本身建立),則只在本bash進程下,對vim的編輯才生效

vim導師(vim的幫助文件)

  vimtutor  #vim編輯器的教程,這裏有心的朋友能夠本身慢慢去看;

vim編輯文件時非法退出時遇到的問題

  若是在你編輯文件的時候,忽然關閉了該shell程序,並非經過 :q 或者 ZZ 正常退出的文件,則會在當前被編輯文件的同一個目錄下生成  .swp  的隱藏文件文件;

  當你再次想編輯這個文件時候則提示以下:

  這裏提示您上次在 dated 時間的時候進行過編輯,您是否繼續編輯;

  O表示打開該文件,可是隻讀,E表示編輯這個文件,R表示覆蓋這個文件從新編輯,D則是刪除上次編輯的內容,從新再進行編輯,A則是表示退出並終止;

  此時,咱們只須要按E進去正常保存,這樣咱們以前編輯的內容就不會丟失,再刪除掉  .swp 的隱藏文件便可;

相關文章
相關標籤/搜索