初探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

相关推荐

  • sed和awk的用例及pam安全措施-第十五周

    总结sed和awk的详细用法; sed用法 sed(Stream EDitor)是一款流编辑器,用来对文本进行过滤与替换操作。其原理是:通过文件或管道读取文件内容,但是sed默认并不直接修改源文件,而是一次仅读取文件的一行至模式空间(pattern space)根据sed指令进行编辑并输出结果后清除模式空间,即所有的操作都是在模式空间中进行的。 语法格式 s…

    2017-06-05
  • 走向了一条不归路 – – 开始

    前言:很高兴在这里认识大家,跟大家一起学习一起进步。  基础知识 1.计算机系统的组成 2.计算机的体系结构 3.存储网络 DAS–直接连接存储   (数据块)   存储设备与主机的紧密相连       1.管理成本较低,实施简单   &…

    2017-07-16
  • Linux文本处理三剑客之一sed

    这周我们学习了文本处理工具三剑客之一的sed,对于之前学的grep同样的重要,也同样是一个难点。sed是针对一个文件或者多个文件一行一行处理的,它处理的时候,把当前处理的行存储在模式空间,处理完成后,把缓冲区内容输出到屏幕上,接着处理下一行。直到文件末尾。原文件并没有经过更改。 1、sed一些常用的选项     -n …

    2017-08-26
  • OPenSSL

    OPenSSL   OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用.   SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准。…

    Linux干货 2016-11-07
  • Linux系统启动流程

        下面按照系统的启动顺序来进行逐一的讲解。 一、POST     当我们按下开机的电源后,主板上的芯片组会首先向CPU发出一个reset指令,之后待芯片组检测到电源供电稳定后便撤去reset指令,CPU就会跳转到BIOS中的启动代码位置; BIOS首先要检测关键设备(如内显…

    Linux干货 2015-05-23
  • N25_第三周博客作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@test ~]# who root     tty1         2016-12-03&nb…

    Linux干货 2016-12-16

评论列表(1条)

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

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