一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比较两个文件的不同