初探VIM_第六周练习(02)

引言—什么是Vim?

接触Linux这么久,想必对于一切皆文件的哲学思想已经不陌生了。因此,学习并掌握用一款Linux文本编辑器,对于玩转LInux来说,是很有必要的。

vi编辑器是Unix系统最初的编辑器,它使用控制台图形模式来模拟文本编辑窗口,允许查看文件中的行、在文件中移动、插入、编辑和替换文本。

在GNU项目将vi编辑器移植到开源世界时,又在vi的基础上做了一些改进。由于它不再是以前Unix中的那个原始的vi编辑器,开发人员也就将它重命名为vi improved,简称vim。

Vim的使用

vim三种模式概述

基本上vim共分为三种模式,分别为一般模式、编辑模式、命令行模式。

一般模式

  • 用vim打开文件,就直接进入一般模式。在这个模式中,可以上下左右按键来移动光标,可以删除字符/整行,可以复制粘贴等操作。

编辑模式

  • 按下“i, I, o, O, a, A, r, R”中的任意之一,可以从一般模式进入到编辑模式中,只有进入了编辑模式才能进行编辑。在编辑模式中,再按下Esc键,就可以回到一般模式。

命令行模式

  • 按下“:、/、?”3个中的任意之一,就可以从一般模式进入到命令行模式中。命令行模式又称末行模式,在这个模式中,可以查找数据,读取、保存、替换、显示行号等一系列的文本操作。另外退出vim编辑器,也是从这个模式下退出的。

三种模式的关系,如下图所示:

图片1.png

  • 根据以上的关系图,不难发现:只能从一般模式切换到编辑模式和末行模式,即仅可实现一般模式和编辑模式,一般模式和末行模式之间的切换,编辑模式和末行模式之间无法进行切换,只能通过中间的桥梁—一般模式。

一般模式

打开文件

# vim [options] [file ..]

如果不指定文件,将进入以下界面:

图片2.png

光标跳转

字符间跳转

h / ←:左;
j / ↓:下;
k / ↑:上;
l / →:右;
#COMMAND:跳转由#指定的个数的字符,COMMAND是h/j/k/l;

单词间跳转

* w:下一个单词的词首;
* e:当前或后一个单词的词尾;
* b:当前或前一个单词的词首;
* #COMMAND:跳转由#指定的个数的单词;

行首行尾跳转

^:跳转至行首的第一个非空白字符;
0:跳转至行首;(绝对行首)
$:跳转至行尾;(绝对行尾)

行间跳转

#G:跳转至由#指定的行;
1G, gg:第一行;
G:最后一行;

