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,此时屏幕上原来的匹配已取消.