一VIM文本编辑工具
1.插入模式
i 光标所在处插入
I 行首
A 行尾
a 光标后
o 下一行
O 上一行
2.扩展命令模式
:r filename 读入文件内容
:w filename 另存为
:!命令 不退出vim 直接执行命令
:r!命令 读入命令输出结果
3.地址定界
:开始,结束命令
2,10 2到10行
2,+3 第2行到5行
.当前行
$最后一行
.,$-1 当前行到倒数第二行
%全文
编辑命令
d删除 y复制 w file 另存为 r file 在指定位置插入指定文件的所有内容 p下一行粘贴 P上一行粘贴
4.查找替换
/ 也能搜索
s/搜索/替换/g g全部替换,默认只替换第一个 #也可以
s# # #
~/.vrmrc加个配置文件 增加行号
:set ai 书写代码 自动对齐 缩进
:set noai 取消自动对齐
:set pase 保留原格式
: set list显示tab 回车换行符
:set hlsearch 高亮显示
:syntax on 语法高亮 默认
:set ff=dos/unix 转换成windows linux
:set cul 光标所在行加横线
2 命令模式
ZZ 保存退出
ZQ不存盘退出
光标跳转
h 左 l右 j下 k 上
单词跳转
w 下一个单词词首
e 当前或下一个单词词尾
b 当前或前一个单词词尾
H 页首 L 页底 M页中间
zt zb zz
^ 行首 非空白符号
0 行首
$ 行尾
行间移动
#G 多少行
G 最后一行
gg第一行
)下一句 ( 上一句
段落间移动
}下一段 {上一段
ctrl+f 向文件尾部翻一屏
b 首部
d 尾部翻半屏
u 首部半屏
字符编辑
x 删除光标处字符
#x
xp 剪切粘贴
~ 转换大小写
J 除当前行后的换行符
r 替换当前的字符
R替换模式 按esc退回
删除命令
d 删除 可以结合光标跳转命令
dd 剪切光标所在行 p粘贴
3dd删除3行
D=d$
复制
yy
改变命令
c
查找
/ 向下搜索 n 向下搜索 N向上
?bin 向上搜索 n 向下搜索 N向上
u撤销最近的更改
#u撤销之前多次更改
U 撤销光标落在这行后此行的更改
ctrl -r 取消撤销的更改
. 重复前一次操作
#. 重复前一个操作多次
高级用法
di" 删除两个“”之间的内容 使用 ‘’[] {} ()
yi( 复制()的内容 ‘’[] {} () ""
vi[ 选中[之中的内容
dtx 删除直至遇到x
ytx复制字符 遇到第一个x字符
可视化模式
v 面对字符
V面对整行
ctrl +v 块模式 矩形选择
多窗口模式
vim -o file1 file2 上下分屏
O 左右分屏
窗口间切换 crtl+w,Arrow
单文件左右分割
ctrl +w,s 上下分割
ctrl +w,v 左右分割
ctrl+w,q 取消相邻窗口
ctrl+w,o 取消全部窗口
:wqall保存退出
VIM寄存器3"ayy 复制3行到a寄存器 可以跨会话
标记和宏
ma 标记当前a
‘a 跳转到标记的行
qa 录制宏a
q 停止录制宏
@a执行宏a
@@重复执行上次执行的宏
文件常用处理工具
查看文件内容
cat -A file 查看不可见的文件格式 控制符
-b 非空行编号
-n 对每行编号
-s 相邻空行压缩成一行
tac 倒叙行显示 支持输入
rec 同一行逆向显示 支持输入
分页显示more 向下翻 最后一页直接退出
less
n/N 向下翻/向上翻 不会退出
head 默认显示前10行
head -20 前20行
head -c 3 前3个字节
支持管道 和追加内容
tail 后10行
tail -f动态跟踪日志 跟踪文件描述符
-fn0 只追踪最新日志
tail -F 动态跟踪文件 跟踪文件名
dmesg
抽取文本按列
cut -d : 指定分隔符
-f 列
#第几列
#,#
去除利用率 df |tr -s ' ' '%' |cut -d% -f5
文本的分析工具
wc 统计文件的行数 单词总数 字节总数 支持重定向
-l 只统计行数
-w 只统计单词总数
-c 只统计字节总数
-m 只统计字符总数
-L 显示文件中最长行的长度
sort 排序 默认按字符顺序排序
-r 倒叙排序
-R 随机排序
-n 数字大小
-f 忽略大小写
-u 去重
找到分区最大值
#df | tr -s " " %|cut -d% -f5|tr -d '[:alpha:]' | sort -nr|head -n1
uniq去重 默认删除前后相接重复的行
-u 只显示不重复的行
-d 只显示重复的行
-c 显示行重复的次数
统计访问次数最多的IP次数
cut -d" " -f1 access_log |sort |uniq -c|sort -nr |head -3
连接次数最多的ip
并发连接最多的远程主机IP
ss -nt|tail -n+2 |tr -s ' ' : |cut -d: -f6|sort|uniq -c|sort -nr |head -n2
取文件的相同行 不同行
相同行 cat test1.txt test2.txt | sort |uniq -d
不同行 cat test1.txt test2.txt | sort |uniq -u
diff比较两个文件的不同