Vim編輯工具用法的總結

描述:

   Vim是一款強大的命令行界面的文本編輯器,是vi的高級版本,先說下學習它的原因:

 1,所有的UNIX Like 系統都會內置vi文本編輯器,其他的文本編輯器則不一定會存在;

 2,很多軟件的編輯接口都會主動調用vi

 3,vim具有程序編輯的能力,可以主動以字體顏色辨別語法的正確性,方便程序設計;

 4,程序簡單,編輯速度相當快速

說明:

    vim共有3種模式:命令模式、編輯模式、命令擴展模式,三者之間的關系如下:

clipboard (4).png

用法:

    語法格式vim  [OPTION]… FILE…

1,打開文件的方式

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

   +/ PATTERN : 打開文件后,直接讓光標處于第一個被

   PATTERN  匹配到的行的行首

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

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

   vim d file1 file2…  比較多個文件

   vim -m file   只讀打開文件

          ex file 或 或 vim e 直接進入ex 模式

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

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

2,模式轉換:

   命令模式 –>  插入模式

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

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

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

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

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

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

 

   插入模式 —->  命令模式

         ESC

   命令模式 —->  擴展模式

          :

   擴展式模式 —->  命令模式

           ESC

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

3,關閉和保存文件:

          在擴展命令模式下

           :q  退出

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

   :wq  保存退出

   :x  保存退出

   命令模式下

   ZZ:  保存退出

   ZQ: 不保存退出

4,命令模式實現光標跳轉:

   字符間跳轉:

 h: 左   l: 右   j: 下   k:

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

   單詞間跳轉:

 w :下一個單詞的詞首

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

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

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

   當前頁跳轉:

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

    行首行尾跳轉:

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

 0:  跳轉至行首

 $:  跳轉至行尾

    行間移動:

 #G 、擴展 模式:#  :跳轉至由# 指定行

 G :最后一行

 1G, gg:  第一行

    句間移動:

  ) :下一句 ( :上一句

    段落間移動:

  }: 下一段 {:上一段

5,命令模式翻屏操作:

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

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

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

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

6,命令模式操作:

  字符編輯:

 x: 刪除光標處的字符;

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

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

 ~: 轉換大小寫

  

   替換命令(r, replace)

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

 R: 切換成REPLACE

   刪除命令:

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

 d$: 刪除到行尾

 d^: 刪除到非空行首

 d0: 刪除到行首

 dd: 刪除光標所在的行

 #dd:多行刪除

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

   

   復制命令(y, yank)

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

 y$:復制到行尾

 y0:復制到行首

 y^:復制到非空行首

 yy :復制行

 #yy: 復制多行

 Y:  復制整行

   粘貼命令(p, paste): :

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

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

   

   改變命令(c, change)

 c: 修改后切換成插入模式

  命令模式 –>  插入模式

 c$:從光標所在處起刪除到行尾并進入插入模式

 c^:從光標所在處起刪除到非空行首并進入插入模式

 c0:從光標所在處起刪除到行首并進入插入模式

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

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

 100iCentos[ESC]  粘貼“Centos100

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

  例如 0y$  命令意味著:

 0 → →  先到行頭

 y → →  從這里開始拷貝

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

 ye  從當前位置拷貝到本單詞的最后一個字符

7,擴展模式:

  地址定界:start_pos,end_pos

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

 #,#:  從左側# 表示行起始,到右側# 表示行結尾

 #,+#:  從左側# 表示的行起始,加上右側# 表示的行數

 :2,+3 表示2 5

 .:  當前行

 $:  最后一行

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

 % :全文,  相當于1,$

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

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

 r file:在指定位置插入指定文件中的所有內容

  

   查找

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

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

 n :與命令同方向

 N :與命令反方向

   查找并替換

    s:  在擴展模式下完成查找替換操作

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

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

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

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

   修飾符:

 i: 忽略大小寫

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

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

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

  s@/etc@/var@g

  s#/boot#/#i

示例:

1,復制/etc/rc.d/init.d/functions 文件至/tmp 目錄;替換/tmp/functions 文件中的/etc/sysconfig/init /var/log

clipboard.png

clipboard (1).png

2,刪除/tmp/functions 文件中所有以# 開頭,且# 后面至少有一個空白字符的行的行首的#

clipboard (2).png

clipboard (3).png

   命令模式:撤消更改

 u 撤銷最近的更改

 #u 撤銷之前多次更改

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

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

 .  重復前一個操作

 n. 重復前一個操作n


8,編輯二進制文件:

 以二進制方式打開文件

  vim b binaryfile

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

  :%!xxd

 編輯二進制文件

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

  :%!xxd r

9,可視化模式:

 允許選擇的文本塊 v

  面向字符 V

  面向行

  ctrl-v  面向塊

  可視化鍵可用于與移動鍵結合使用:

  w ,

  , ) )  ,

  }

  ,箭頭等

 突出顯示的文字可以被刪除,復制,變更,過濾,搜索 / 替換

 

