初探VIM

引言---什么是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编辑器,也是从这个模式下退出的。

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

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

一般模式

打开文件

# vim [options] [file ..]

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

光标跳转

字符间跳转

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]这个键以外,按下其他的任何键均视为一般输入,所以可以进行编辑了。如下图即为进入编辑模式的截图:

命令行模式

地址定界

: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的一般模式。

  • 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:垂直分割窗口

定制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的学习曲线相当的陡峭,入门不易,深入需要花时间,熟练记忆并练习三种模式对应的操作,方能熟能生巧。

初探VIM编辑器的更多相关文章

  1. 玩转Vim 编辑器

    一:VIM快速入门 1.vim模式介绍 以下介绍内容来自维基百科Vim 从vi演生出来的Vim具有多种模式,这种独特的设计容易使初学者产生混淆.几乎所有的编辑器都会有插入和执行命令两种模式,并且大多数 ...

  2. Linux vim编辑器使用详解

    在Linux中,主要编辑器为vi或者vim,本文围绕vim做简单的讲解说明: Linux默认自带vi(vim)编辑器,其程序包为: [root@xuegod163 ~]# rpm -qf `--1.8 ...

  3. REDHAT一总复习1 vim编辑器的使用 删除所有者列 删除指定行

    将文件/home/student/vimfile.txt 复制到server 上的/home/student/longlisting.txt . 根据下列要求,使用vim编辑器更改 /home/stu ...

  4. Linux笔记:使用Vim编辑器

    Vi编辑器是Unix系统上早先的编辑器,在GNU项目将Vi编辑器移植到开源世界时,他们决定对其作一些改进. 于它不再是以前Unix中的那个原始的Vi编辑器了,开发人员也就将它重命名为Vi improv ...

  5. VIM编辑器简单总结

    第一讲小结  1. 光标在屏幕文本中的移动既可以用箭头键,也可以使用 hjkl 字母键.         h (左移)       j (下行)       k (上行)     l (右移)  2. ...

  6. Linux Vim编辑器使用简单讲解

    在Linux中,主要编辑器为vi或者vim,本文围绕vim做简单的讲解说明:Linux默认自带vi(vim)编辑器,其程序包为:[root@linuxidc.com ~]# rpm -qf `whic ...

  7. linux学习笔记--vi与vim编辑器

    vi编辑器全名为Visual Interface,即为可视化接口,类似于Windows中的记事本 vim相当于是vi的一个升级版本,包含vi的一切操作命令,vim相对于vi做了哪些提升: 1.vim支 ...

  8. vim编辑器详解

    vi(vim)是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi(vim).vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率. vi是“visual interface”的 ...

  9. 如何让vim编辑器永久显示行号

    在Linux环境下的编辑器有vi.vim.gedit等等.进入这些编辑器之后,为了方便我们需要编辑器显示出当前的行号,可偏偏编辑器默认是不会显示行号的.我们有二种办法可以解决: 第一种是,手动显示:在 ...

随机推荐

  1. [stat.simulation] Hasting-Metropolis Algorithm

    问题背景:我们有一些观测数据X,这些数据假设是取值为1,...,m:我们还知道每个数据观测到的频数为: 但是我们现在无法计算B的大小.(这是一个假设,毕竟计算一串数字的和不是难事) 问题: 我们需要通 ...

  2. DP(Dynamic programming)——尽力学习之中(2016 HUAS ACM 暑假集训-5)

    这周不打算按照以往的方式更新博客,而是采用整体的方式.一是因为学的太少,没东西写:二是这篇博客会经常更新的.如题,DP——尽力学习之中. ------------------------------- ...

  3. [BZOJ 3682]Phorni

    后缀平衡树的模板题? I'm so weak…… 现在觉得替罪羊树比 treap 好写,是不是没救了喵- #include <cstdio> #include <cmath> ...

  4. 详细解说Java Spring的JavaConfig注解 【抄】

    抄自: http://www.techweb.com.cn/network/system/2016-01-05/2252188.shtml @RestController spring4为了更方便的支 ...

  5. Beta版本冲刺——day4

    No Bug 031402401鲍亮 031402402曹鑫杰 031402403常松 031402412林淋 031402418汪培侨 031402426许秋鑫 站立式会议 今日计划表 人员 工作 ...

  6. 动态sql语句基本语法--Exec与Exec sp_executesql 的区别

    http://www.cnblogs.com/goody9807/archive/2010/10/19/1855697.html 动态sql语句基本语法 1   :普通SQL语句可以用Exec执行   ...

  7. Date和Calendar时间操作常用方法及示例

    package test; import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date; /** ...

  8. JVM1.6 GC详解

    前言  JVM GC是JVM的内存回收算法,调整JVM GC(Garbage Collection),可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率. ...

  9. JQuery获取元素本身HTML

    $('<p>').append($(this).clone()).html() 原理:创建一个匿名对象,克隆本身,追加到匿名对象中,再获取匿名对象的HTML

  10. [Maven]Apache Maven 入门篇

    作者:George Ma 上 写这个 maven 的入门篇是因为之前在一个开发者会的动手实验中发现挺多人对于 maven 不是那么了解,所以就有了这个想法.这个入门篇分上下两篇.本文着重动手,用 ma ...