vim編輯器 模式化編輯器 #vimtutor vim自帶練習教程 !
基本模式:
1.命令模式 2.插入模式 3.擴展模式
#vim filename
+# 打開文件后 讓光標處于#行的行首
+/PATTERN 打開文件并使光標處于第一個匹配到的行的行首
+ file 直接打開file,光標在最后一行
-b file 二進制方式打開文件
-m file 只讀打開文件
-d file1 file2… 比較多個文件
鎖定和解鎖:CTRL+s,Ctrl+q
===基本操作:
1.模式轉換:
命令模式(默認)==> 插入模式
i: insert 光標所在處輸入
I: 光標所在行行首輸入
a: append 光標所在處后方輸入
A: 光標所在行行尾輸入
o: 光標所在下方新建一行
O: 光標所在上方新建一行
插入模式–>命令模式:
ESC
插入模式–>擴展模式:
:
擴展模式–>命令模式:
ESC
2.保存退出文件:
命令模式下
ZZ:保存并退出
ZQ:不保存退出
擴展模式下:
:q 退出
:q! 強制退出 不會保存編輯操作
:wq 保存并推出
:x 保存并退出
:w /PATH 另存為
3.光標跳轉: 命令模式下:
字符間跳轉:
h左 j下 k上 l右 #前可加數字# 表示跳轉#個單位
單詞間跳轉:
w 下一個單詞 詞首
b 前一個單詞 詞首 若不在 當前單詞詞首 則先跳轉到當前單詞詞首
e 下一個單詞 詞尾 同上
#前可加數字# 表示跳轉#個單詞
行首行尾跳轉:
^ 跳轉至行首 第一個 非空白字符處
0 跳轉至行首 TAB除外
$ 跳轉至行尾
行間跳轉:
#G 跳轉至#號行
1G|gg 第一行
G 跳轉至最后一行
句間跳轉: 支持加數字
)
(
段間跳轉: 支持加數字
}
{
當前頁跳轉:
H:頁首
M:頁中間行
L:頁底
4.翻屏:
ctrl+f 向文件 尾部 翻一屏
ctrl+b 向文件 首部 翻一屏
ctrl+d 尾部 半屏
ctrl+u 首部 半屏
enter:按行向后翻
=== vim命令模式下:
1.字符編輯
x 刪除 光標所在處 字符 向后
#x 刪除 光標所在處 向后#個字符
xp 交換 光標所在處 與其后一個字符 的位置
~ 轉換大小寫
2.替換
r CHAR 替換光標所在處字符
R 切換成REPLACE模式
3.刪除(delete)
d 刪除 可結合光標跳轉字符
dd 刪除 光標所在行 #dd 加數字 刪除共#行
d$: 刪除 光標所在處到 行尾的字符
d^: 刪除 光標所在處到 行首的字符
d0: 刪除 光標所在處到 "行首"的字符
D:從當前光標位置一直刪除到行尾,留空行,等同于d$
dG 刪除 當前光標位置到 尾行
dg 刪除 當前光標位置到 首行
dw |
de | 結合 跳轉字符 選定區域
db |
刪除的內容保留在緩沖區 可粘貼最后一個
4.復制(yank)
y 復制,
Y 復制整行
yy 復制整行
y$
y^
y0
類似d刪;
ye |
yb | 結合 跳轉字符 選定區域
yw |
5.粘貼(paste)
小寫p 粘貼緩沖區(包括d最后刪除的行) 中的內容如果為 整行粘至 光標所在行 下一行,
否則粘貼到 光標所在處 后方
大寫P 粘貼緩沖區(包括d最后刪除的行) 中的內容如果為 整行粘至 光標所在行 上一行,
否則粘貼到 光標所在處 前方
6.改變(change) 編輯模式–>插入模式
c 對 選定區域 執行操作后,進入 插入模式
cc 刪除 整行并進入 插入模式
c$
c^
c0
cb |
ce | 結合 跳轉字符 選定區域
cw |
7.可視化模式(visualization) 類似 鼠標選定 效果; 選定區域后可執行操作
v 按 字符 選定
V 按 行 選定
ctrl v 塊選定
結合編輯命令 d,p,c 執行相應操作
8.撤銷(undo)
u 撤銷上一步操作 可連續執行 默認50個
#u 撤銷此前 #次操作 結合數字 3u:撤銷最近3次操作
U 撤銷光標所在行所有動作
9.恢復(recovery); 撤銷 之前的撤銷
Ctrl+r
10.重復執行上一步操作 點號
"."
#. #次
= 100izhou [ESC] 粘貼 zhou 100次
<start position> CMD <end position>
Command: y 復制、d 刪除、gU 變大寫、gu 變小寫
例如 0y$ 命令意味著: 拷貝全文
ye 從當前位置拷貝到本單詞的最后一個字符
= 26個命名寄存器和 1個無命名寄存器,
存放不同的 剪貼版內容,可以不同會話間共享。
用a,b,…,z表示,用“寄存器表示,放在數字和命令之間
如:3"tyy 表示復制3行到t寄存器中
"tp 表示將t寄存器內容粘貼
=== 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 全行替換 因為默認只匹配每行的第一個
:!command 不退出vi 執行某個命令
:r!command 讀cmd的stdout到當前位置
==
= 以二進制方式打開文件
vim –b binaryfile
擴展命令模式下,利用xxd命令轉換為可讀的十六進制
:%!xxd ? 編輯二進制文件
擴展命令模式下,利用xxd命令轉換回二進制
:%!xxd -r
= 同時打開多個文件:
vim FILE1 FILE2 FILE3 …
:next 下一個
:prev 前一個
:first 第一個
:last 最后一個
:wall 保存所有
:qall 退出所有
:wqall 保存所有
= 多文件分割 vim -o|-O FILE1 FILE2 …
-o: 水平分割
-O: 垂直分割
在窗口間切換:Ctrl+w, 方向鍵
= 單文件窗口分割:
Ctrl+w,s: split, 水平分割
Ctrl+w,v: vertical, 垂直分割
ctrl+w,q:取消相鄰窗口
ctrl+w,o: 取消全部窗口
:wqall 退出
***配置vim工作特性:
配置文件:永久有效
全局:/etc/vimrc
個人:~/.vimrc
(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) 文件格式
啟用:set fileformat=unix
不忽略:set fileformat=dos
(8) 設置文本寬度
:set textwidth=65 (vim only) 從左起
:set wrapmargin=15 從右起
:set all 查看可用設置 :set
:help 幫助文檔
例 :%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,此時屏幕上原來的匹配已取消.
原創文章,作者:Jasper,如若轉載,請注明出處:http://www.www58058.com/31903