vim編輯器 模式化編輯器 #vimtutor vim自帶練習教程 !!!
基本模式:
1.命令模式 2.輸入模式 3.末行模式
輸入模式-->命令模式:
ESC
命令模式-->末行模式:
:
末行模式-->命令模式:
ESC
基本操作:
vim filename
+# 打開文件後 讓光標處於#行的行首
+/PATTERN 打開文件並使光標處於第一個匹配到的行的行首
1.模式轉換:
默認命令模式-->輸入模式
i insert 光標所在處輸入
a append 光標所在處後方輸入
O 光標所在 上方新建一行
o 光標所在 下方新建一行
I 光標所在行 行首輸入
A 光標所在行 行尾輸入
2.關閉文件:
ZZ:保存並退出 命令模式下
:q 退出
:q! 強制退出 不會保存編輯操作
:wq 保存並推出
:x 保存並退出
:w /PATH 另存爲
3.光標跳轉:
字符間跳轉:
h左 j下 k上 l右 #前可加數字# 表示跳轉#個單位字符
單詞間跳轉:
w 下一個單詞 詞首
b 前一個單詞 詞首 若不在 當前單詞詞首 則先跳轉到當前單詞詞首
e 下一個單詞 詞尾 同上
#前可加數字# 表示跳轉#個單詞
行首行尾跳轉:
^ 跳轉至行首 第一個 非空白字符處
0 跳轉至行首 TAB除外
$ 跳轉至行尾
行間跳轉:
#G 跳轉至#號行
1G|gg 第一行
G 跳轉至最後一行
句間跳轉: 支持加數字
)
(
段間跳轉: 支持加數字
}
{
4.翻屏:
ctrl+f 向文件 尾部 翻一屏
ctrl+b 向文件 首部 翻一屏
ctrl+d 尾部 半屏
ctrl+u 首部 半屏
enter:按行向後翻
*** vim命令模式下:
1.字符編輯符
x 刪除 光標所在處 字符 向後
#x 刪除 光標所在處 向後#個字符
xp 交換 光標所在處 與其後一個字符 的位置
2.替換
r+CHAR 替換光標所在處字符
3.刪除(delete)
d 刪除 可結合光標跳轉字符
dd 刪除 光標所在行 #dd 加數字 刪除共#行
d$: 刪除 光標所在處到 行尾的字符
d^: 刪除 光標所在處到 行首的字符
d0: 刪除 光標所在處到 "行首"的字符
dw |
de | 結合 跳轉字符 選定區域
db |
刪除的內容保留在緩衝區 可粘貼最後一個
4.複製(yank)
y 複製,
yy 複製整行
y$
y^
y0
類似d刪;
ye |
yb | 結合 跳轉字符 選定區域
yw |
5.粘貼(p,put,paste)
小寫p 粘貼緩衝區(包括d最後刪除的行) 中的內容如果爲 整行粘至 光標所在行 下一行,
否則粘貼到 光標所在處 後方
大寫P 粘貼緩衝區(包括d最後刪除的行) 中的內容如果爲 整行粘至 光標所在行 上一行,
否則粘貼到 光標所在處 前方
6.改變(change) 編輯模式-->輸入模式
c 對 選定區域 執行操作後,進入 輸入模式
cc 刪除 整行並進入 輸入模式
c$
c^
c0
cb |
ce | 結合 跳轉字符 選定區域
cw |
7.可視化模式(visualization) 類似 鼠標選定 效果; 選定區域後可執行操作
v 按 字符 選定
V 按 行 選定
結合編輯命令 d,p,c 執行相應操作
8.撤銷(undo)
u 撤銷上一步操作 可連續執行 默認50個
#u 撤銷此前 #次操作 結合數字 3u:撤銷最近3次操作
9.恢復(recovery); 撤銷 之前的撤銷
Ctrl+r
10.重複執行上一步操作 點號
"."
*** vim末行模式: 內建的命令行接口;
":" 進入
1.定位
#[,#]
. 當前行
% 全文
# 特定第#行 :5 第5行
#,# 指定範圍行 :3,7 3到7行
#,+# 指定起始行 及偏移量
:4,+6 4到10行 :.,$ 當前行到最後一行
/pat/: 從光標所在處起始 向文件尾部第一個被匹配到的行
/pat/,$ 從光標起始 向文件首部
/pat1/,/pat2/ 從光標處起始,第一次pat1匹配到的行 到 第一次pat2匹配到的行
選定區域 可結合編輯命令使用
c 修改
d 刪除
y 複製
w /PATH 另存爲
r /PATH 將指定文件中的文本 讀取插入指定位置
2.查找
/str 從光標處 向文件尾部 查找匹配的字符串
?str 從光標處 向文件首部 查找匹配的字符串
n: 下一個,與命令方向相同
N: 上一個,與命令方向相反
3.查找並替換
:s/要查找內容/替換爲的內容/修飾符
"要查找的內容": 可使用正則標表達式
"要替換的內容": 不能使用正則表達式 可引用
"要查找的內容"使用了 分組,在"要替換的內容"中可後向引用
s/pat/&str/g 未使用分組,可直接引用全部內容 &
修飾符:
i 忽略大小寫
g 全行替換 因爲默認只匹配每行的第一個
例 :%s/zjj/Zjj/ig
全文中zjj z改爲大寫,
查找時不區分大小寫
一行中匹配的多個全部替換
例 分隔符///可替換 @@@ ###
:1,40s#/etc/passed#/etc/shadow#i
1到40行內 /etc/passwd 替換爲 /etc/shadow
查找時不區分大小寫
每行只替換第一個被匹配到的
例 %s@\<t\([[:alpha:]]\+\k)\>@T\1@g
全文中 小寫t開頭的單詞 全部換位大寫T
*** 當查找完後,想去除 匹配的 高亮,與之對應有兩種常用的方法:
1. 命令模式下,匹配一個更長或內容上沒有的內容,使之覆蓋原有匹配.
2. 末行模式下,輸入noh,此時屏幕上原來的匹配已取消.