vim文件編輯器

   vi命令是UNIX操作系統和類UNIX操作系統中最通用的全屏幕純文本編輯器。Linux中的vi編輯器叫vim,它是vi的增強版(vi Improved),與vi編輯器完全兼容,而且實現了很多增強功能。

vim功能十分強大,具有很多有優點:

  1. 所有的unix like系統都會內置vi文本編輯器,其他的文本編輯器則不一定會有

  2. 很多軟件的編輯接口都會主動調用vi (如:crontab,visudo等命令)

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

  4. 程序簡單,編輯速度快

vi的使用:

1、使用vim打開文件

語法: vim [OPTION]… FILE…

常用選項:

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

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

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

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

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

    vim -m file 只讀打開文件

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

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

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

2、vi打開文件后分為3種模式:

①命令(一般)模式②編輯(插入)模式③擴展命令行模式(末行模式)

三種模式有三種不同的使用方法:

①命令模式:

使用vi打開文件后直接進入命令模式(默認的模式),在這個模式中可以實現移動光標,剪切或刪除文本。

②編輯模式:

在命令模式中可以剪切刪除文本,但卻無法編輯文件內容,在命令模式中按"i,I,o,O,a,A"中任意一個鍵即可進入編輯模式,這時左下角會顯示INSERT字樣,即可編輯文本內容。編輯完成后按Esc鍵即可退回到命令模式

③擴展命令行模式:

在命令模式中,按“:,/,?”中任意一個鍵即可進入擴展命令行模式,這時光標將挪至最下面那一行,可供查找、替換字符,保存文本,退出等操作。

ESC鍵即可退出當前模式,

ESC,ESC總是返回到命令模式

模式轉換:

命令模式—->編輯模式

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

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

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

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

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

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

編輯模式—-> 命令模式

    ESC

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

    : , / , ?

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

    ESC

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

vim文件編輯器

命令模式相關操作:

光標跳轉:

  字符間跳轉:

    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:向文件首部翻半屏

字符編輯:

    x: 刪除光標處的字符;

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

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

    ~:轉換大小寫

替換命令(r, replace)

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

    R:切換成REPLACE(替換)模式

刪除命令:

x,X:在一行文字中x為向后刪除一個字符(相當于DEL鍵),X為向前刪除一個字符(相當于   backspace鍵)

nx: n為數字,連續向后刪除n個字符。

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

d$: 刪除到行尾

d^:刪除到非空行首

d0:刪除到行首

dd:刪除光標所在行

dw:向后刪除一個單詞,刪除至下個單詞的詞首(刪除包括詞后空格)

de:向后刪除一個單詞,刪除之至被刪除單詞的詞尾

db:向前刪除一個單詞

ndd:n為數字,刪除光標所在的向下n行,

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

復制命令(y, yank):

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

y$:復制至行尾

y0:復制至行首

y^:復制至非空行首

ye:復制至詞尾

yw:復制至下個單詞詞首(復制包括詞后空格)

yb:向前復制一個單詞

yy:復制整行

#yy:復制#行

粘貼命令(p, paste):

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

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

100iwang [ESC] :粘貼“wang”100次

改變命令(c, change)

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

    結合光標跳轉字符($,^,0,w,e,b)使用, 刪除跳轉范圍內的字符,然后進入編輯模式。

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

    #cc:刪除#行并輸入新的內容

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

區域修改

<start position><command><end position>

Command:

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

例如0y$ 命令意味著:

0 →先到行頭

y →從這里開始拷貝

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

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

撤消更改

u:撤銷最近的更改

#u:撤銷之前多次更改

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

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

. :重復前一個操作

n.:重復前一個操作n次


擴展命令行模式操作:

按“:”進入Ex模式

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

命令:

    w寫(存)磁盤文件

    wq寫入并退出

    x 寫入并退出

    q 退出

    q!不存盤退出,即使更改都將丟失

    r filename 讀文件內容到當前文件中

    w filename 將當前文件內容寫入另一個文件

    !command

    r!command

地址定界

:start_pos,end_pos

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

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

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

    :2,+3 表示2到5行

.: 當前行

$: 最后一行

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

%:全文, 相當于1,$

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

    #,/pat/:從第#行到匹配到模式直間

    /pat/,$:匹配到的模式到最后

使用方式:后跟一個編輯命令

    d:將匹配界定內的內容刪除

    y:復制界定內的內容

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

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

查找:

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

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

n:與命令同方向

N:與命令反方向

查找并替換

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

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

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

    替換為的內容:不能使用模式,但可以使用\1, \2, …等后向引用符號;還可以使用“&”引用前面查找時查找到的整個內容

    

修飾符:

    i: 忽略大小寫

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

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

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

    s@/etc@/var@g

    s#/boot#/#i

    

例:

