初探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)
上一篇 2016-12-18 20:49
下一篇 2016-12-18 21:48

相关推荐

  • 开始学习Linux的一些建议

    建议读者范围 有开发经验者。 科研人员(由其Numrical)。 动手能力强的。 只是好奇,对于Linux只是浅尝辄止的就不建议继续往下看了。 端正学习态度 Linux不等于骇客(or Cracker)。 当然众所周知很多“黑客工具”都是Linux平台上的,我帮助过很多Linux小白发现他们殊途同归都是朝着类似Aircrack-ng去的。 但他们不知道的是:…

    Linux干货 2015-02-26
  • Linux上文件管理命令、元素据及时间戳、bash的工作特性回显和命令展开、定义别名,命令引用。

    文件管理命令: mkdir 创建空目录 语法: mkdir [选项]…目录… 选项: -P:逐层创建目录。 -v:显示过程。 -m:直接给定权限。 注意:路径的基名为命令作用对象。基名路径必须存在。 示例 创建/tmp/x1/a/a1和/tmp/x1/b rmdir 移除空目录 语法 rmdir [选项]…目录&#8230…

    Linux干货 2017-12-10
  • 高级文件系统的管理

    接上一篇文章http://www.178linux.com/40874 移动介质     挂载意味着 使外来的文件系统看起来如同是主目录树 的 一部分     访问前、介质必须被挂载     摘除时,介质必须被卸载   …

    Linux干货 2016-09-08
  • 树 非线性结构 树是n(n >= 0)个元素的集合: (1)每个元素称为结点(node); (2)有一个特定的结点,称为根结点或根(root); (3)除根结点外,其余结点被分成m(m>=0)个互不相交的有限集合,而每个子集又都是一棵树(称为原树的子树Subtree) 注意 n = 0时,称为空树 树只有一个特殊的没有前驱的元素,称为树的根(Ro…

    2017-10-16
  • mysql备份之xtrabackup

    mysql备份之xtrabackup(建议用来备份innodb) 下载地址:https://www.percona.com/downloads/XtraBackup/ 安装xtrabackup [root@node1 ~]# yum install percona-xtrabackup 完全备份 节点一 修改配置文件,…

    Linux干货 2016-07-19
  • gitlib环境部署

         GitLab是利用 Ruby on Rails一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。它还提供一个代码片段收集功能可以轻松…

    2016-05-19

评论列表(1条)

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

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