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.178linux.com/31903