vim编辑器

在使用Linux的管理过程中有很多的工作就是要修改或设置某些重要软件的配置文件,这些配置文件都是以ASCLL的纯文本格式存在的,所以能够学好一个文本编辑器就至关重要了,vim作为高级版的vi编辑器不仅可以用不同的颜色来高亮显示某些重要关键字或字符还能进行如shell脚本的编写,c程序的编辑等功能。

vim编辑器和nano编辑器是一个全屏的编辑器。vim打开文件是以命令行形式来打开的

在vim编辑器中有三种模式:

编辑模式:这是vim打开文件进入的默认模式

末行模式:内建的命令行接口

输入模式:对文件进行编辑操作

打开文件:

vim [options] [file ..]
    +#:打开文件后,直接让光标处于第#行;
    +/PATTERN:打开文件后直接让光标处于第一个被PATTERN匹配到的行的行首;

关闭文件:

编辑模式下关闭文件:ZZ

末行模式下关闭文件:

:q 退出

:q! 强制退出,不保存此前的编辑

:wq 保存并退出

:x 保存并退出

:w /PATH/TO/SOMEFILE 保存文件的路径

模式之间的转换:

打开文件后就处于默认的编辑模式,当我们需要转到输入操作的时候

编辑模式 –》输入模式

i:在光标所在处输入;

a:在光标所在处后方输入;

o:在光标所在处的下方新开一行;

I:在光标所在行的行首输入;

A:在光标所在行的行尾输入;

O:在光标所在处的上方新开一行;

当我们输入完成后要返回编辑模式是使用ESC键;

在编辑模式下进入末行模式只用输出一个:即可

同样退出末行模式进入编辑模式则使用ESC键;

编辑模式下的光标跳转

字符之间的跳转

h:左 ;

j:右;

k:上;

l:下;

单词间跳转:

w:下一个单词的词首 注意:这里的单词是指一个连续的字符串

e:当前或者后一个单词的词尾;

b:当前或后一个单词的词首;

#CMMAND:跳转由#指定的单词个数;例:5w,77e,2b,…..

行首行尾跳转

^:跳转至行首的第一个非空白字符;

0:跳转至行尾;

$:跳转至行尾

行间跳转

#G:跳转至由#指定的行:

1G,gg:跳转至第一行

G:跳转最后一行

句间跳转

段间跳转

}

