日期: 2015年08月30日
文本編輯器主要分爲兩類:
全屏編輯器:vi、vim、nano
逐行讀取編輯器:sed
VI—Visual Interface (可視化接口)
VIM—Visual Interface Improved(VI的增強版)
vi提供三種模式
編輯模式:鍵盤操作通常被解析爲編輯命令;
輸入模式:編輯文本,輸入文字的模式;
末行模式:vim的內置的命令行接口,執行vim內置命令
模式間切換:
輸入模式 --> 編輯模式:
ESC
編輯模式 --> 末行模式:
:
末行模式 --> 編輯模式:
ESC
打開文件:
vim /PATH/FileName
vim +Num /PATH/FileName:打開後處於指定行的行首
vim + /PATH/FileName:打開文件後讓光標直接處於文件末行的行首
從編輯模式進入輸入模式:
i #光標在當前位置進入文本編輯模式
I #光標跳至行首並進入文本編輯模式
a #光標後退一格並進入文本編輯模式
A #光標退到行尾並進入文本編輯模式
o #在光標所在行的上一行下新起一行並進入文本編輯模式
O #在光標所在行的上一行新起一行並進入文本編輯模式
s #刪除光標所在字符並進入文本編輯模式
S/cc #刪除光標所在行並進入文本編輯模式(對空白行不起作用)
光標控制:
0 #光標跳至行頭
^ #光標跳至第一個非空白字符
$ #光標跳至行末
w #光標跳至下一個詞首
b #光標跳至當前或上一個詞首
e #光標跳至當前或下一個詞尾
W #光標跳至以空格分割的下一個詞首
B #光標跳至以空格分割的上一個詞首
E #光標跳至以空格分割的下一個詞尾
k #光標跳至上行
j #光標跳至下行
h #光標向左移動
l #光標向右移動
H #光標移動到當頁頂部行首
L #光標跳至當頁底部行首
Num+h #光標向左移動N個字符
Num+l #光標向右移動N個字符
Num+k #光標向上移動N行
Num+j #光標向下移動N行
gg #光標跳至文件的首行
Num+gg #光標跳至指定行
G #光標跳至文件的末行(前面加數字則跳至指定行,例如 10G 跳至第10行)
Ctrl+g #顯示當前行
句子間移動:( )
段落間移動:{ }
翻屏:
Ctrl+f: 向文件尾部翻一屏
Ctrl+b: 向文件首部翻一屏
Ctrl+d: 向文件尾部翻半屏
Ctrl+u: 向文件首部翻半屏
Enter: 向下翻一行
刪除or剪切:
x #刪除/剪切一個字符
Num+x #刪除/剪切下n個字符
dd #刪除/剪切當前行
Num+dd #刪除/剪切後n行
db #刪除/剪切光標至上一個詞首
dw #刪除/剪切光標至下一個詞首(單個詞)
Num+dw #刪除/剪切後n個詞
dW #刪除/剪切至以空格分割的詞尾
d0 #刪除/剪切光標至行首
d$/D #刪除/剪切光標至行尾
d+h #往光標左側刪除/剪切一個字符
d+l #往光標右側刪除/剪切一個字符
複製or粘貼:
yy #選定光標所在行復制
yw #選定光標所在詞複製
Num+yw #選定光標所在位置之後n個單詞複製
y0 #選定光標所在位置到行首的部分複製
y$ #選定光標所在位置到行尾的部分複製
P #粘貼在光標所在位置的左邊,如複製整行則粘貼在光標的上方
p #粘貼在光標所在位置的右邊,如複製整行則粘貼在光標的下方
選擇與替換:
v #進入選擇模式
V #選擇光標所在行
r #替換一個字符
R #連續替換字符
c #刪除後並進入編輯模式
取消操作:
u #撤銷上一個編輯操作
Ctrl+r #重新返回操作
. #重複此前的命令
窗口屬性的定義:
set nu #列出行號
set nonu #去掉行號
set ai #設定自動縮進
set noai #關閉自動縮進
set ic #查找時不區分大小寫
set noic #關閉查找時不區分大小寫
顯示對應的括號
set sm (show match)
set nosm
語法高亮:
syntax on
syntax off
搜索高亮:
set hlsearch
set nohlsearch
在末行模式命令:
w #保存當前文件
q #如果未對文件做改動則退出
q! #放棄存儲並退出
wq/x/ZZ(大寫) #保存當前文件並退出
e filename #打開另一個文件並開始編輯
r filename #讀取另一個文件,把文件插入到光標處
r ! <命令> #把命令的輸出結果插入到當前文本中
e! #撤銷所有改動,重新編輯
sh #打開一個shell
so #讀取<文件>,再執行<文件>裏的命令
! #執行某個命令
範圍定界:
start,end: 起始行
10,20 從第10行到第20行
10,+9 從第10行向後走9行
. #表示當前行
.,+Num #表示當前行往後N行
.,$ #表示當前行至最後一行(文件尾部)
.,$-2 #表示當前行至倒數第3行
/PATTERN1/,/PATTERN12/: 匹配模式起始處爲光標所在行,
% #表示全文
查找替換:
/KEYWORD #搜索(n #搜索下一個;N #搜索上一個)
/和@用意一樣:
地址定界s/查找模式/替換爲的內容/gi
地址定界s@查找模式@替換爲的內容@gi
g: global 全局替換
i: ignore-case 忽略大小寫
%s/xxx #全文搜索
同時打開多個文件:
vim -o FILE1 FILE2 #橫屏編輯兩個文件,按Ctrl+w 鬆開後按上或下跳轉
vim -O FILE1 FILE2 #豎屏編輯兩個文件,按Ctrl+w 鬆開後按上或下跳轉
vim FILE1..FILE2...FILE3
多文件跳轉:
:next
:prev
:first
:last
分割當前窗口:
ctrl+w->s 橫屏
ctrl+w->v 豎屏
vim的配置文件:
全局:/etc/vimrc
個人:~/.vimrc #如果沒有此文件,需手動創建
實例1:
搜索前20行,把非#開頭的行加上#號
1,30s/^[^#]/#&/g
//替換後結果可看到1-20行前非#開頭的行已經加上#:
實例2:
//搜索全文中/bin替換爲/sbin
//替換後的結果: