vim编辑器练习&任务计划&脚本编程练习

请详细总结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

(0)
N23-苏州-voidN23-苏州-void
上一篇 2016-10-31
下一篇 2016-10-31

相关推荐

  • 优云软件数据专家最佳实践:数据挖掘与运维分析

    这份研究报告,作者是优云软件数据专家陈是维,在耗时1年时间制作的一份最佳实践,今天和大家分享下,关于《数据采矿和运维分析》,共同探讨~ 数据挖掘(Data Mining)是从大量数据中提取或“挖掘”知识。 广义数据挖掘:数据挖掘是从存放在数据库、数据仓库或其它信息库中的大量数据挖掘有趣知识的过程。 数据挖掘技术侧重:1)概率与数理统计 2)数据库技术 3)人…

    大数据运维 2016-07-16
  • 人志建,则无敌—磁盘、LVM2和简单脚本练习

    马哥网络班21期-第七周博客 1、创建一个10G分区,并格式为ext4文件系统;  disk /dev/sdb         Command (m for help): n    &nbs…

    Linux干货 2016-08-19
  • shell与kernel的理解

    Shell 的英文释义是外壳,与kernel 内核名词遥相呼应,一外一内,一壳一核。内核就像瑞士银行的金库,存放着客户的黄金等众多的(硬件)资产,闲杂人等(包括客户)当然是严格禁止入内的,而作为客户要存取金库中的资产则需要通过专门的特定管理人员代为操作完成,并把存取(操作)的结果呈现给客户。在Linux操作系统中,shell的职能就类似于金库的操作人员,客户…

    Linux干货 2016-02-14
  • CA服务器的搭建以及证书签署、dropbear的编译安装

    CA服务器的搭建以及证书签署、dropbear的编译安装 一、CA Server和Client: 1、CA server:创建私钥CA (1)   openssl的配置文件:/etc/pki/tls/openssl.conf   如果Client端的申请是来自不同的国家,则需要将下图中红色框内的三项,由“match”改为“opt…

    Linux干货 2016-09-23
  • grep及正则表达式应用

    grep:文本过滤(模式:pattern)工具 grep家族介绍: grep:标准grep命令,支持标准的正则表达式  BRE  egrep:扩展的grep命令,支持扩展的正则表达式  ERE fgrep:快速的grep命令,不支持正则表达式 grep作用: 文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹…

    Linux干货 2016-07-10
  • Linux 的硬链接与软链接的区别

       链接是指在电子计算机程序的各模块之间传递参数和控制命令,并把它们组成一个可执行的整体的过程。通俗一点无非是把文件名和计算机文件系统使用的节点号链接起来。   linux中链接有硬链接和软连接之分,首先我们来介绍硬链接,硬链接相当于创建了文件的第二个名字,增加了额外的记录项用来引用文件,还是隶属与同一文件系统上,是同一个物理…

    Linux干货 2016-10-20

评论列表(1条)

  • 马哥教育
    马哥教育 2016-11-01 22:52

    完成的非常好,6、8题需要精确到分钟,7题需要精确到分钟、小时哈,9题还差一个工作日哦,加油!