vim 是vi编辑的升级版,同样有三种工作模式:编辑、命令和一般 模式
#:指定行号位置
#,#:指定多少行到多少行
#,+#:指定范围,多少行开始,加#行
$:最后一行
.:当前行
.,$-1,当前行到倒数第二行
1,$:全文
%:全文
/从上往下,?:从下往上 搜索
/pattern/:从光标所在处起始向文件尾部第一次被模式所匹配到的行
s/要查找的内容/替换的内容/修饰符
要查找的内容:可以使用正则表达式
替换内容:不能使用正则表达式,但可以引用
vim操作多文件功能
vim file1 file2….
文件间切换:
:next(n) 下一个文件
:prev(N) 上一个文件
:first 第一个文件
:last 最后一个文件
:files 列出所有文件
:wqall 保存全部退出
:wall 全部保存不退出
:qall 全部退出不保存
vim -o file1 file2 ,,,水平分割
vim -O file1 file2… 垂直分割
ctrl+w,s 垂直分割
ctrl+w,v 水平分割
可以自定义一些vim特性,编辑:~/.vimrc
set ai 自动缩进 noai
set si
set ci ;C风格缩进
set showmatch 括号匹配高亮度 noshowmatch
set hlsearch ;搜索高亮 nohlsearch
syntax on ;语法高亮 syntax off
set ic ; noic 忽略大小写
help 获取帮助 help subject
实例:
1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;
:%s/^\([[:space:]]\+\)/#\1/g 或者:%s/^\([[:space:]].*\)/#\1/g
2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符;
:%s/^[[:space:]].*//g
3、删除/tmp/rc.sysinit文件中的以#开头,且后面跟了至少一个空白字符的行行的#和空白字符
:%s/^#[[:space:]]\+\([^[:space:]].*\)/\1/g 或者 :%s/^#[[:space:]]\+\([^[:space:]]\+\)/\1/g
注意:前者后面的是贪吃模式,没有关系,但是前面的\+就不能换成.*
4、为/tmp/grub.conf文件中前三行的行首加#号;
:1,3s/^.*/#&/g
5、将/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改为1;
:%s/\(gpgcheck\|enabled\)=0/\1=1/g
6、每4小时执行一次对/etc目录的备份,备份至/backup目录中,保存的目录名为形如etc-201504020202
0 */4 * * * cp -rf /etc/ /backup/etc-$(date +\%Y\%m\%d\%H\%M)
7、每周2,4,6备份/var/log/messages文件至/backup/messages_logs/目录中,保存的文件名形如messages-20150402
0 0 * * 2,4,6 cp -f /var/log/messages /backup/messages_logs/messages-$(date +\%Y\%m\%d)
8、每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中
0 */2 * * * grep -i "^s" /proc/meminfo >> /stats/memory.txt
9、工作日的工作时间内,每两小时执行一次echo "howdy"
0 */2 * * 1-5 echo "howdy"
脚本编程练习
10、创建目录/tmp/testdir-当前日期时间;
11、在此目录创建100个空文件:file1-file100
12、显示/etc/passwd文件中位于第偶数行的用户的用户名;
如果cat -n 的话,显示行号,很容易看出来,但是后边的cut就要变了
cat -n /etc/passwd | awk NR%2==0 | cut -d ':' -f 1 | grep -E "\<[[:alpha:]].*" -o
原创文章,作者:不忘初衷,如若转载,请注明出处:http://www.178linux.com/66403