第六周小练习

详细总结vim编辑器的使用并完成一下练习

vim编辑器的基本使用

vim模式: 
1、编辑模式(命令模式) 
2、输入模式 
3、末行模式 

一、打开文件

vim /path/to/somefile 打开单个文件

如果文件存在为打开,否则保存退出时为新建

vim /path/to/somefile

vim +# : 打开文件,光标定位到自定行行首

vim + : 打开文件,光标定位到最后一行行首

vim +/PATTERN : 打开文件,定位第一次被PATTERN匹配的行的行首

例如: vim +12 /test/inittab 打开文件并定位到第12行

二、关闭文件

1、末行模式关闭文件

:q 退出

:wq 保存并退出

:q! 不保存退出

:w 保存

2、编辑模式下退出

ZZ 保存并退出

ZQ 不保存退出

3、末行模式

:/w /path/to/file 保存到指定路径

三、移动关标(编辑模式)

1、逐字符移动:

h: 左

l: 右

j: 下

k: 上

#h: 想左移动#个字符(#表示移动指定数目的字符)

2、以单词我I单位进行移动

w: 移至下一个单词的词首

e: 跳至当前或下一个单词的词尾

b: 跳至当前或前一个单词的词首

执行命令之前可以输入指定数字表示需要执行几次命令,例如:

#w #e #b

3w:向后移动到第3个词首

3、行类跳转:

0: 绝对字符

^: 行首的第一个非空白字符

$: 绝对行尾

H:当前屏幕的第一行行首

L:当前屏幕最后一行行首

4、行间跳转

编辑模式

#G : 跳转至第#行

G : 最行一行

gg:与 1G 作用相同,相当于行首

三、翻屏

Ctrl+f: 向下翻一屏

Ctrl+b: 向上翻一屏 before

Ctrl+d: 向下翻半屏 down

Ctrl+u: 向上翻一屏 up

四、删除单个字符

x: 删除出光标所在处的单个字符

#x: 删除光标所在处及向后的共#个字符

五、删除命令 d

命令模式下:

d命令跟跳转符号

#d跳转符:删除光标所在跳出范围共#个

#dw, #de, #db

dd:删除当前光标所在行s

dd#: 删除包含当前光标所在行内的#行

末行模式下:

#,#d:删除从第几行到第几行

.d: 表示当前行

$d: 最后一行

+#d: 向下的#行

六、粘贴命令 p

    p: 如果删除或复制为整行内容,则粘贴至光标所在行的下方,如果复制或删除的内容为非整行,则粘贴贴至光标所在字符的后面

    P: 如果删除或复制为整行内容,则粘贴至光标所在行的上方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的前面

七、复制命令 y

y命令跟跳转符号

#y[跳转符]:复制光标所在跳出范围共#个

yy:复制当前光标所在行

八、替换:r

r: 替换单个字符

R: 替换模式,可以对一行来替换

九、撤销编辑操作 

命令模式下

u: 撤销前一次的编辑操作

连续u命令可以撤销此前的n次操作

#u: 直接撤销前#次编辑操作

撤销最近一次的撤销:Ctrl+r

十一、重复前一次的编辑操作

命令模式下按 .

十二、查找命令模式下

/PATTERN

?PATTERN

N

PATTERN:支持正则表达式

十三、查找并替换在末行模式下使用命令

ADDR1,ADDR2s@PATTERN@string@gi

1,$:第一行到最后一行

%: 表示全文

十四、使用vim编辑多个文件

vim FILE1 FILE2 FILE3…

十五、环境设置(只能末行模式)

1、显示或取消显示行号

:set number

:set nu

:set nonu

2、设定vim忽略或区分字符大小写

:set ignorecase

:set ic

:set noic

3、设定自动缩进

:set autoindent

:set ai

:set noai

4、查找到的文本高亮显示或取消

:set hlsearch

:set nohlsearch

5、语法高亮

:syntax on

:syntax off

5、查看所有环境指令

:set all

十六、配置文件

/etc/vimrc 全局

~/.vimrc 局部 如果没有,可以手动创建

练习

1.复制/etc/rc.d/rc/sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的已至少一个空白字符开头的行首加#

%s/^[[:space:]]\+/#&/g

2.复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符

%s/^[[:space:]]\+//g

3.删除/tmp/rc.sysinit文件中的以#开头,且后面跟了至少一个空白字符的行的#和空白字符

%s/^#[[:space:]]\+//g

