N25-第六周作业

第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

(0)
EasonEason
上一篇 2017-02-22
下一篇 2017-02-22

相关推荐

  • 马哥教育网络班21期+第12周课程练习

    httpd学习前知识必备: I/O类型 同步和异步 synchronous asynchronous  关注的是消息通知机制,如何通知调用者,站在被调用者的角度 同步:调用发出后不会立即返回,一旦返回即是最终结果 异步:调用发出后会立即返回消息,但不是最终结果,被调用者通过状态,通知机制,或回调函数处理结果 阻塞和非阻塞 block nonbloc…

    Linux干货 2016-08-15
  • read,locate ,find 的总结及相关联系

    read 变量名 read 变量名1 [变量名2] < 文件名不支持管道read 变量名1 [变量名2] <<< “值1 [值2] …”使用read来把输入值分配给一个或者多个shell变量     -p 指定要显示的提示     # read -p…

    Linux干货 2017-08-12
  • shell精讲

    shell精讲 shell变量        定义变量时,变量名不加美元符号($,PHP语言中变量需要) 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则: 首个字符必须为字母(a-z,A-Z)。 中间不能有空格,可以使用下划线(_)。 不能使…

    Linux干货 2016-08-21
  • 第一篇博客 简单说下最近的学习心得吧

        今天是个特殊的日子, 来到马哥教育已经一周时间了,刚来的时候满环信心,感觉人生充满了希望,但是接下来的学习让我感受到了什么是绝望,刚开始的两天完全是一种朦胧的状态,不知道干什么,敲得命令也不理解,完全是生搬硬套,没有自己的认知,当时就有一种冲动想要一走了之,后来想想算了 ,然后就坚持到了现在,此时感觉当时的决定是对的,经过一周的学…

    2017-07-15
  • yum与rpm包

    yum与rpm包 包命名和工具 包:分类和拆包 Application-VERSION-ARCH.rpm:主包 Application-devel-VERSION-ARCH.rpm 开发子包 Application-utils-VERSION-ARHC.rpm 其它子包 Application-libs-VERSION-ARHC.rpm 其它子包 包之间:可…

    Linux干货 2017-05-08