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

相关推荐

  • PXE自动化安装系统服务

    PXE PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或M…

    Linux干货 2016-11-07
  • Tomcat性能优化-2

    修改Connector运行模式 启用NIO 或 APR bio介绍 bio(blocking I/O,阻塞式I/O操作),表示Tomcat使用的是传统的Java I/O操作 默认模式,性能最差,没有经过任何优化处理和支持 nio模式 nio(non-blocking I/O),Java SE 1.4…

    Linux干货 2016-09-19
  • 马哥教育网络班21期-第八周课程练习

    第八周作业 1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 集线器:集线器工作在OSI七层模型的物理层;功能是将传输信号再生或放大,收到数据后将数据转发至除接收接口外的所有接口(广播)),但是由于集线器所有端口属于共享带宽,属于同一个冲突域和属于同一个广播域,容易产生信号冲突导致帧碎片,现今大部分集线器已经被交换机所替代; 网…

    Linux干货 2016-09-01
  • N26-第四周作业-邢岩

    马哥门徒-N26-邢岩   精神练习需要深入认真的工作以及热情的劲头。当你开始练习,你是在挣扎、在反抗,你需要集中精力,然后慢慢进步。那么,我们就开始吧。   第一题,复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。   ~]# cp -r /et…

    Linux干货 2017-02-15
  • 封装和结构及set

    封装|set

    Linux干货 2017-10-09
  • 学习宣言

    人所缺乏的不是才干而是志向,不是成功的能力而是勤劳的意志。

    Linux干货 2016-10-30