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

相关推荐

  • shell脚本一键安装二进制Apache

    安装背景:用的一台最小化安装的centos6。 编译安装安装的必备安装gcc,gcc-c++ 安装包arp,arp-util以及pcre的压缩包已经传到七牛,没有通过官网下载。太慢。 apache是通过官网下载的,所以下载比较慢,需要的话更改下地址 不足,只按照正常流程写,未做任何异常判断处理 #/bin/bash #一键安装Apache #安装GCC ec…

    Linux干货 2016-07-10
  • 快速删除无用包组

    快速删除无用组 第一步: [root@cloud ~]# yum grouplist >> list.txt 第二步: 编辑 list.txt把需要留下来的删除 第三步: 创建脚本 remove.sh 运行 #/bin/bash # # while read…

    Linux干货 2016-06-09
  • 网络班23期学习宣言

    马哥Linux运维学院 学习宣言 亲爱的小伙伴:        欢迎大家报名马哥Linux运维网络学习班,跟随马哥学习Linux技术,成就Linux大牛之梦。在这里,我们不仅可以学习到最优秀的技术课程,还可以跟着追梦的小伙伴们一起学习、一起进步。 为了督促大家一直积极认真努力的学习,请各位同学在评论区写出你的学习宣言。…

    2016-09-05
  • linux的发展形成杂谈

    纵观linux的发展,可以看得出Linux是那个时代的产物,是操作系统群雄并起时候的真名天子。从1945年第一台计算机发明开始,人民就开始产生了对操作的系统的需求,首先是单个命令的输入,然后是单批次工作的产生,之后就是多批次流程的产生,然后就是多任务多批次流程,人民一直一直不懈的努力研发一个真正意义上的操作系统。 终于,在70年代,大神级的人物KenThom…

    Linux干货 2016-10-31
  • linux发行版的基础目录名称命名法则及功用规定。

    Linux文件系统:         Linux:glibc标准C库                  &nb…

    Linux干货 2016-10-30
  • 软件包管理、自建yum源与LAMP架构的自动编译安装

    软件包管理 CentOS采用RedHat开发的rpm包管理器管理应用程序包。rpm包是由二进制可执行程序、库、配置文件、帮助文件等组成,支持安装、卸载、查询、升级、降级、校验等操作。 从组成结构上,rpm包由文件清单、安装和卸载时运行的脚本构成。 包管理器有其自带的公共数据库。其数据包括:程序包的名称、版本、依赖关系,功能说明,及各个文件的路径及校验码信息等…

    Linux干货 2016-12-05

评论列表(1条)

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

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