10,多文件模式:

 vim FILE1 FILE2 FILE3 …

 :next  下一個

 :prev  前一個

 :first  第一個

 :last  最后一個

 :wall  保存所有

 :qall  退出所有

 :wqall  保存所有并退出


 使用多個“窗口”

 多文件分割:

 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)  括號成對匹配

   匹配: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)

   :set wrapmargin=15

   :help option-list

   :set or :set all

  (9)vi/vim 內置幫助

    :help

    help topic

    use :q to exit help

    Vimtutor


總結:

1,根據以上用法,繪制了如下Vim 常用命令示意圖,可以更快速地查詢到需要的功能

111111111.png




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

(0)
pingskypingsky
上一篇 2016-08-11
下一篇 2016-08-11

相關推薦

  • Linux的發展史

    Linux的誕生 1987年荷蘭阿姆斯特丹Vrije大學的Andrew S.Tanenbaum 教授為了讓學生們更了解操作系統而參照Unix系統編寫了Minix系統。在1988年芬蘭赫爾辛基大學迎來了一位新生Linus Benedict Torvalds ,他在學習了Minix系統后,以此為平臺和指導開發出了Linux。在1991年8月Linus Toval…

    Linux干貨 2016-10-19
  • shell腳本練習

    習題1:打印99乘法表 #!/bin/bash # for ((j=1;j<=9;j++)) do for ((i=1;i<=j;i++)) do echo -e -n “${i}x${j}=$[${i}*${j}]\t” done echo done 習題2:寫一個腳本(1)創建目錄/tmp/dir-當前日期時間;例如/tmp/dir-2015…

    Linux干貨 2017-05-22
  • 自動化運維跟安全配置

    安全相關工具rpm -qf /usr/bin/sshopenssh semanage port -a -t ssh_port_t -p tcp #PORTNUMBER/端口9527修改ssh的默認端口,ssh默認只能用22端口多臺主機互聯免口令1 ssh-keygen三臺主機各自生成私鑰公鑰2 ssh-copy-id IP7三臺主機各自復制公鑰到同一臺主機3…

    2018-02-06
  • CentOS、RHEL及Linux的關系

    什么是Linux?    Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基于POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的UNIX工具軟件、應用程序和網絡協議。它支持32位和64位硬件。Linux繼承了Unix以網絡為核心的設計思想,是一個性能穩定的多用戶網絡操作系統。Linux存在著…

    Linux干貨 2016-01-14
  • 正則表達式的如何使用

    簡述:正則表達式主要用于文本的搜索,它表示了搜索文本的過濾條件。根據這些條件,對目標文本朱行進行匹配檢查,最后對輸出匹配到符合過濾條件的行。 使用:正確高效的使用正則表達式,需要掌握以下基本知識點         1:語法 grep [OPTION] PATTERN FILE……

    Linux干貨 2017-06-04
  • Basic認證

    basic認證: (1) 定義安全域 [root@bluee htdocs]# mkdir admin [root@bluee htdocs]# vim admin/index.html 刷新瀏覽器,可以看到admin/index.html文件內容“Page FOR Adminstration” 編輯配置文件: 找個位置增加一個Directoty: <…

    Linux干貨 2016-08-05
欧美性久久久久