请详细总结vim编辑器的使用并完成以下练习题
vim总结:
vi:Visual Interface,是一种文本编辑器,所谓文本数据是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。
文本编辑器的种类:
行编辑模式:所谓行编辑器是指一行一行来编辑处理的工具,如sed。 全屏编辑器:编辑空间占据整个屏幕,如nano,vi。 VIM即Vi IMproved:vi的增强版,vim是模式化的编辑。 vim在工作过程中有三种模式:编辑模式(命令模式)、输入模式、末行模式。 1、编辑模式:也叫命令模式,键盘操作被常被理解为编辑模式; 2、输入模式:在文本文件当中进行输入内容; 3、末行模式:vim内置的命令行接口,执行vim的内置命令。
vim的使用
打开文件 #vim[option]...[FILE]... +#:打开文件后,直接让光标处于第#行的行首; 例子: ~]# vim +2 functions +/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首。 例子: ~]# vim +/functions functions 模式转换 1、ESC键:可以从输入模式转换到编辑模式 2、从编辑模式-->输入模式,可使用下面的命令: i:在光标所在处的前方转换为输入模式 a:在光标所在的后方转换为输入模式 o:在光标坐在的行的下方新建一个空行并转换为输入模式 I:在光标所在行的行首输入 A:在光标所在行的行尾输入 O:在光标所在行的上方新建一个空白行 3、编辑模式-->末行模式:直接输入冒号(:)即可在窗口的左下方显示冒号; 4、末行模式-->编辑模式:敲击ESC键 5、输入-->编辑-->末行:输入模式不能直接转换到末行模式 退出文件 需要先切换到编辑模式之后才能退出,在切换到编辑模式后键入以下命令即可进行相关的操作: :q 退出 :q! 不保存退出 :wq 保存退出 :x 保存退出 :wq! 强制保存退出 :w /PATH/TO/SOMEWHERE 编辑模式保存退出的快捷键:ZZ 光标移动 字符间移动:可以使用h,j,k,l键来进行光标的移动 h:左 l:右 j:下 k:上 同时还支持数字跳转:#{h|j|k|l}:跳#个字符 例如: 10j 往下移动10行 单词间移动:可以使用w,e,b键来进行移动 w:下一个单词词首 e:当前单词或下一个单词词尾 b:当前单词或前一个单词词首 #{w|e|b} 行内移动: ^:行首第一个非空白字符 0:绝对行首 $:绝对行尾 句子间移动: ) ( 段落间移动: { { 行间移动: #G:直接跳转至第#行 G:最后一行 1G,gg:第一行
vim的编辑命令
x:删除光标所在处的字符 #x:删除光标出起始的#个字符 d:删除命令,结合光标跳转字符使用,删除跳转字符内的字符 w,b,e,$,0,^ dd:删除光标所在的行 #dd:多行删除 p:paste,黏贴 p:缓冲区存的如果为整行,则黏贴于当前光标所在的行下方,否则,黏贴至当前光标所在处的后面; P:缓冲区存的如果为整行,则黏贴于当前光标所在的行上方,否则,黏贴至当前光标所在处的前面; y:yank,复制,结合光标跳转字符使用,复制跳转范围内的字符 w,b,e,$,0,^ #y:复制从当前行向下#行内容 Y:yy 复制行 c:change,修改,结合光标跳转字符使用,修改跳转范围内的字符 w,b,e,$,0,^ 所谓修改就是先删除,再转换为输入模式 cc,C:删除光标所在处的整行而后转为输入模式 #cc vim可视化模式: v:光标走过的字符 V:光标走过的行 Note:经常结合编辑命令使用:d,c,y 撤销编辑: u:undo,撤销此前的操作 #u:撤销最近#次操作 撤销此前的撤销操作 Ctrl+r 翻屏操作 Ctrl+f:向文件尾部翻一屏 Ctrl+b:向文件首部翻一屏 Ctrl+d:向文件尾部翻半屏 Ctrl+u:向文件首部翻半屏
vim中的末行模式
1、内容定界:startpos,endops #:第#行 #, #:从左侧第#行到右侧第#行 #, +#:从左侧第#行起,加上右侧#表示的行数 .:当前行 $:最后一行 %:全文,相当于1,$ 10,$-1 /pat1/,/pat2/:从第一次被pat1模式匹配模式到的行开始,一直到第一次被pat2匹配到的行结束; #,/pat/:从第#行开始到第一次匹配到pat为止; /pat/,$:从第一次匹配到pat到最后一行; 使用方法:后跟一个编辑密令c,d,y可以直接附加在地址范围后使用; w /path/to/somefile:将选定范围内的内容保存至某个文件中 r /path/from/somefile:将指定的文件内容中的内容读取到指定位置 2、查找 /PATHERN:从当前光标所在处向文件尾部查找 ?PATHERN:从当前光标走在处向文件首部查找 在查找过程当中可以吃用n或者N来辅助查找 n:与命令同方向查找 N:与命令反方向查找 3、查找并替换 s:在末行模式下完成查找替换操作 s/查找模式/要替换成的内容/修饰符 查找模式:可以使用正则表达式 替换的内容:不能使用模式,仅能使用引用(如\1,\2...等后向引用符号;还可以使用“&”引用前面查找时查到的整个内容) 修饰符: i:忽略大小写 g:全局替换;默认情况下,每一行只替换一次出现的内容; 查找替换中的分隔符/可以用其它没有出现过的其它字符替代如:s@@@gi s###gi等 示例: 示例: %s@\<t\([[:alpha:]]\+\)\>@T\1@g %s@\<t[[:alpha:]]\+\>@&er@g :.,$s@^[[:space:]]\+@@ 当前光标所在行至文本末尾替换
vim的多文件功能
多文件模式(一次打开多个文件) vim FILE1 FILE2 ... 在文件间切换: :next 切换到下一个文件 :previous 切换到上一个文件 :last 切换到最后一个文件 :first 切换到第一个文件 退出所有文件: :wqall 保存所有文件并退出 :wall :qall 多窗口模式 多文件:(演示:vim -o a.txt b.txt) vim -o:水平分割 -O:垂直分割 在窗口间切换Ctrl+w,Arrow(上下左右箭头) 注意:单个文件也可以分割为多个窗口进行查看 Ctrl+w,s:水平分割 Ctrl+w,v:垂直分割
窗口属性定义:
:set nu显示行号 :set nonu 取消显示行号 :set ai 启用自动缩进功能 :set noai 取消自动缩进功能 :set ic 忽略字符的大小写 :set noic 不忽略字符的大小写 :set sm 括号匹配 :set nosm 取消括号匹配 语法高亮: :syntax on|off 搜索高亮: :set hlsearch :set nohlsearch Note:末行模式中的窗口属性只对当前vim进程有效,可通过修改下下面的配置文件进行定义: 全局:/etc/vimrc 用户:~/.vimrc
1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;
~]# cp /etc/rc.d/rc.sysinit /tmp/ ~]# vim /tmp/rc.sysinit :%s@^[[:space:]]\+@#&@g 备注: 替换的内容,不能使用模式,仅能使用引用(如\1,\2...等后向引用符号;还可以使用“&”引用前面查找时查到的整个内容; 修饰符:g 全局替换;默认情况下,每一行只替换一次出现的内容。
2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符;
~]# cp /boot/grub/grub.conf /tmp ~]# vim /tmp/grub.conf :1,$s@^[[:space:]]@@g
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
~]#mkdir /backup ~]#crontab -e * */4 * * * /bin/cp -a /etc /backup/etc-$(date +%Y%m%d%H%M) 备注:cp -a 保留原文件的权限
7、每周2,4,6备份/var/log/messages文件至/backup/messages_logs/目录中,保存的文件名形如messages-20150402
~]#mkdir -p /backup/messages_logs ~]#crontab -e * * * * 2,4,6 /bin/cp -a /var/log/messages /backup/messages_logs/messages-$(date +%Y%m%d)
8、每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中
~]# mkdir -p /stats ~]# touch /stats/memory.txt ~]#crontab -e * */2 * * * /bin/grep "^S" /proc/meminfo >> /stats/memory.txt
9、工作日的工作时间内,每两小时执行一次echo "howdy"
~]#crontab -e * 8-17/2 * * 1-5 /bin/echo "howdy"
脚本编程练习
10、创建目录/tmp/testdir-当前日期时间;
#!/bin/bash # mkdir /tmp/testdir-$(date +%Y%m%d%H%M) #!/bin/bash # dirName=testidr-$(date +%Y%m%d%H%M) mkdir /tmp/$dirName
11、在此目录创建100个空文件:file1-file100
#!/bin/bash # dirName=testdir-$(date +%Y%m%d%H%M) mkdir /tmp/$dirName for i in {1..100};do touch /tmp/$dirName/file$i done #!/bin/bash # dirName=testdir-$(date +%Y%m%d%H%M) mkdir /tmp/$dirName touch /tmp/$dirName/file{1..100}
12、显示/etc/passwd文件中位于第偶数行的用户的用户名;
#!/bin/sh # line=$(cat /etc/passwd | wc -l) for i in $(seq 2 2 $line);do head -$i /etc/passwd | tail -1 | cut -d: -f1 done
13、创建10用户user10-user19;密码同用户名;
#!/bin/bash # for ((i=10;i<=19;i++)); do if ! id user$i &> /dev/null; then useradd user$i else echo "user$i" | passwd --stdin user$i fi done
14、在/tmp/创建10个空文件file10-file19;
#!/bin/bash # for i in {10..19};do touch /tmp/file$i done
原创文章,作者:N23-苏州-void,如若转载,请注明出处:http://www.178linux.com/56487
评论列表(1条)
完成的非常好,6、8题需要精确到分钟,7题需要精确到分钟、小时哈,9题还差一个工作日哦,加油!