{

翻屏:

Ctrl+f:向文件尾翻一屏;

Ctrl+b:向文件首部翻一屏;

Ctrl+d:向文件尾部翻半屏;

Ctrl+u:向文件首部翻半屏;

Enter:按行向后翻;

vim的编辑命令

字符编辑:

x:删除光标所在的字符;

#x:删除所在处起始的#个字符;

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

替换命令:

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

删除命令:

d:删除命令,可结合光标跳转实现范围删除;

d$:从光标处删除至行尾;

d^:从光标处删除至行首的第一个非空白字符;

dw:

de:

db:

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

粘贴命令(p,put,paste)

p:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的下方,否则,则招贴到当前光标所在处的后方

复制命令(yank,y)

y:复制,工作原理相似与d命令;

y$:

y^:

y0:

ye:

yw:

yb:

yy:复制一整行;#yy:复制#行;

改变命令(change,c)

实现删除操作并转入输入模式;

c$:

c^:

c0:

cb:

ce:

cw:

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

可视化模式

可用鼠标选定

v:按字符选定;

V:按行选定;

撤销操作

u:撤销此前的操作;#u撤销此前的#个操作;

撤销此前的撤销:ctrl+r

重复前一个编辑操作

.

vim的末行模式

内建的命令行接口

1.地址定界:

#:特定的第#行;例如10即第10行;

.:当前行;

$:最后一行;

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

#,+#:指定行的范围,左侧为起始行的绝对编号,右侧为相对左侧行的偏移量;例如3,+7 从第3行起往后数7行;

%:全文;

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

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

地址定界符可配合编辑命令一起使用,来实现编辑操作;d;y;c;

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

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

2.查找并替换

s:末行模式下的命令 使用格式:

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

在这里查找的内容可以使用正则表达式,但是替换为的内容不能使用正则表达式,但是可以引用

如果“要查找的内容”部分在模式中使用分组符号:在“替换为的内容”中使用后向引用;直接引用查找模式匹配到的全部文本,要使用&符号;

修饰符:

i:忽略大小写;

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

这里的分隔符我们可以把它换成其他非常用的字符如:s@@@;s###

vim的多文件功能

vim FILE1 FILE2 …..

在文件间切换:

:next 下一个

:prev 上一个

:fiest 第一个

:last 最后一个

退出所有文件:

:wqall 保存并退出

:wall 保存所有

:qall 退出所有

多窗口:

-o:水平分割窗口;

-O:垂直分割窗口;

在窗口间切换:Ctel+w

单个文件也可以切割成多个窗口查看;

Ctrl+w,s:水平分割窗口;

Ctel+w,v:垂直分割窗口;

定制vim的特性

这里的特性如在末行模式下设定的话只会对当前vim进程有效

永久有效:

全局:/etc/vimrc

个人用户:~/.vimrc

1.行号

显示:set number,简写为set nu

取消显示:set nomber简写为set nonu

2.括号匹配高亮

启用:set showmatch;简写为set sm

取消:set nosm

3.自动缩进

启用:set ai

禁用:set noai

4.高亮搜索

启用:set hlsearch

禁用:set nohlsearch

5.语法高亮

启用:syntax no

禁用:syntax off

6忽略字符大小写

启用:set ic

禁用:set noic

获取帮助:

:help

:help subject

练习:

1、复制/etc/grub2.cfg文件至/tmp目录中,用查找替换命令删除/tmp/grub2.cfg文件中以空白字符开头的行的行首的空白字符;

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

2、复制/etc/rc.d/init.d/functions文件至/tmp目录中,用查找替换命令为/tmp/functions文件的每个以空白字符开头的行的行首加上#;

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

3、为/tmp/grub2.cfg文件的前三行的行首加上#号;

4、将/etc/yum.repos.d/CentOS-Base.repo文件中所有的enabled=0替换为enabled=1,所有gpgcheck=0替换为gpgcheck=1;

                %s@\(enabled\|gpgcheck\)=0@\1=1@g

vim.png

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

(0)
N24-执念N24-执念
上一篇 2016-12-20
下一篇 2016-12-21

相关推荐

  • 推荐-LVS原理详解

    LVS原理详解 LVS原理详解 LVS简介 LVS结构与工作原理 一.LVS的结构 二.LVS内核模型 三.LVS的包转发模型 1.NAT模型: 2.DR模型: 3.TUN模型: 四.LVS的调度算法 LVS的调度算法分为静态与动态两类。 1.静态算法(4种):只根据算法进行调度 而不考虑后端服务器的实际连接情况和负载情况 2.动态算法(6种):前端的调度器…

    Linux干货 2016-03-27
  • 二、(2)bash的工作特性之:命令执行状态返回值及命令行展开

    bash 工作特性 命令执行状态 命令行展开

    2018-01-10
  • N28-第三周博客作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。
    2、取出最后登录到当前系统的用户的相关信息。
    3、取出当前系统上被用户当作其默认shell的最多的那个shell。
    4、将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。
    5、取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分。
    6、列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中。
    7、显示/var目录下一级子目录或文件的总个数。
    8、取出/etc/group文件中第三个字段数值最小的10个组的名字。
    9、将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中。
    10、请总结描述用户和组管理类命令的使用方法并完成以下练习:
    (1)、创建组distro,其GID为2016;
    (2)、创建用户mandriva, 其ID号为1005;基本组为distro;
    (3)、创建用户mageia,其ID号为1100,家目录为/home/linux;
    (4)、给用户mageia添加密码,密码为mageedu;
    (5)、删除mandriva,但保留其家目录;
    (6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;
    (7)、修改slackware的默认shell为/bin/tcsh;
    (8)、为用户slackware新增附加组admins;

    Linux干货 2017-12-19
  • iptables

    iptables简介 netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。 iptables基础 规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“…

    2017-05-02
  • linux系统初识

          在完成centos7安装后,使用root登陆,查看了解当前根目录。由于root权限高,建议新增用户。执行useradd name命令。登陆后查看是否当前用户用whoami命令。     使用df命令了解系统分区情况以及显示内存free命令。   &…

    2017-07-16
  • 网络基础

    网络小白一个,针对网络的基础知识无从下手,因此本文引用了鸟哥私房菜中的众多概念性知识,在此谢过,本文主要从OSI七层协议,TCP协议和一些网络中专业词汇进行解析,并通过子网掩码的划分,网络接口的配置、路由配置等实例来加深对网络的理解。 一、OSI七层协议:     OSI七层协议的由来:   由于网络链接过程…

    Linux干货 2016-09-07