1、復制/etc/profile至/tmp/目錄,用查找替換命令刪除/tmp/profile文件中的行首的空白字符

①cp /etc/profile /tmp

②vim /tmp/profile

③:鍵入擴展命令行模式,執行%s#^[[:space:]]\+##g

2、復制/etc/rc.d/init.d/functions文件至/tmp目錄,用查找替換命令為/tmp/functions的每行開頭為空白字符的行的行首添加一個#號

①cp /etc/rc.d/init.d/functions /tmp

②vim /tmp/functions

③:%s/^[[:space:]]/#&/g

   vim中有一個十分強大的功能,即vim寄存器,相當于與window中的剪切板,window中只有一個,但是vim中足足有27各,完全滿足用戶的各種復制剪切。

vim的寄存器

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

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

    如:3"tyy 表示復制3行到t寄存器中

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

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

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

編輯二進制文件

以二進制方式打開文件

    vim –b binaryfile

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

    :%!xxd

編輯二進制文件

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

    :%!xxd –r

保存退出

可視化模式

允許選擇的文本塊

    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, Arrow

單文件窗口分割:

    Ctrl+w,s: split, 水平分割

    Ctrl+w,v: vertical, 垂直分割

    ctrl+w,q:取消相鄰窗口

    ctrl+w,o:取消全部窗口

    :wqall退出

為了平時學習工作的便利也可定制適合自己的vim

定制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 (vimonly)

    :set wrapmargin=15

:help option-list

:setor:set all

vi/vim內置幫助

:help

:helptopic

Use:qto exit help

vim自帶的練習教程:vimtutor

例:

1、如何設置tab縮進為4個字符?

set tabstop=4,簡寫set ts=4.

永久生效需寫入配置文件/etc/vimrc或~/.vimrc

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

①cp /etc/rc.d/init.d/functions /tmp

②vim /tmp/functions

③%s@/etc/sysconfig/init@/var/log@g

vim文件編輯器vim文件編輯器

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

:%s@\(^#\)\([[:space:]]\+\)@\2@g

vim文件編輯器

vim文件編輯器

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

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

相關推薦

  • Mysql備份III

    Mysql備份III Mysqldump和mysqldumper A備份和恢復所有庫 $ time mysqldumo –all-databases > /mysql/backup/date.time.database.dump.sql $ echo $? $ ls&nbs…

    Linux干貨 2016-06-09
  • 第一周博客作業

    前言:這幾周的課程大部分開班前就掌握了的,這次學的細一點,順便學一下markdown寫博客、排版。內容有部分是前幾期學員寫的,覺得寫得不錯,就斗膽截取了,還有部分是自己寫的,也有一些是百度到的內容。 目錄 一、描述計算機的組成及其功能 二、linux發行版 三、linux哲學思想 四、常用命令 五、如何獲取命令的幫助信息 六、linux發行版的基礎目錄名稱命…

    Linux干貨 2017-01-09
  • GRUB詳解

    GRUB的啟動流程: grub: 在centos56中:0.X版本 grub legacy 在centos7中:1.X版本  grub2 grub可分為三個階段: stage1:mbr前446字節中保存的Boot Loader程序 stage1.5:mbr之后的扇區,讓stage1中的Boot Loader能夠識別stage2所在的分區上的文件系統…

    Linux干貨 2016-09-13
  • 變量

    變量     在shell腳本中,單獨的字符或者命令只能引用一次,對于變量,我們可以多次引用,且對變量的賦值修改方便。對于一條很長的命令或者頻繁使用的路徑等,我們可以賦值給一個變量,比如獲得系統中所有用戶的uid,要輸入很長的一段命令,我們如果每次使用都輸入命令是件很麻煩的事情,如果賦值變量,那么就會很方便。設置變量userui…

    Linux干貨 2017-08-06
  • 馬哥教育21期網絡班—第8周課程+練習—-成長進行時–不退步

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 網橋:一種網路裝置,負責網路橋接,將網絡的多個網段在數據鏈路層連接起來。 集線器:將多條以太網線或光纖集合連接在同一段物理介質下的裝置。工作在物理層。 二層交換機:工作在數據鏈路層,交換機內部的CPU會在每個端口成功連接時,通過將MAC地址和端口對應,形成一張MAC表。在今后的通…

    Linux干貨 2016-08-24
  • 創建CA

    創建CA和申請證書 創建私有CA: 首先在CA服務器端創建CA。 先去看openssl的配置文件: /etc/pki/tls/openssl.cnf 一般我們不會去更改這個配置文件,但是要去看一下。我們是根據這個文件創建的CA. 這個文件里是openssl的配置文件,我們打開后只觀察與CA有關的文件。   在文本中可以看出一個主機中可以有多個CA,…

    2017-07-28
欧美性久久久久