vi

1、關於vimvim

一個功能十分強大的文本編輯器,在Linux中使用十分普遍。windows

2、Vim三種主要模式
2.1命令模式app

命令模式是vim的默認模式,在該模式下,用戶能夠經過鍵盤,實現移動光標,剪切、粘貼文本等操做。編輯器

2.2插入模式(編輯模式)ide

在插入模式下,用戶能夠對文本進行修改。unix

2.3擴展命令模式code

在該模式下,用戶能夠實現對文件的保存、退出等操做。orm

2.4模式之間相互轉換it

命令模式進入插入模式:按「i,I,o,O,a,A」鍵(詳見6.1)io

命令模式進入擴展命令模式:按「:」鍵

插入模式返回命令模式:按「esc」鍵

擴展命令模式返回命令模式:按兩次「esc」鍵或者「enter」鍵

3、打開文件

咱們在使用vim打開一個文件時,若是這個文件時已存在的,咱們能夠打開瀏覽或修改;若是這個文件不存在,vim會在第一次存盤時建立它。

命令:vim

格式:vim [OPTION]... FILE...

選項: +# 文件打開後,光標處於第#行行首。(+默認最後一行行首)

+/ PATTERN  文件打開後,光標處於第一個被PATTERN匹配到的行的行首

          -b  二進制方式打開文件

          -m  只讀方式打開文件

          -d file1 file2  同時打開多個文件(切割窗口)

          -e  直接進入擴展命令模式

4、關閉文件

4.1擴展命令模式:

:q    退出

        :q!    強制退出,放棄作出的修改

        :wq  保存並退出

        :x    保存並退出

注:wq!或x! 當文件對當前用戶權限爲read-only時,能夠強制保存並退出(僅限root和當前文件的owner)

4.2命令模式:

ZZ        保存並退出

        ZQ        不保存直接退出

不建議使用該方法,通常建議使用擴展命令模式下的關閉方法

5、光標移動

5.1字符間跳轉

h:左 j:下 k:上 l:右

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

5.2單詞間跳轉

w:下一個單詞的詞首

e:在詞首或詞中時,跳轉當前詞尾;在詞尾時,跳轉下一單詞的詞尾

b:在詞中或詞尾時,跳轉當前詞首;在詞首時,跳轉前一單詞的詞首

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

5.3當前頁跳轉

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

5.4行首行位跳轉

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

0: 跳轉至行首

$: 跳轉至行尾

5.5行間移動

擴展命令模式下:

:跳轉至由#指定行

G:最後一行

1G, gg: 第一行

5.6句間移動

):下一句 (:上一句

5.7段落間移動

}:下一段 {:上一段

5.8翻屏操做

命令模式下:

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

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

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

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

6、文本插入

6.1插入模式下:

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

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

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

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

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

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

6.2替換命令(命令模式下):

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

R:切換成擴展命令模式

7、剪切、複製和粘貼(命令模式下)

7.1剪切命令(刪除)

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

d$:刪除到行尾

d^:刪除到非空行首

d0:刪除到行首

dw:刪除到下一個單詞的詞首

de:光標位於詞首或詞中時,刪除到該單詞詞尾;光標位於詞尾時,刪除到下一個單詞的詞尾

db:光標位於詞尾或詞中時,刪除到該單詞的詞首;光標位於詞首時,刪除到前一個單詞的詞首

#COMMAND 加上hjkl方向箭向左時不包含當前字符。

dd:刪除光標所在的行

#dd:多行刪除(刪除光標所在行開始的共#行)

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

dG 從光標所在處的當前行刪除到尾行

dgg 從光標所在處刪除至首行

dH 從光標所在處刪除到當前頁的首行

dL 從光標所在處刪除到當前頁的尾行

dM 從光標所在處刪除到當前頁的中間行

7.2複製命令(y,yank)

y:複製,行爲類似與d命令

    y$:光標所在位置複製到行尾

    y0:光標所在位置複製到行首

    y^:光標所在位置複製到行首第一個非空字符

    ye:若光標在詞首,複製當前單詞;若光標在詞中或詞尾,複製到下一個單詞詞尾

    yw:光標所在處複製到該單詞詞尾

    yb:若光標在詞中或詞尾,複製當前單詞;若光標在詞首,複製到前一個單詞的詞首

        #COMMAND

            yy:複製行    #yy: 複製多行    Y: 複製整行

        一樣支持與G,gg,H,M,L配合。

7.3粘貼命令(p,paste)

p:緩衝區存的若是爲整行,則粘貼當前光標所在行的下方;不然,則粘貼至當前光標所在處的後面

P:緩衝區存的若是爲整行,則粘貼當前光標所在行的上方;不然,則粘貼至當前光標所在處的前面

7.4撤銷更改

u撤銷最近的更改

#u撤銷以前屢次更改

U 撤消光標落在這行後全部此行的更改

按Ctrl - r重作最後的「撤消」更改

. 重複前一個操做

n.重複前一個操做n次

注:複製粘貼都可使用地址定界,詳細見13.2

8、查找與替換(擴展命令模式)

8.1查找

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

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

n:與命令同方向

N:與命令反方向

8.2替換

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

Eg:把全部的root替換成log  —>  %s/root/log/g

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

替換爲的內容:不能使用模式,但可使用\1, \2, ...

等後向引用符號;還可使用「&」引用前面查找時查找到的整個內容

注:命令首加上%表明搜索文件所有內容,若是不加%,則表示只搜索光標所在行。

關於修飾符:

i: 忽略大小寫

g: 全局替換(默認狀況下,每一行只替換第一次出現的)

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

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

s@/etc@/var@g

9、可視化模式(命令模式下)

容許選擇的文本塊

v 面向字符

V 面向行

ctrl-v 面向塊

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

w ) } 箭頭等

突出顯示的文字可被刪除,複製,變動,過濾,搜索,替換等

10、窗口分隔

10.1多文件模式

Vim能夠同時打開多個文件進行比較操做

格式: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 退出

11、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) 文件格式

啓用windows格式: set fileformat=dos

啓用unix格式: set fileformat=unix

(8) 配置文本寬度

:set textwidth=65 (vim only)

:set wrapmargin=15

:help option-list

:set or :set all

12、vim幫助

vi/vim內置幫助

:help

:help topic

Use :q to exit help

Vimtutor

十3、補充擴展

13.1以二進制方式打開文件

vim –b binaryfile

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

:%!xxd

編輯二進制文件

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

:%!xxd –r

保存退出

13.2地址定界(擴展命令模式下)

格式::start_pos,end_pos

舉例:

:2 表示限定第二行

    :2,5表示從第二行到第五行

    :2,+3 表示從第二行開始,加上向後的三行

    :. 表示當前行

    :$ 表示最後一行

    :.,$-1表示從當前行到倒數第二行

    :%表示全局

    :/root/,$-10d 從有root的行刪除到倒數第十行

13.3命令模式擴展

若是咱們想在一個文件裏不換行的插入100次hello,只須要輸入下面的命令便可實現:100ihello [ESC]。

還有一些其餘的命令組合:

命令:

y:複製d:刪除gu:變小寫 gU:變大寫

格式:

StartcommandEnd

例子:

gg2yyp 在文首複製兩行並粘貼到光標所在行下

gg:回到首行

    2yy:複製兩行

    p:粘貼在光標所在行的下一行
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息