Linux系統上的vim編輯器

vim編輯器作爲Linux系統上的文本處理工具三劍客之一,被廣大運維小夥伴所喜愛,馬哥稱之爲“尤物”的編輯器。下面簡單介紹一下vim編輯器。


    文本編輯器:

文本:純文本,ASCII text;


    文本編輯種類:

行編輯器:所謂行編輯器是指一行一行來處理的工具,如sed

全屏編輯器:編輯空間佔據整個屏幕,如nano,vi


vi:Visual Interface

vim:Vi IMproved,是vi的增強版,vim是模塊化的編輯


    其他編輯器:

gedit:一個簡單的圖片編輯器

gvim:一個vim編輯器的圖形版本


vim:

模式化的編輯器


基本模式:

命令模式(默認):移動光標,剪切/粘貼文本

插入(編輯)模式;修改文本

擴展命令模式:保存,退出,vim內置的命令行接口,執行vim的內置命令


Esc鍵:退出當前模式,Esc鍵總是返回到命令模式


打開文件:

#vim [options] [file...]

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

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

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

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

vim -d file1 file2...比較多個文件

vim -m file 只讀打開文件

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

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

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


模式轉換:

編輯模式:默認模式;

編輯模式-->輸入模式;

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

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

o:在光標所在處的下方開一個新行;

I:在光標所在處的行首輸入;

A:在光標所在行的行尾輸入;

O:在光標所在處的上方打開一個新行;


輸入模式-->編輯模式

ESC


編輯模式-->末行模式


末行模式-->編輯模式

ESC


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


        關閉文件:

命令模式:

ZZ:保存並退出;

ZQ:不保存退出;


擴展模式:

:q 退出

:q! 強制退出,不保存此前的編輯操作

:wq 保存並退出

        :x 保存並退出

:w /PATH/TO/SOMEFILE

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

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

!command 執行命令

r!command:讀取命令執行結果到當前文件中


光標跳轉:


字符間跳轉

h:左

j:下

k:上

l:右

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


單詞間跳轉:

w:下一個單詞的詞首

e:當前或後一個單詞的詞尾

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

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


當前頁跳轉:

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


行首行尾跳轉

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

0:跳轉至行首

$:跳轉至行尾


行間跳轉

#G:跳轉至由#指定的行;

        1G,gg:第一行;

G:最後一行


句間跳轉

):下一句

(:上一句

段間跳轉

}:下一段

{:上一段

翻屏:

ctrl+f:向文件尾翻一屏

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

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

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

enter:按行向後翻


vim的編輯命令:


字符編輯

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

#x:刪除光標所在從起始的#個字符;

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

~:轉換大小寫

gU:變大寫

gu:變小寫


替換命令(replace):

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

rCHAR

R:切換成REPLACE模式


刪除命令

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

d$:刪除光標處至行尾的內容;

d^:刪除光標處至行首的內容;

d0:刪除到行首

dw:刪除光標處至下一個單詞詞首的內容;

de:

db:

#COMMAND;


dd:刪除光標所在處的行;

#dd:刪除光標所處的行起始的共#行;

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


粘貼命令(p,put,paste):

P:緩衝區中的內容如果爲整行,則粘貼在當前光標所在行的下方;否則,則粘貼至當前光標所在處的後方;

p:緩衝區中的內容如果爲整行,則粘貼在當前光標所在行的上方;否則,則粘貼至當前光標所在處的前方;


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



複製命令(yank,y):

y:複製,工作行爲相似於d命令;

y$:從光標處拷貝紙本行最後一個字符

y0:

y^:

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

yw:

yb:

#COMMAND

yy:複製行

#yy:複製多行

y:複製整行


改變命令(c,change)

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

命令模式-->插入模式

c$:

c^:

c0:

cb:

ce:

cw:

#COMMAND

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

#cc:

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


擴展模式

地址定界

:start_pos,end_pos

#:具體到第#行,2表示第2行

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

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

2,+3 表示2-5行

.:當前行

$:最後一行

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

%:全文,相當於1,$


/pat1/,/pat2/

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

#,/pat/ 從第#行到被pat匹配到的字符

/pat/,$ 從被pat匹配到的字符到行尾

查找

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

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

n:與命令相同方向翻頁

N:與命令相反方向翻頁


查找並替換

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

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

要查找的內容:可使用正則表達式編寫的模式

替換爲的內容:不能使用模式,但可以使用\1,\2...等後向引用符號;還可以使用"&"引用前面查找時查找到的整個內容

修飾符:

i:忽略大小寫;

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

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


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

s@/etc@/var@g

s#/boot#/#i


撤銷更改

u:撤銷最近的更改

#u撤銷之前多次更改

U撤銷光標落在這行後所有此行的更改

按Ctrl-r重做最後的“撤銷”更改

.重複前一個操作

n.重複前一個操作n次


vim的寄存器

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

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

如:3"tyy 表示複製3行到t寄存器中

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

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

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


編輯二進制文件

以二進制方式打開文件

vim -b binaryfile

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

:%!xxd

編輯二進制文件

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

:%!xxd -r


可視化模式

允許選擇的文本塊

v面向字符

V面向行

ctrl -v 面向塊

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

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


多文件模式

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


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