4.为/tmp/grub.conf文件中前三行的行首加#号

1,3s/^/#&/

5.将/etc/yum.repos.d/Centos-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0改为1

%s/\(gpgcheck=\|enabled=\)0/\11/g

6.每4小时执行一次对/etc目录的备份,备份至/backup目录中,保存的目录名为性如etc-201504020202

crontab -e 
0 */4 * * * cp -a /etc /backup/etc-`date +%Y%m%d%H%M`

7.每周2,4,6备份/var/log/messages文件至/backup/messages_logs/目录中,保存的文件名形如,messages-20150402

crontab -e
0 0 * * 2,4,6 cp -a /var/log /backup/message_logs/messages-`date +%Y%m%d`

8.每天每两小时去取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中

crontab -e 
0 */2 * * * grep "^S" /proc/meminf >> /stats/memory.txt

9.工作日的工作时间内,每两个小时执行一次echo "howdy"

crontab -e
0 9-18/2 * * 1-5 echo "howdy"

脚本编程练习

  1. 创建目录/tmp/testdir当前日期时间

  2. 在此目录创建100个空文件:file1-file100

#!/bin/bash
#
dirname="testdir$(date+%Y%m%d%H%M)"
mkdir /tmp/$dirname
for num in {1..100};do    
    touch /tmp/$dirname/file$num
done

3.  显示/etc/passwd文件中位于第偶数行的用户的用户名

#!/bin/bash
#
sed '1~2d' /etc/passwd|cut -d: -f1

4.  创建10用户user10-user19;密码同用户名

#!/bin/bash
#
for i in {10..19};do
  useradd  user$i
  echo "user$i"|passwd --stdin "user$i"
done

5.  在/tmp/创建10个空文件file10-file19

6.  把file10的属主和属组改为user10,一次类推

#!/bin/bash
#
for i in {10..19};do  
    touch /tmp/file$i  
    chown user10:user10 /tmp/file$i
done

原创文章,作者:N24-超,如若转载,请注明出处:http://www.178linux.com/64240

(0)
N24-超N24-超
上一篇 2016-12-19
下一篇 2016-12-20

相关推荐

  • openssh及基于ssl的https的配置

    openssh的简介             OpenSSH 是 SSH 协议的免费开源实现。SSH协议族可以用来进行远程控制, 或在计算机之间传送文件。 而实现此功能的传统方式,如telnet(终端仿真协议)、 rcp ftp、 rlogin、rs…

    Linux干货 2017-05-30
  • TCP连接的状态详解以及故障排查

    我们通过了解TCP各个状态,可以排除和定位网络或系统故障时大有帮助。(总结网络上的内容) 1、TCP状态 linux查看tcp的状态命令: 1)、netstat -nat  查看TCP各个状态的数量 2)、lsof  -i:port  可以检测到打开套接字的状况 3)、 &nbs…

    Linux干货 2015-04-03
  • LAMP及部署wordpress/phpMyadmin

    LAMP详解 wordpress安装 一、引言 lamp含义:黄金组合。简要介绍一下下面这四个东西吧。linux,不用说了有很多发行版本,主流的三大版本是Debian系列,RedHat系列,slackware系列。apache,全称叫Apache HTTP Server,是世界使用排名第一的web服务器软件,httpd是超文本传输协议http服务器的主程序。…

    Linux干货 2016-12-13
  • 马哥教育网络班20期+第3周课程练习

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 # who |cut -d" " -f1 | uniq 2、取出最后登录到当前系统的用户的相关信息。 # last | head -1 3…

    Linux干货 2016-06-26
  • LVS负载均衡实战演练

    LVS负载均衡实战之lvs-nat模型 1.准备好机器,配置好时间同步,配置号网络,主机名 172.16.251.91 client [桥接] [网关为172.16.251.90] #lvs负载均衡两块网卡 172.16.251.90  lvs [网卡1] [桥接] 192.168.42.150  lvs [网卡2] [VMnet8] 192.168.42.…

    Linux干货 2017-06-22
  • Linux的终端类型

    一、了解终端   在早期的年代,主机不是很多,都是一系列的大型主机,简单来说就是用户很多,但主机很少,不可能做到人手一台,但可以在主机上连接一个分屏器,在分屏器上可以连接鼠标键盘以及显示器,这些东西是没有计算能力的,仅仅担任输入和输出的工作,运算和处理都是由主机来完成的。   简单来说终端是用户与主机交互,是必然用到的…

    Linux干货 2016-10-14