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

相关推荐

  • N23_第五周

    1.显示/boot/grub/grub.conf中以至少一个空白字符开头的行 egrep “^[[:space:]]{1,}” /boot/grub/grub.conf 2.显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行 egrep “^#[[:space:]]{1,}.*[^[:space…

    Linux干货 2017-02-27
  • 第十七周作业

    1、结合图形描述LVS的工作原理; 工作方式: LVS由前端的负载均衡器(Load Balancer,LB)和后端的真实服务器(Real Server,RS)群组成。RS间可通过局域网或广域网连接。LVS的这种结构对用户是透明的,用户只能看见一台作为LB的虚拟服务器(Virtual Server),而看不到提供服务的RS群。当用户的请求发往虚拟服务器,LB根…

    2017-05-27
  • 107-tomcat

    一.编程语言基础  1.1 编程语言: 硬件级:微码编程,汇编语言 系统级:C,C++,…

    2016-12-02
  • N25-第一周作业

    第一周博客作业 1.描述计算机的组成及其功能 2.按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别 3.描述Linux哲学思想,并按照自己的理解对其进行解释性描述。 4.说明Linux系统上命令的使用格式:详细介绍,ifconfg,echo,tty,startx,export pwd,history,shutdown,poweroff,rebo…

    Linux干货 2016-12-02
  • 马哥教育网络班21期-第一次课程作业

    计算机组成部分及其作用 1.总线 电子管道,携带信息字节并在各个部件间传输。分为地址总线,数据总线,控制总线。 CPU最大可寻址范围:2^N*M,  N为地址总线数量,M为数据总线数量。 2.I/O设备 I/O设备及输入输出设备,最常见的输入设备就是我们非常熟悉的键盘,鼠标,我们通过我们通过这些设备向计算机传达指令,让计算机完成我们想要它完成的工作…

    Linux干货 2016-06-29
  • 负载均衡一个PHP应用

    1、mariadb、nfs服务器的设置 (centos 7) [root@localhost ~]# rpm -q rpcbind rpcbind-0.2.0-32.el7.x86_64 [root@localhost ~]# rpm -q nfs-utils (默认n…

    Linux干货 2016-10-31