句间跳转

):  下一句
(:  上一句
#COMMAND:可以通过#指定一次跳转的数量;

段间跳转

}:  下一段;
{:  上一段;
#COMMAND:可以通过#指定一次跳转的数量;

删除

x:删除光标所在处的字符;
#x:删除光标所在处起始的#个字符;
d:删除命令,可结合光标跳转字符,实现范围删除;
d$:删除当前光标所在处,直至行尾;
d^:删除当前光标所在处,直至行首;
dw:删除当前光标所在处,直至下一个单词的词首;
dd:删除光标所在处的行;
#dd:删除光标所处的行起始的共#行;

复制

y:复制,工作行为相似于d命令;
y$:复制当前光标所在处,直至行尾;
y^:复制当前光标所在处,直至行首;
yw:复制当前光标所在处,直至下一个单词的词首;
yy:复制一整行;
#yy:复制#行;

粘贴

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

其他编辑操作

可视化模式:(进行块选,然后操作)
v:按字符选定;
V:按行选定;
    结合编辑命令使用:d, c, y

撤销(undo)操作:
u:撤销此前的操作;
    #u:撤销此前的#个操作;
撤销此前的撤销:
    Ctrl+r

重复执行前一个编辑操作:
    .(点号)

编辑模式

在一般模式中,只要按下i,o,a等字符就能进入编辑模式。在编辑模式中,可以发现左下角状态栏会出现-插入-的字样(如果是英文环境则是-INSERT-字样),即此刻就可以编辑文本了。键盘上除了[Esc]这个键以外,按下其他的任何键均视为一般输入,所以可以进行编辑了。如下图即为进入编辑模式的截图:

图片3.png

命令行模式

地址定界

:start_pos[,end_pos]    起始位置和结束位置,中间用(,)隔开,且后者可以省略;
#:特定的第#行,例如5即第5行;    (#表示数字)
.(点号):当前行;
$:最后一行;
#,#:指定行范围,左侧为起始行,右侧为结束行;一般右侧值大于左侧值;
#,+#:指定行范围,左侧为超始行绝对编号,右侧为相对左侧行号的偏移量;例如:3,+7;此为相对地址定界法;
.,$-1:从当前行到倒数第二行;
1,$:表示全文:从第一行到最后一行;
%:全文;
/pattern/:从光标所在处起始向文件尾部第一次被模式所匹配到的行;
/first/,$:从第一次能被first匹配到的行开始,到最后一行结束;
/pat1/,/pat2/:从光标所在处起始(开始往下找),第一次由pat1匹配到的行开始,至第一次由pat2匹配到的行结束之间的所有行;
地址定界,可同编辑命令一同使用,实现编辑操作:如,d删除,y复制等;
w /PATH/TO/SOMEFILE:将范围内的文本保存至指定的文件中;
r /PATH/FROM/SOMEFILE:将指定的文件中的文本读取并插入至指定位置;

查找

/PATTERN:从当前光标所在处向文件尾部查找能够被当前模式匹配到的所有字符串;
?PATTERN:从当前光标所在处向文件首部查找能够被当前模式匹配到的所有字符串;
    n:下一个,与命令方向相同;
    N:上一个,与命令方向相反;

查找并替换

s:末行模式的命令;使用格式:
s/要查找的内容/替换为的内容/修饰符
可把分隔符替换为其它非常用字符:即将s//替换为 s@@@ s###

要查找的内容:可使用正则表达式;
替换为的内容:不能使用正则表达式,但可以引用;
    如果“要查找的内容”部分在模式中使用分组符号:在“替换为的内容”中使用后向引用;
    直接引用查找模式匹配到的全部文本,要使用&符号;
修饰符:
    i:忽略大小写;
    g:全局替换,意味着一行中如果匹配到多次,则均替换;

关闭文件

ZZ        保存并退出;
:q        离开vim编辑器;
:q!        强制退出,不保存此前的编辑操作;
:wq        保存并退出;
:w        将编辑的文件写入硬盘文件中;
:x        保存并退出;
:w /PATH/TO/SOMEFILE         将保存的修改后,保存到其他文件中。类似于另存为。

多文件编辑

  • 1、通过vim FILE1 FILE2 ...命令来使用一个vim打开多个文件。

  • 2、在vim中先使用:files命令查看编辑的同时打开的文件是什么,如下图所示,我们同时打开了两个文件。按下任意键之后,就可以回到vim的一般模式。

    图片4.png

  • 3、在文件间切换:

    :next / :n  下一个;
    :prev / :N  上一个;
    :first   第一个;
    :last   最后一个;
  • 4、下面就可以在打开的多文件之间进行复制粘贴等操作。

  • 5、退出所有文件:

    :wqall  保存所有文件并退出;
    :wall       只是保存所有文件;
    :qall       只是退出所有文件;

多窗口编辑

输入命令vim -o | -O FILE1 FILE2 ...,则进入多窗口编辑模式,如下图所示:

-o:水平分割窗口
-O:垂直分割窗口
在窗口间切换:Ctrl+w, ARROW(箭头↑↓→←)
注意:单个文件也可以分割为多个窗口进行查看:
Ctrl+w, s:水平分割窗口
Ctrl+w, v:垂直分割窗口

图片5.png

图片6.png

定制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 on
    禁用:syntax off 
6、忽略字符大小写
    启用:set ic
    禁用:set noic

总结

Vim的学习曲线相当的陡峭,入门不易,深入需要花时间,熟练记忆并练习三种模式对应的操作,方能熟能生巧。

原创文章,作者:N24_VC,如若转载,请注明出处:http://www.178linux.com/64089

(0)
N24_VCN24_VC
上一篇 2016-12-18
下一篇 2016-12-18

相关推荐

  • 最简单也最难:运维监控的最后1公里

    谈运维我们不得不提监控,监控是运维的起点,也是难点。随着IT架构逐渐复杂化,从前端到IT底层,中间涉及浏览器、网络、服务器、操作系统、中间件、应用、数据库等,每个环节厂商不尽相同。当出现异常需要定位哪个环节出了问题的时候,排查就耗时耗力,若使用优云监控产品,以上难题不再是问题。优云全栈运维监控覆盖了所有环节的监控,真正做到监控无盲区,运维无隐患。 运维最后一…

    系统运维 2017-01-09
  • 编译安装LAMP-centos7

    编译安装LAMP (centos7 基于模块化) 编译安装所需版本 Httpd 2.4,PHP 5.4,MariaDB 5.5通用二进制格式(绿色安装包) MAriDB5.5 绿色安装 1、#mkdir lamp :创建一个文件夹,存放软件的版本 2、从官网上下载httpd2.4 mariaDb 5.5 PHP 5.4到该文件夹下 3、# tar xvf m…

    Linux干货 2017-05-17
  • 鸟哥?马哥?靠边站!今天猫哥带你玩千万PV级别运维架构实战

    1.哼,从今天开始马哥linux,就是我猫哥的天下了!,马哥你奏凯! 我猫哥在此宣誓,从今以后马哥教育正式更名猫哥教育! 哼,信猫哥,得永生! 2.妹的,都好好给我学习,猫哥我盯着呢 3.猫哥我第一次出镜,给咱来个特写啊小伙,拍的好看了,猫哥就免费给你讲讲Linux运维之道。 4.哎哟,拍的还不赖,猫哥我算是45°角仰望星空了,来来,猫哥给你讲讲互联网运维架…

    Linux干货 2016-04-01
  • ​文件共享服务之FTP

    文件共享服务之FTP 文件共享服务之FTP 一、什么是文件共享服务 二、FTP 三、响应码 四、FTP存储和mysql存储有什么不同? 五、用户认证 六、FTP安装与配置 一、什么是文件共享服务 简单理解就是文件或存储块设备可以共享给大家使用。  1、实现共享服务有三种! (1)ftp:属于应用层服务,可以跨平台使用(linux<—&gt…

    Linux干货 2016-04-18
  • N25_第六周

    1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; %s@^[[:space:]]+@#&@g 2、复制/boot/grub/grub.conf至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符; %s@^[[:spac:]]+@@g…

    Linux干货 2017-02-13
  • http特性

    一、何为http 什么是http?http是Hyper Text Mark Language的缩写,超文本标记语言。Apache下的httpd是实现了这一功能的开源软件。 二、http特性 http特性1:持久连接及MPM参数设置 KeepAlive {On|Off} #是否启动持久连接 MaxKeepAliveRequests 100 …

    Linux干货 2015-10-15

评论列表(1条)

  • 马哥教育
    马哥教育 2016-12-23 12:27

    赞,vim是将来工作很常用的工具~希望能灵活运用~继续加油~