菜鳥眼中的vim 編譯器

Vi(Visual Interface) 是一種文本編輯器,常見的文本編譯器有ASCII編碼,UNICODE編碼等。Vim即vi improved :是vi的增強版,vim是模式化的編輯。

vim在工作中有3種模式:

-編輯模式:也叫命令模式,:默認模式,移動光標,剪切/粘貼文本;

-插入模式:在文本文件當中進行輸入內容;

-末行模式:vim內置的命令接口,執行vim的內置命令,保存,退出等

如下圖所示:

1240

文字解釋三者之間的模式轉換:

命令–>插入:

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

I:在當前光標所在行的行首,轉換爲輸入模式

A:在當前光標所在行的行尾,轉換爲輸入模式

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

o: 在當前光標所在行的下方,新建一行,並轉爲輸入模式;

O:在當前光標所在行的上方,新建一行,並轉爲輸入模式;

插入–>命令:

ESC

命令–>擴展:

:

擴展–>命令:

ESC,Enter

注意:插入模式和擴展命令模式之間不能直接切換。

EX:使用Esc2次或enter回到命令模式,將沒有:

q退出

q!強制退出

w保存

wq或x保存並退出

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

打開文件

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

vim +:打開文件,定位至最後一行,默認行尾

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

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

–d file1 file2… 比較多個文件

-m file 只讀打開文件

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

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

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

關閉文件

1、擴展模式關閉文件

:q 退出

:wq 保存並退出

:q! 不保存並退出

:w 保存

:w! 強行保存

:wq! 強行保存退出

2、命令模式下退出

ZZ: 保存並退出

ZQ:不保存退出

移動光標(編輯模式)

1、逐字符移動:

h: 左

l: 右

j: 下

k: 上

#h: 表示移動#個字符

2、以單詞爲單位移動

w: 移至下一個單詞的詞首

e: 跳至當前或下一個單詞的詞尾

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

#w: 表示移動#個單詞

3、行內跳轉:

0: 絕對行首

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

$: 絕對行尾

4、行間跳轉

#G:跳轉至第#行

gg: 第一行

G:最後一行

5、當前頁跳轉:

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

## vim編輯命令 ##

1、翻屏

Ctrl+f: 向下翻一屏

Ctrl+b: 向上翻一屏

Ctrl+d: 向下翻半屏

Ctrl+u: 向上翻半屏

2、刪除單個字符

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

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

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

刪除命令: d

d命令跟跳轉命令組合使用

d$: 刪除到行尾

d^:刪除到非空行首

d0:刪除到行首

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

de:刪除跳至當前或下一個單詞的詞尾

db:刪除跳至當前或前一個單詞的詞首

dd: 刪除當前光標所在行

dd: 刪除包括當前光標所在行在內的#行;

粘貼命令 p

p: 如果刪除或複製爲整行內容,則粘貼至光標所在行的下方,如果複製或刪除的內容爲非整行,則粘貼至光標所在字符的後面

P: 如果刪除或複製爲整行內容,則粘貼至光標所在行的上方,如果複製或刪除的內容爲非整行,則粘貼至光標所在字符的前面

複製命令 y

用法同d命令

#yy: 複製多行

Y: 複製整行

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

c: 用法同d命令

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

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

撤消編輯操作 u

u:撤消前一次的編輯操作

#u: 直接撤消最近#次編輯操作

連續u命令可撤消此前的n次編輯操作

撤消最近一次撤消操作:Ctrl+r

## 擴展模式 ##

1、內容界定

.: 表示當前行

:最後一行.,-1 當前行到倒數第二行

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

+#: 從左側#表示的起始行,加上右側#表示的行數 如:2,+3 表示2到5行

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

% 全文, 相當於1,$

2、查找

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

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

n 與命令同方向

N 與命令反方向

查找並替換

在末行模式下使用s命令

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

修飾符:

i: 忽略大小寫

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

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

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

s@/etc@/var@g

s#/boot#/#i

多文件模式

使用vim編輯多個文件

vim FILE1 FILE2 FILE3

:next 切換至下一個文件

:prev 切換至前一個文件

:last 切換至最後一個文件

:first 切換至第一個文件

:q退出當前文件

:wall 保存所有

:qall 退出所有

:wqall保存所有文件並退出

## 多窗口模式 ##

分屏顯示一個文件

Ctrl+w, s: 水平拆分窗口

Ctrl+w, v: 垂直拆分窗口

在窗口間切換光標:

Ctrl+w, ARROW(h,j,k,l或方向鍵)

:qa 關閉所有窗口

分窗口編輯多個文件

vim -o : 水平分割顯示

vim -O : 垂直分割顯示

q 能退出多窗口模式

/pat1/,/pat2/

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

pat2匹配到的行結束

#,/pat/ :從第#行開始到第一次匹配到pat爲止

/pat/,$:從第一次匹配到pat到最後一行

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

d(刪除)

y(複製)

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

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

高級話題

1、顯示或取消顯示行號

:set nu

:set nonu

nu = number

2、顯示忽略或區分字符大小寫

:set ic

:set noic

ic = ignorecase

3、設定自動縮進

:set ai

:set noai

ai = autoindent

4、查找到的文本高亮顯示或取消

:set hlsearch

:set nohlsearch

5、語法高亮

:syntax on

:syntax off

注意:特性當前有效,如果想要永久有效需修改配置文件

配置文件定義:

/etc/vimrc 針對所有用戶

~/.vimrc 針對當前用戶

課堂練習

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

%s/^[[:blank:]]+//g

思路:

查找內容爲空白字符爲首要加^,替換內容爲空白,g表示全局替換。

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

%s/^[[:spacge:]]/# /g

或%s/^([[:space:]])/#\1/g

或%s/^[[:space:]]/#&/

思路:第二種方法使用了後向引用,\1表示引用[[:space:]],#號後都爲空白字符。第三種方法中&相當於前面的空白字符。

3、複製/etc/rc.d/init.d/functions文件至/tmp目錄,替換/tmp/functions文件中的/etc/sysconfig/init爲/var/log

%s/\/etc/sysconfig/init/\/viar/log/gi

思路:這裏的\表示轉義,gi表示全局替換,忽略大小寫

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

%s/^#[[:space:]]{1,}//g

思路:\{1,\}表示匹配前面命令至少1次,查找內容爲:^#[[:space:]]\{1,\},替換內容:要刪除所以爲空。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章