vi: Visual Interface,文本編輯器vim
vim - Vi Improved 是vi的升級版,它們是兩條命令。windows
vimapp
-m 只讀方式打開文件編輯器
-b 二進制打開文件ide
-d file1 file2 比較多個文件spa
命令(Normal)模式:默認模式,移動光標,剪切/粘貼文本3d
插入(Insert)或編輯模式:修改文本unix
擴展命令(extendedcommand )模式:保存,退出等orm
Esc鍵退出當前模式blog
Esc鍵 Esc鍵老是返回到命令模式
命令模式--------> 插入模式
i: insert, 在光標所在處輸入
I:在當前光標所在行的行首輸入
a: append, 在光標所在處後面輸入
A:在當前光標所在行的行尾輸入
o: 在當前光標所在行的下方打開一個新行
O:在當前光標所在行的上方打開一個新行
插入模式--------> 命令模式
ESC
命令模式--------> 擴展命令模式
:
擴展命令模式--------> 命令模式
ESC(2),enter
命令模式:
ZZ: 保存退出
ZQ:不保存退出
擴展模式:
:q 退出
:q! 強制退出,丟棄作出的修改
:wq 保存退出
:x 保存退出
當文件對當前用戶權限爲read-only時,可使用wq!或x!強制保存並退出(僅限root和當前文件的owner)
字符間跳轉:
h: 左 l: 右 j: 下 k: 上
#COMMAND:跳轉由#指定的個數的字符
單詞間跳轉:
w:下一個單詞的詞首
e:當前或下一單詞的詞尾
b:當前或前一個單詞的詞首
#COMMAND:由#指定一次跳轉的單詞數
行跳轉:
G:跳到尾行
gg:跳到首行
當前頁跳轉:
H:頁首 M:頁中間行 L:頁底
翻屏:
ctrl +f 向下翻一屏
ctrl +b 向上翻一屏
ctrl +d 向下翻半屏
ctrl +u 向上翻半屏
替換命令(r, replace)
r: 替換光標所在處的字符
R: 切換成REPLACE模式
刪除命令其實至關於剪切,能夠直接繼續粘貼
d: 刪除命令,可結合光標跳轉字符,實現範圍刪除
d$:刪除到行尾
d^:刪除到非空行首
d0:刪除到行首
dw:從光標所在處刪除到單詞尾
de:從光標所在處刪除到單詞尾
db:從光標所在處刪除到單詞頭
#COMMAND 加上hjkl方向鍵 向左時不包含當前字符。(#表明數字,COMMAND表明刪除命令d)
dd:刪除光標所在的行
#dd:多行刪除
dG 從光標所在處的當前行刪除到尾行
dgg 從光標所在處刪除到首行
dH 從光標所在處刪除到當前頁的首行
dL 從光標所在處刪除到當前頁的尾行
dM 從光標所在處刪除到當前頁的中間行
D:從當前光標位置一直刪除到行尾,留空行,等同於d$
複製命令(y, yank),用法與刪除命令基本一致
y:複製,行爲類似於d命令
y$:複製到行尾
y^:複製到非空行首
y0:複製到行首
yw:從光標所在處複製到單詞尾
ye:從光標所在處複製到單詞尾
yb:從光標所在處複製到單詞頭
#COMMAND
yy:複製行
#yy: 複製多行
Y: 複製整行
(一樣支持與G gg H M L 配合)
p:緩衝區存的若是爲整行,則粘貼當前光標所在行的下方;不然,則粘貼至當前光標所在處的後面
P:緩衝區存的若是爲整行,則粘貼當前光標所在行的上方;不然,則粘貼至當前光標所在處的前面
改變命令(c, change)
c: 刪除並切換成插入模式
命令模式 --> 插入模式
c$ c^ c0 cb ce cw (功能均與上面相同)
#COMMAND
cc:刪除當前行並輸入新內容
#cc:
C:刪除當前光標到行尾,並切換成插入模式
l字母,w單詞,()一句話,{}段落
100iwang [ESC] :粘貼「wang」100次
(100表示重複次數,i表示到編輯模式,wang是想要重複的內容,而後按ESC鍵就會顯示出來了)
通常命令格式:<start position><command><end position>
起始位置 命令 結束位置
Command:y 複製、d 刪除、gU 變大寫、gu 變小寫
例如 0y$ 命令意味着:
0 → 先到行頭
y → 從這裏開始拷貝
$ → 拷貝到本行最後一個字符
也能夠不要起始位置,如 ye:從當前位置拷貝到本單詞的最後一個字符
u撤銷最近的更改
#u撤銷以前屢次更改
U 撤消光標落在這行後全部此行的更改
按Ctrl+r重作最後的「撤消」更改(至關於Word文檔中向右的那個箭頭)
. 重複前一個操做
n. 重複前一個操做n次
e!撤銷到最開始。也可使用10000u(10000就是一個很大的數字,撤銷很大的數的步數,由於通常不會修改那麼多步的,因此能夠回到最初的樣子)
: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
?PATTERN:從當前光標所在處向文件首部查找PATTERN
n:與命令同方向
N:與命令反方向
s: 在擴展模式下完成查找替換操做
格式:s/要查找的內容/替換爲的內容/修飾符
要查找的內容:可以使用模式
替換爲的內容:不能使用模式,但可使用\1,\2, ...等後向引用符號;還可使用「&」引用前面查找時查找到的整個內容
修飾符:
i: 忽略大小寫
g:全局替換;默認狀況下,每一行只替換第一次出現
如圖,不加g只能替換每行第一個dog
加上以後能夠替換全部的dog
gc:全局替換,每次替換前詢問
查找替換中的分隔符/可替換爲其它字符,例如:
%s@dog@AAA@g 也是把dog換成AAA
%s#dog#AAA#g 也是把dog換成AAA
有26個命名寄存器和1個無命名寄存器,常存放不一樣的剪貼版內容,能夠不一樣會話間共享。
寄存器名稱a,b,…,z,格式:「寄存器 放在數字和命令之間
如:3"tyy 表示複製3行到t寄存器中
"tp 表示將t寄存器內容粘貼
未指定,將使用無命名寄存器
有10個數字寄存器,用0,1,…,9表示,0存放最近複製內容,1存放最近刪除內容。當新的文本變動和刪除時,1轉存到2,2轉存到3,以此類推。數字寄存器不能在不一樣會話間共享。
容許選擇的文本塊
v 面向字符
V 面向行
ctrl-v 面向塊
可視化鍵可用於與移動鍵結合使用:
w ) } 箭頭等
突出顯示的文字可被刪除,複製,變動,過濾,搜索,替換等
多文件模式能夠一次打開多個文件,可是不顯示在同一頁面上。
vim FILE1 FILE2 FILE3 ...
:next 下一個
:prev 前一個
:first 第一個
:last 最後一個
:wall 保存全部
:qall 退出全部
:wqall 保存並退出全部
多文件分割
vim -o|-O FILE1FILE2 ...
-o: 水平分割
-O: 垂直分割
單文件窗口分割:(Ctrl+w一塊按而後鬆開後按後面的按鍵)
Ctrl+w,s: split, 水平分割
Ctrl+w,v: vertical, 垂直分割
Ctrl+w,方向鍵 在窗口間切換文件
ctrl+w,q:取消相鄰窗口
ctrl+w,o: 取消所有窗口
:wqall退出
配置文件:永久有效
全局:/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
vi/vim內置幫助
:help
:help topic
Use :q to exit help
有的時候打開一個文件會發現不是正常打開的樣子,如圖。產生的緣由是產生了swp文件
它是隱藏文件,若是原文件名是data,那麼swp文件名就是.data.swp。若是文件正常退出,則此文件自動刪除。如下兩種狀況不會刪除swp文件:
1、多個程序同時編輯一個文件。
2、Vim非正常退出。這種狀況下,除非手動刪除swp文件(也能夠在vim提示時刪除),不然它會一直存在。
修改過以後,保存後的數據就會存到.swp文件中,這個時候強制退出,能夠看到.swp文件仍然存在。
如圖,將man改爲women後強制退出。
使用cat查看文件發現仍然是修改以前的狀態。(說明被修改的數據保存在.swp中。)
此時使用vim打開fstab文件
根據下面的提示,能夠知道,使用d能夠刪除swp文件,使用r能夠恢復文件。
咱們來輸入r,而後敲回車鍵,發現變成women的那個文件了。
此時又新生成了一個swo,至關於又一個swp的功能,就是記錄此次打開以後的數據變化。以此類推。
這個.swp文件不會自動消失,若是不想要.swp文件,須要手動刪除。