- 删除含有pattern的行
:g/pattern/d
:g/^$/d 删除空白行
:s/^#.*$//g 删除以#开头的
:s/pattern\n// # 删除内容为 pattern 的行- 删除不包含pattern的行
:g!/pattern/d
:v/pattern/d- 将多行转换成一行
:1,$s/\n//g- 倒叙文件行(可以用tac将文本内容重定向到另一个文本中)
:g/^/m 0:g/pattern/cmd\
^可以匹配每一行开头 \:m 0 将匹配到的每一行依次move到第0行. 实现了行倒序
5. vi中使用宏实现填写一列自增数字 1. 正常模式下在列首按下q,然后按下a(表示使用a寄存器) 2. 复制数字一行yy,在下一行粘贴p 3. ctrl+a,数字会自增,ctrl+x数字会自减 4. q突出录制 5. 10@a 则会生成10列 (问题,单独一行为一列比较方便,如果是在行中插入的列,此种方式不是很好用,另外日期不能自增)
- 查找相同的两行
:sort
/^\(.\+\)$\n\1- 删除重复行
:sort
:g/^\(.\+\)$\n\1/d8.查询一行字符串出现重复次数
string="text,text,text,text"
char=","
echo "${string}" | awk -F"${char}" '{print NF-1}'
:s/pattern//n9.生成递增数据
vim 1 -20
新建文本
插入模式
ctrl-r = range(1,200)10 xargs
cat a.txt | xargs -n 1 -P 4 php artisan ts:schedule --place
-P 4 4个线程
-n 1 一次处理1个数据
-p 确认后执行
- 在行尾部插入内容
选中多行,然后按冒号,输入 :'<,'>normal A1234 回车即可。('< 代表选中的开始行号,'> 是结束行号,该命令会在这几行重复执行后面的命令,normal 的意思就是normal 模式下击键模拟,这里模拟A(行尾追加),然后追加内容是1234)
- 隔行插入
:%s/.*\n.*\n.*\n/\0你要插入的内容\r/g
`%s` - 对于文件全部内容
`.*\n` 是一行,包括行尾; 要隔多少行才插入一行你要插入的内容,就有多少个`.*\n`
`\0` 是整个匹配的表达式
`\r` 添加一个新的行