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 22:23
下一篇 2016-12-21 00:15

相关推荐

  • 马哥教育网络班21期+第一周课程练习

    一、计算机的组成及其功能 自上个世纪40年代开始截止到目前,我们所有的计算机包括手持的智能终端设备,它们整个组织体系设备都是遵循冯诺依曼体系结构。 现代计算机设备的组成部分: 运算器、控制器、存储器、输入设备、输出设备 控制器:控制器是整个计算机的枢纽,一般是控制计算机整个部件之间协调的,比如运算器要想运算的话,首先得从存储器中取出数值。或者输入设备输入数。…

    Linux干货 2016-07-07
  • linux中数组的定义与使用

            我们常说,程序=指令+数据,往细一点的方向说,指令具体指的有哪些?数据又有哪些? 总结一下: 指令大概包括,编程语言中的语法关键字(如bash编程中的关键字有for,while,case,if,until,continue,break),还包括系统中的命令,和一些自己编写的函数,这些…

    2017-05-23
  • DNS高级应用之子域授权&区域转发

    一、环境准备:    1、准备三台测试服务器,划分如下:    主DNS服务器:eth0:192.168.10.203;负责mylinux.com域解析;确保可以正常解析      子域DNS服务器:eth0:192.168.10.120; 负责子域ops.mylinux.com解析; &…

    Linux干货 2015-06-01
  • linux基础入门之二

    linux基础入门之二 1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 1.cp文件复制: 常用选项: -i:交互式复制,即覆盖之前提醒用户确认; -f:强制覆盖目标文件; -r, -R:递归复制目录; -d:复制符号链接文件本身,而非其指向的源文件; -a:-dR –…

    Linux干货 2016-09-26
  • 学以致用

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 cp – copy files and directories 复制文件或目录 使用格式: 单文件复制 cp [OPTION]… [-T] SOURCE DEST 如果DEST不存在,即创建文件并复制源文件数据流; 如果DEST存在,且为非目录文件时,将覆盖…

    Linux干货 2016-10-13
  • 系统管理之程序包管理(一) rpm详解

    系统管理之程序包管理(1):     程序包管理是运维人员的基本工作素质之一。在操作系统上,不断的安装,卸载,配置应用程序包,让不同程序包运行提供不同的服务;利用某种工具完成某些操作的过程。这就要求运维工作人员熟悉安装,管理应用程序包。 在linux上,程序包主要有两种:tar,rpm包。 一、程序包概述: 系统接口   &nb…

    Linux干货 2016-08-21