第6周作业
—
请详细总结vim编辑器的使用并完成以下练习题
vim是模式化的全屏文本编辑器。
vim分为三种模式:
分别是编辑模式;输入模式;末行模式;
打开文件的方式有:vim +# FILE
打开文件FILE并把光标定位到#行的行首;vim +/PATTERN FILE
打开文件并让光标处于第一个被PATTERN匹配到的行的行首。(支持正则表达式)vim + FILE
打开文件并把光标定位于FILE文件的最后一行的行首。
模式的转换:
vim默认处于编辑模式;
从编辑模式进入输入模式可以按i
键,在光标所在处输入;a
键,在光标所在处后方输入;o
键,在光标所在处下方新建一行输入;I
键,在光标所在行的行首输入;A
键,在光标所在行的行尾输入;大写O
键,在光标所在处的上方新建一行输入;
输入模式退出到编辑模式,按ESC键退出输入模式;编辑模式进入末行模式需要按:进入末行模式;退出末行模式进入编辑模式也是按ESC键,有时需要连按2次ESC才能退出到编辑模式。输入模式是不能直接进入末行模式的,同样末行模式也不能直接进入输入模式,只能通过编辑模式进入。
关闭文件:ZZ
:保存并退出。
进入末行模式 :q 退出,注意(这种退出方式只能是没有对文件进行编辑和输入的情况下才能退出):q!
不保存退出:wq
保存退出:x
保存退出:w /PATH/TO/SOMEFILE
保存修改后的内容,另存为新路径文件。
编辑模式的光标跳转操作:
字符间跳转:h
左,l
右,j
下,k
上,也可以在h,l,j,k
前加数字,表示跳转指定数量的字符。
单词间跳转:w
下一个单词的词首,b
当前或前一个单词的词首,e
当前或后一个单词的词尾,同样也可以在w,b,e
前加数字,指定跳转的单词数量。
注意:字符间跳转和单词间跳转可以连用#COMMAND
实现一次跳转指定#数量的字符或单词。例:3w,2b,4e,5k等。
行首行尾跳转:^
跳转到行首的第一个非空白字符; 0
数字零是跳转至绝对行首;$
跳转至行尾;
行间跳转:#G
跳转至#指定数字的行的行首;gg
是跳转至第一行;G
跳转至最后一行;
句间跳转:)(
段间跳转:{ }
句间跳转和段间跳转都可以指定数量#,来实现指定数量的跳转。
翻屏操作:ctrl+f
向文件的尾部翻一屏;ctrl+b
向文件的首部翻一屏;ctrl+d
向文件的尾部翻半屏;ctrl+u
向文件的首部翻半屏;Enter
按行为单位向文件尾部翻屏;
编辑模式的编辑命令:
字符编辑:x
删除光标所在处的字符(单个字符);#x 删除光标所在处起向后#个数量的字符;xp 交换光标所在处字符和其后面字符的位置;
替换命令:r
替换光标所在处的字符,r后跟要替换的字符。
删除命令:d
删除命令,可结合光标跳转字符实现范围删除; dw ; de ; db ;3db;2de;等
例: d$
删除光标所在处至行尾的字符; d^
删除光标所在处到行首的字符;dd
是删除光标所在处的一整行;#dd
是删除光标所在处起向下#行;
粘贴命令:
小写 p
缓冲区的内容如果为整行,则粘贴在光标所在行的下方。如果不是整行,则粘贴在光标所在处的后方。
大写 P
缓冲区的内容如果为整行,则粘贴在光标所在行的上方。如果不是整行,则粘贴在光标所在处的后方。
注意:缓冲区的最后一行是删除命令的删除的最后一条字符信息,只有最后一条字符信息可用于粘贴命令。
复制命令:y
复制命令,工作行为和 d
删除命令相似,可连用光标跳转符实现范围复制,例:y$; y^;ye;2yw;3yb等;yy
复制光标所在处一整行; #yy
复制光标所在行起,向下#行一起复制。
更改命令:c
是更改命令,此命令实现从编辑模式–>输入模式,可以实现删除操作并进入输入模式;可连用光标跳转符;
例:c$
删除光标所在处开始至行尾的字符并进入输入模式;其他例子如:c^;c0;cb;ce;3cw等;实现范围删除并进入输入模式;cc
删除光标所在行并进入输入模式。#cc
删除光标所在行起向下#行,并进入输入模式;
可视化模式:
小写 v
按字符选定并高亮显示,可随意选定字符(可连用光标跳转符选取字符)
大写 v
按行选定并高亮显示(只能整行选定)
可视化模式可以结合的编辑命令有:d删除命令,c更改命令,y复制命令;
撤销操作:u
撤销此前的操作;#u
撤销此前的#个操作,#指定数字。
撤销撤销操作:ctrl+r
重复前一个编辑操作。
vim末行模式:
末行模式是vim内建的命令行接口。
1.地址定界:
:start_pos[end_pos]#
特定#行,例:5 即第5行;#,#
指定从#到#行,指定行的范围,左侧为起始行,右侧为结束行;例:1,5 从1行到5行;#,+#
指定行的范围,左侧为起始行的绝对编号,右侧为偏移量;例: 2,+3 从2行开始.
当前行,例: .,+3 当前行开始+3行;$
最后一行; 例: .,$-1 当前行开始到倒数第2行;%
全文范围/pattern/
第一次被pattern匹配到的行(注:第一次是从光标所在处起始往文件尾部匹配)
例:/pattern/,$d
光标所在处开始到文本最后一行,匹配到的字符做删除操作;
可同编辑模式命令 d,y,c连用
w /PATH/TO/SOMEFILE
将指定范围内的文本保存至指定的文件中;r /PATH/TO/SOMEFILE
将指定文件中的文本读取并插入到指定位置;例: 5r /tmp/messages
在第5行后读取插入/tmp/messages的文本
2.查找
/pattern
从当前光标所在处向文件尾部查找被当前模式匹配到的字符串;?pattern
从当前光标所在处向文件首部查收被当前模式匹配到的字符串;
注意:小写n是与命令方向相同,切换到下一个被模式匹配到的字符串,大写N是与命令方向相反;
3.查找并替换
s
末行模式查找命令;末行模式查找替换命令格式:s/要查找的内容/替换为的内容/修饰符
;
注意:要查找的内容
可以使用基本正则表达式;替换为的内容
不可以使用正则表达式,但可以引用前面要查找的内容
;
如果要查找的内容
在模式中使用分组符号
,在替换为的内容
中可用后项引用\1;
另一种方式是直接引用前面要查找的内容
,使用&
符号,直接引用前面要查找内容匹配到的所有字符。
修饰符:i
忽略大小写g
全局替换,意思是一行中,查找到的内容出现多次都替换。
可把分隔符替换成其他非常用字符:如:s@@@;s###
等
vim的多文件功能
vim可以一次打开多个文件;vim FILE1 FILE2 ...
文件间切换可以使用末行模式下命令 :next
下一个文件;:prev
上一个文件;:first
第一个文件;:last
最后一个文件;
退出所有文件:wqall 保存所有文件并退出;
多窗口:-o
水平分割窗口;-O
垂直分割窗口;例:vim -o fstab messages
在多窗口中切换:编辑模式中ctrl+w
激活窗口切换功能,使用h,j,k,l
切换窗口;
单个文件也可以分割为多个窗口进行查看;在vim打开的单个文件中ctrl+w激活多窗口,然后按s键,是把单个文件水平分割,加v键是垂直分割;单文件多窗口可以水平垂直任意分割并存。
定制vim的工作特性
1.行号显示:set nu
; 取消行号显示:set no nu
;注意:在末行模式下的设定,仅对当前vim进程有效;想永久生效需要更改配置文件;全局配置文件路径/etc/vimrc
;个人配置文件路径~/.vimrc
;
2.括号匹配高亮显示:set sm
;取消括号匹配高亮显示:set nosm
;
3.自动缩进启动:set ai
;禁用:set noai
;
4.高亮搜索结果启用:set hlserch
;禁用:set nohlserch
;
5.语法高亮显示:syntax on
;禁用:syntax off
;
6.忽略字符大小写:set ic
;禁用:set noic
在vim末行模式下:help
可以查看帮助文件。
1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;
cp /etc/rc.d/rc.sysinit /tmp
%s@^[[:space:]]\+@#&@g
2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符;
cp /boot/grub/grub.conf /tmp
%s@^[[:space:]]\+@@
3、删除/tmp/rc.sysinit文件中的以#开头,且后面跟了至少一个空白字符的行行的#和空白字符
%s@^\#[[:space:]]\+@@g
4、为/tmp/grub.conf文件中前三行的行首加#号;
1,3s@^@#&@g
5、将/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改为1;
%s@\(enabled\|gpgcheck\)=0@\1=1@g
6、每4小时执行一次对/etc目录的备份,备份至/backup目录中,保存的目录名为形如etc-201504020202
0 */4 * * * /bin/tar -zcf /backup/etc-$(date +\%Y\%m\%d\%H\%M).tar.gz /etc
7、每周2,4,6备份/var/log/messages文件至/backup/messages_logs/目录中,保存的文件名形如messages-20150402
0 0 * * 2,4,6 /bin/tar -zcf /backup/messages_logs/messages-$(date +\%Y\%m\%d).tar.gz /var/log/messages
8、每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中
0 */2 * * * /bin/grep "^S" /proc/meminfo >> /stats/memory.txt
9、工作日的工作时间内,每两小时执行一次echo “howdy”
0 9-18/2 * * 1-5 /bin/echo "howdy"
脚本编程练习
10、创建目录/tmp/testdir-当前日期时间;
#!/bin/bash
#mkdir -p /tmp/testdir-$(date +%Y%m%d%H%M)
11、在此目录创建100个空文件:file1-file100
#!/bin/bash
#touch file{1..100}
12、显示/etc/passwd文件中位于第偶数行的用户的用户名;
#!/bin/bash
#sed -n 'n;p' /etc/passwd | cut -d: -f 1
原创文章,作者:Eason,如若转载,请注明出处:http://www.178linux.com/69753