马哥教育网络班N22期+第6周课程练习

一、总结vim编辑器的使用方法

vim文本编辑器

全屏编辑器,模式化编辑器

vim的教程文件命令:vimtutor

vim pathtosomefile

vim模式:

编辑模式(命令模式),默认模式

输入模式

末行模式

内置的命令行接口;

模式转换:

编辑模式—>输入模式:

iinsert, 在光标所在处前方输入,转为输入模式

aappend,在光标在处后方输入,转为输入模式

o:在当前光标所在行的下方,新建一行,并转为输入模式

I:在当前光标所在行的行首,转换为输入模式

A:在当前光标所在行的行尾,转换为输入模式

O:在当前光标所在行的上方,新建一行,并转为输入模式

输入模式—>编辑模式

esc

编辑模式—>末行模式

末行模式—>编辑模式

esc

vim编辑的打开和关闭操作

打开文件

语法格式:vim [options] [file ..]

技巧:

vim :打开文件,并定位与文本最后一行

vim + 文件路径;直接光标出现在#行

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

关闭文件

1.末行模式下关闭文件

q,退出

wq,保存并退出

q!,不保存并退出

w,保存

w /PATH/TO/SOMEFILE:另存为

w!,强行保存

x:保存并退出

2.编辑模式下关闭文件

ZZ:保存并退出

使用vim编辑多个文件

vim file1 file2 file3

next 切换至下一个文件

prev:切换至前一个文件

last 切换至最后一个文件

first 切换至第一个文件

qa,表示全部退出

:wqall 保存所有文件并退出;

:wall                  

:qall

分窗口显示多个文件

vim o file…:水平分隔显示,vim o file1 file2

vim O file…:垂直分割显示

ctrlw进行文档切换

窗口拆分显示同一个文件

ctrlws:水平拆分窗口

ctrlwv:垂直拆分窗口

在窗口间切换光标:ctrlwarrow(键盘左右键)

vim编辑模式操作

移动光标(编辑模式下)

1、逐字符移动:

h:左

l:右

j:下

k:上

command:移动#个字符

2、以单词为单位移动

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

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

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

command:支持添加数字组合,实现跳#个单词

3、行内跳转

0:绝对行首

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

$:绝对行尾

4、行间跳转

G:直接跳转至第#行

1G, gg:跳转至第一行;

G:最后一行

末行模式下,直接给出行号即可

5、句间跳转

6、段间跳转

{

}

翻屏操作:

编辑模式下:

ctrl f:向下翻一屏

ctrlb:向上翻一屏幕

ctrld:向下翻半屏

ctrlu:向上翻半屏

Enter:按行向后翻

删除单个字符

x:编辑模式下,删除光标所在处的单个字符

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

删除命令:d

d命令根跳转命令组合使用

dw

de

db

d$

d^

dd:删除当前光标所在行

dd:删除光标所处的行起始的共#行;

末行模式下:

started,endadd

.:表示当前行

$:最后一行

+#:向下的#行

交换光标所在处的字符与其后面的字符的位置

xp

替换字符

替换光标所在处的字符;:r CHAR

R:替换模式

复制命令y

用法同d命令

y$          

y^

y0

ye

yw

yb

#COMMAND

yy:复制一整行

#yy:复制#

粘贴命令p

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

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

修改c:先删除内容,再转换为输入模式

编辑模式 –> 输入模式,实现删除操作

用法同d

c$                    

c^

c0          

cb

ce

cw

#COMMAND

cc:删除光标所在的行,并转换为输出模式;

#cc

撤销命令,u

u:撤销前一次的操作,可以撤销此前的n次操作,最多50

撤销前一次撤销的操作:ctrlr

重复前一次编辑操作

.

可视化模式:实现自由选取的操作

v:按字符选取

V:按行选取

vim末行模式操作

1.快速框选内容段

start_pos[,end_pos]

#:特定的第#行,例如5即第5行;

.:当前行;

$:最后一行;

#,#:指定行范围,左侧为起始行,右侧为结束行;

#,+#:指定行范围,左侧为超始行绝对编号,右侧为相对左侧行号的偏移量;

示例:3,+7   #表示第3行,框选之后的7

%:全文

/pattern/:从光标所在处起始向文件尾部第一次被模式所匹配到的行;

示例:/first/,$   #第一匹配frist的内容直到最后一行

/pat1/,/pat2/:从光标所在处起始,第一次由pat1匹配到的行开始,至第一次由pat2匹配到的行结束之间的所有行;

2.可同编辑命令一同使用,实现编辑操作:

y

c      

w /PATH/TO/SOMEFILE:将范围内的文本保存至指定的文件中;

r  /PATH/FROM/SOMEFILE:将指定的文件中的文本读取并插入至指定位置;

示例:/if/,/fi/d    #用来删除匹配出的iffi的框定的内容删除

3.查找

/PATTERN:从当前光标所在处向文件尾部查找能够被当前模式匹配到的所有字符串;

?PATTERN:从当前光标所在处向文件首部查找能够被当前模式匹配到的所有字符串;

n:下一个,与命令方向相同;

N:上一个,与命令方向相反;

4.查找并替换

使用格式:

s/要查找的内容/替换为的内容/修饰符

可把分隔符替换为其它非常用字符:

s@要查找的内容@替换为的内容@修饰符

s#要查找的内容#替换为的内容#修饰符

使用方法:

要查找的内容:可使用正则表达式;

替换为的内容:不能使用正则表达式,但可以引用匹配结果;\1,\2…(可以查看正则表达式)

