vim

前文鏈接:grep/find用法

VIM用法

                

文本編輯器:

文本:純文本,ASCII text;Unicode;

文本編輯種類:

行編輯器:sed

全屏編輯器:nano, vi

vi: Visual Interface

vim: Vi IMproved

vim:

模式化的編輯器

基本模式:

編輯模式,命令模式

輸入模式

末行模式:

內置的命令行接口;

打開文件:

# vim [options] [file ..]

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

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

模式轉換:

編輯模式:默認模式

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

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

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

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

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

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

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

輸入模式 --> 編輯模式

ESC

編輯模式 --> 末行模式

:

末行模式 --> 編輯模式

ESC

關閉文件:

ZZ:保存並退出;

:q  退出

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

:wq  保存並退出;

:w, :q

:x  保存並退出;

:w /PATH/TO/SOMEFILE

光標跳轉:

字符間跳轉

h:左

j:下

k:上

l:右

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

單詞間跳轉

w:下一個單詞的詞首;

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

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

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

行首行尾跳轉

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

0:跳轉至行首;

$:跳轉至行尾;

行間跳轉

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

1G, gg:第一行;

G:最後一行;

句間跳轉:

)

(

段間跳轉

}

{

翻屏:

Ctrl+f:向文件尾翻一屏

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

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

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

Enter:按行向後翻

vim的編輯命令:

字符編輯:

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

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

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

替換命令(replace):

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

rCHAR

刪除命令:

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

d$:

d^:

dw:

de:

db:

#COMMAND:

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

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

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

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

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

複製命令(yank, y):

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

y$

y^

y0

ye

yw

yb

#COMMAND

yy:複製一整行

#yy:複製#行

改變命令(change, c):

編輯模式 --> 輸入模式,實現刪除操作;

c$

c^

c0

cb

ce

cw

#COMMAND

cc:刪除光標所在的行,並轉換爲輸出模式;

#cc:

其它編輯操作:

可視化模式:

v:按字符選定;

V:按行選定;

結合編輯命令使用:d, c, y

撤銷(undo)操作:

u:撤銷此前的操作;

#u:撤銷此前的#個操作;

撤銷此前的撤銷:

Ctrl+r

重複執行前一個編輯操作:

.

vim自帶的練習教程:vimtutor

vim末行模式:

內建的命令行接口

(1) 地址定界

:start_pos[,end_pos]

#:特定的第#行,例如5即第5行;

.:當前行;

$:最後一行;

#,#:指定行範圍,左側爲起始行,右側爲結束行;

#,+#:指定行範圍,左側爲超始行絕對編號,右側爲相對左側行號的偏移量;例如:3,+7

.,$-1

1,$

%:全文 

/pattern/:從光標所在處起始向文件尾部第一次被模式所匹配到的行;

/first/,$

/pat1/,/pat2/:從光標所在處起始,第一次由pat1匹配到的行開始,至第一次由pat2匹配到的行結束之間的所有行;

可同編輯命令一同使用,實現編輯操作:

d

y

c

w /PATH/TO/SOMEFILE:將範圍內的文本保存至指定的文件中;

r  /PATH/FROM/SOMEFILE:將指定的文件中的文本讀取並插入至指定位置;

(2) 查找

/PATTERN:從當前光標所在處向文件尾部查找能夠被當前模式匹配到的所有字符串;

?PATTERN:從當前光標所在處向文件首部查找能夠被當前模式匹配到的所有字符串;

n:下一個,與命令方向相同;

N:上一個,與命令方向相反;

(3) 查找並替換

s:末行模式的命令;使用格式:

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

要查找的內容:可使用正則表達式;

替換爲的內容:不能使用下則表達式,但可以引用;

如果“要查找的內容”部分在模式中使用分組符號:在“替換爲的內容”中使用後向引用;

直接引用查找模式匹配到的全部文本,要使用&符號;

修飾符:

i:忽略大小寫;

g:全局替換,意味着一行中如果匹配到多次,則均替換;

可把分隔符替換爲其它非常用字符:

s@@@

s###

示例:

%s@\<t\([[:alpha:]]\+\)\>@T\1@g

%s@\<t[[:alpha:]]\+\>@&er@g

vim的多文件功能:

多文件:

vim FILE1 FILE2 ...

在文件間切換:

:next  下一個

:prev  上一個

:first   第一個 

:last   最後一個 

退出所有文件:

:wqall 保存所有文件並退出;

:wall

:qall

多窗口:

-o:水平分割窗口

-O:垂直分割窗口

在窗口間切換:Ctrl+w, ARROW

注意:單個文件也可以分割爲多個窗口進行查看:

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

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

定製vim的工作特性:

注意:在末行模式下的設定,僅對當前vim進程有效;

永久有效:

全局:/etc/vimrc

用戶個人:~/.vimrc

1、行號

顯示:set number, 簡寫爲set nu

取消顯示:set nomber, 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

獲取幫助:

:help

:help subject

練習 :設置tab鍵縮進4個字符

                VIM-tab.pngVIM-tab4.png




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