马哥教育网络班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)
N22-武汉-enfpN22-武汉-enfp
上一篇 2016-10-09
下一篇 2016-10-09

相关推荐

  • N26——第三周作业

    一、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可 [root@localhost ~]# who | cut -d ' ' -f1 | uniq root zhaoyujia 二、取出最后登录到当前系…

    Linux干货 2017-01-14
  • 文件查找和压缩

    文件查找     在文件系统上查找符合条件的文件;       文件查找:locate, find        非实时查找( 数据库查找) :locate        实时查找:find locate &n…

    Linux干货 2016-08-18
  • lvs-nat的实现

    nat的知识点

    2018-03-03
  • 硬链接与软链接的简述

    我们知道文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。用户数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但…

    Linux干货 2016-10-20
  • Linux的软件包管理(RPM)

    软件包管理(RPM)   本章节内容:   软件运行环境   软件包基础  Rpm包管理   一、软件运行环境(了解API和ABI)  API:应用程序开发接口,POSIX国际标准。  程序源代码–> 预处理–> 编译–&…

    Linux干货 2016-08-21
  • Linux基础——文件管理

    Linux基础——文件管理 文件管理及常用命令详解       Linux文件系统是以/为基本的倒置树状结构,我们来进一步学习下文件或者目录的操作和管理命令:  目录相关操作:cd、pwd、mkdir、rmdir 目录及文件检索:ls 复制、移动、删除:cp、mv、rm…

    Linux干货 2016-09-27

评论列表(1条)

  • luoweiro
    luoweiro 2016-10-11 23:18

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