如果要查找的内容部分在模式中使用分组符号:在替换为的内容中使用后向引用;

直接引用查找模式匹配到的全部文本,要使用&符号;

修饰符:

i:忽略大小写;

g:全局替换,意味着一行中如果匹配到多次,则均替换;

&:引用模式匹配整个串添加字符串

示例:

%s@\<t\([[:alpha:]]\+\)\>@T\1@g 

解释:%表示快速框选的全文,s表示末行模式下的替换功能,@为内容段的分隔符

\<t\([[:alpha:]]\+\)\> :正则表达式,匹配锚定以t为词首的单词

T\1  :将前面匹配到的内容后向引用替换为T

g:表示全局替换

示例:%s@\<t[[:alpha:]]\+\>@&er@g

示例:%s@\<t[[:alpha:]]\+\>@&er@g

讲当前文件中部分内容另存为另外一个文件

末行模式下使用w命令

adder,adder /patch/to/somefile

将另外一个文件的内容填充在当前文件中

r patchto/somefile

shell交互,不用退出执行命令

:!command

高级进阶设定(末行模式,当前有效)

1.显示或取消显示行号

set nu

set nonu

2、显示忽略或区分字符大小写

ignorecase

set ic

3、设定自动缩进

set autoindent

简写为:set ai

取消:set noai

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

set hlsearch

set nohlsearch

5、语法高亮

syntax on

syntax off

6、获取帮助

help

:help subject

vim配置文件,实现高价进阶配置永久有效

etc/vimrc,全局配置

~/.vimrc,家目录下个人配置文件

vim tutor教程命令

    习题:

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

cp /etc/rc.d/rc.sysinit /tmp

vim 末行模式下

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

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

cp /boot/grub/grub.conf /tmp

vim 末行模式下

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

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

vim 末行模式下

:%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

crontab -e

0 */4 * * * filepath=/backups/etc-$(date +\%Y\%m\%d\%H\%M);mkdir -p ${filepath};cp -rf /etc ${filepath};

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

crontab -e

* * * * 2,4,6 filepath=/backups/messages_logs/messages-$(date +\%Y\%m\%d);mkdir -p ${filepath};cp -rf /var/log/messages ${filepath};

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

crontab -e

* */2 * * * grep "^S" /proc/meminfo >>/stats/memory.txt

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

crontab -e

0 9-18/2 * * * echo ""howdy""

脚本编程练习

10、创建目录/tmp/testdir-当前日期时间;

#!/bin/bashmkdir /tmp/testdir-$(date +\%Y\%m\%d)

11、在此目录创建100个空文件:file1-file100

#!/bin/bashmkdir /tmp/testdir-$(date +\%Y\%m\%d)for i in {1..100};do
    touch file${i}done

12、显示/etc/passwd文件中位于第偶数行的用户的用户名;

方法一:
sed -n '2~2p' /etc/passwd
方法二:
sed -n 'n,p' /etc/passwd

13、创建10用户user10-user19;密码同用户名;

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

14、在/tmp/创建10个空文件file10-file19;

#!/bin/bashfor i in `seq 10 1 19`;do
    touch file${i}done

15、把file10的属主和属组改为user10,依次类推。

#!/bin/bashfor i in `seq 10 1 19`;do
    touch file${i}
    chown user${i}:user${i} /tmp/file${i}done

原创文章,作者:N22-武汉-enfp,如若转载,请注明出处:http://www.178linux.com/50005

(0)
上一篇 2016-10-09 09:05
下一篇 2016-10-09 09:06

相关推荐

  • lvs

    1、什么是LVS LVS是Linux Virtual Server的简写,以为Linux虚拟服务器,是一个虚拟服务器集群,其具有很好的可伸缩性、可靠性、可管理性。LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务…

    Linux干货 2016-10-29
  • Linux上获取命令帮助信息及man文档划分

    1.Linux上获取命令帮助信息的多种途径 Linux上获取命令帮助信息有多种途径,但不同的命令类型获取帮助信息也有不同,Linux命令类型主要分为两种: (1)内部命令:指的是集成于Shell解释器程序(如Bash)内部的一些特殊指令,也成为内建(BuiltIN)指令。 内部命令属于Shell的一部分,所以并没有单独对应的系统文件,只要Shell解释器被运…

    Linux干货 2016-10-30
  • gitlab-ce白名单设置杜绝并发数过大引起的封ip故障

    gitlab-ce 7.9安装手札以及上篇文章的问题解决 鸣谢 感谢ruby大神===》章鱼的一路指点,才能拨开迷雾见云天! 章鱼大人:     国内Ansible部落原创翻译之一!     资深运维!     ROR大神!  &…

    Linux干货 2015-09-06
  • Java输入输出流

    1.什么是IO       Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。 &nb…

    Linux干货 2015-04-10
  • 文件、目录权限

    批量创建新用户: newusers passwd格式文件 批量创建用户,必须和/etc/passwd下的文件格式一样   下面开始批量创建:   首先准备好一个文件:用vi命令建一个user.txt 如图: 然后用cat user.txt 然后newusers批量创建,cat /etc/passwd查看下: 创建成功 批量修改用…

    Linux干货 2016-08-04
  • LVM的管理和使用

    LVM的管理和使用

    Linux干货 2017-10-27

评论列表(1条)

  • luoweiro
    luoweiro 2016-10-11 23:18

    vim总结的非常不错,另外在vim中批量修改指定的字符串很熟练,赞