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

相关推荐

  • yum使用和源码编译进程

    yum 是通过分析RPM的标头数据,根据各软件的依赖关系制作出有依赖关系时的解决方案,然后自动处理软件的依赖性问题,以解决软件安装或升级的问题。  yum使用方法: yum [options] [command] [packages …] install package .. 通过yum安装软件包 update package .. 更新软件包 u…

    Linux干货 2016-08-24
  • FHS文件系统各目录功能

    / 根目录。 包含了几乎所的文件目录。相当于中央系统。进入的最简单方法是:cd /。 /boot 引导程序,内核等存放的目录。 这个目录,包括了在引导过程中所必需的文件,引导程序的相关文件(例如grub,lilo以及相应的配置文件以及Linux操作系统内核相关文件(例如vmlinuz等一般都存放在这里。在最开始的启动阶…

    Linux干货 2016-10-20
  • 脚本进阶

    1、写一脚本,用ping命令测试192.168.1.1-192.168.1.10之间的所有主机的在线状态,在线的主机使用绿色表示,不在线的主机使用红色表示   2、如何给网络配置多个地址,有哪些方式   3、写一个脚本 (1)假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干 (2)显示所有以K开头的文件…

    2018-01-08
  • 编译安装Linux内核

    实验前准备:在https://www.kernel.org/下载内核 这里我们下载的是:linux-4.14.10.tar.xz du -sh /app/linux.tar/ 此命令可查看内核文件大小 编译完成后/lib/modules下会生成4.14.10版的内核 1,tar xvf linux-4.14.10.tar.xz -C /app/解压缩准备好的…

    2018-01-03
  • Hello World 集中营

    编程的人应该都知道什么是Hello World。这是一个最简单的程序,其只在屏幕上输出“Hello World”字样,这通常是初学者的在学习编程时的第一个示例。把打印出 “Hello World” 作为第一个范例程序,现在已经成为编程语言学习的传统。“Hello World”起源于Brian Kernighan 和Dennis MacAlistair Rit…

    2016-05-17
  • Nginx 原理

    Web服务器处理并发连接请求的工作模型有以下几种方式: 1、单线程web服务器(Single-threaded web servers)此种架构方式中,web服务器一次处理一个请求,结束后读取并处理下一个请求。在某请求处理过程中,其它所有的请求将被忽略,因此,在并发请求较多的场景中将会出现严重的性能问题。(即一次只能处理一个请求) 2、多进程/多线…

    Linux干货 2017-05-07