大师网-带你快速走向大师之路 解决你在学习过程中的疑惑,带你快速进入大师之门。节省时间,提升效率

编辑器之神——VIM

前言

VIM(Vi IMproved),是一个命令行界面的编辑器。它几乎无所不能,被称为编辑器之神。最重要的是VIM的普及程度简直惊人,几乎任何一个UNIX及类UNIX系统都默认装有VIM编辑器,所以,在掌握了VIM之后,无论换到什么系统,都会很容易上手。

一、相关说明

1、VIM的默认界面如下图所示,这是输入如下命令得到的

$ vim


VIM默认界面

从中可以了解到VIM的版本信息、维护人、修改者以及几个简单的帮助命令。

VIM是一个慈善软件,如果有赞助或者慈善得奖,所得钱财将全部用于救助乌干达的孤儿,软件的使用完全免费,使用者是否捐款赞助也不勉强,但是有那种评比最后有奖金拿的活动,如果遇到的话,去支持一下VIM也是一件很好的事。

了解更多的信息可以访问其网站https://vim.sourceforge.io/ 或者 http://www.vim.org/

2、也可以直接使用vim命令打开一个文件浏览或编辑,具体操作如下:

$ sudo vim /etc/passwd

打开后光标位于首行第一个字符前,可以使用上下左右键移动光标

如果知道要编辑文件的行数,比如,打开/etc/passwd文件第18行,可以使用vim命令精确定位所打开的文件,运行如下命令实现:

$ sudo vim +18 /etc/passwd

此时光标会自动定位于第18行首个字符前

3、默认情况下,一次只能打开一个文件,如果想一次打开多个文件,可以使用参数实现,如下

$ sudo vim -o /etc/passwd /etc/group

打开后两个文件上下显示,如下图:


VIM一次性打开两个窗口

光标默认位于第一个文件首行首个字符前,可以直接编辑该窗口中的文件,想要切换的别的窗口,使用Ctrl+W快捷键即可。如果要打开更多的文件,在每个文件名中间用空格隔开即可。

4、退出vim

1)命令模式下直接输入ZZ(保存退出),ZQ(不保存退出)

2)输入冒号进入EX模式,然后输入q命令退出或wq强制退出

3)使用Ctrl+Z快捷键强制退出

二、VIM工作模式

在介绍vim的基本操作之前,需要先介绍下vim的工作模式。vim是一个模式编辑器,通过模式的切换来完成编辑的目的,具体来说,vim至少有三个最基本的也是最主要的模式,即命令模式(又称一般模式)、编辑模式和EX模式(又称底行命令模式)。

1、命令模式

使用vim时进入的第一个界面就是命令模式,处于命令模式时,从键盘接收的输入全部会当成vim的控制命令而不是文本,可以对文件内容进行复制、粘贴、替换、整行删除等操作。

2、编辑模式

在命令模式下,使用a/i/o任意一个命令都可以切换到编辑模式,不同的键只是切换后光标所处的位置不同,只有在编辑模式下,才可以进行写操作,对文件编写完成后,按下Esc键可回到命令模式。判断处于编辑模式的方法是左下角有“插入”或”insert“标识。


处于编辑模式

3、EX模式

在命令模式下按下“:”键,会发现在文件的最下方出现了一个“:“,这时候就可以输入并执行Linux的相关命令了,退出EX模式同样是按Esc键返回。

三、VIM的常用基本操作

了解了上面的一些知识,现在就可以熟悉一下vim的基本操作了

1、光标移动(命令模式下)

1)以字符为单位移动

当你打开vim习惯性的使用鼠标进行光标的定位时,你会很可惜的发现没有任何反应,因为vim中定位工作通过上下左右方向键来完成。另外,由于方向键在键盘的位置靠右下角,在编辑文档的过程中频繁移动光标时,你会发现很不方便,所以vim同样提供使用h,j,k,l四个键进行光标移动,h向左,j向下,k向上,l向右。

2)以单词为单位移动

使用w键使光标跳到下一个单词词首,使用b键使光标跳到上一个单词词首,使用e键使光标跳到下一个单词词尾。

3)移动到行首或行尾

”$“命令可以将光标移到行尾,“0”命令将光标移到行首。“n$"命令可以将光标移到第n行行尾(n为数字),但是对”0“命令不可以。

4)移动到匹配的括号处

使用”%“命令,这个查找匹配括号的命令真的很有用。

5)移动到指定行

使用”nG“(n为数字)命令可以将光标快速地定位到指定行。

2、查找

光标移动到指定位置后会进行一些操作,查找时最常用的操作之一。命令模式下:

输入”/要查找的字符串“,再按回车,可从当前光标向后查找字符串

输入”?要查找的字符串“,再按回车,可从当前光标向前查找字符串

未找到要查找的字符串,会在底部提示”Pattern not found“或”找不到模式“

待查找的字符串时严格区分大小写的,同时,如果字符串中出现特殊符合(\ * ? ^ $)的话,需要在特殊符号之前加转义字符“\”,还可以查找指定行:

查找一个以hxl为行首的行:/^hxl

查找一个以hxl为行尾的行:/hxl$


向后查找字符串“Bug”

3、复制、粘贴和删除

如果处于命令模式下,可以按下x键来删除光标以后的单个字符,快速按两下d则可可以进行整行删除,如果想删除连续多行,例如想删除10行,则可以按下“10dd"。但此时被删除行的内容并没有真的被删除,而是临时存放在了内存中,此时(命令模式下)将光标移到指定位置,按下p键就可以将刚才删除的内容再粘贴到此处。

还可以通过快速按两下y键来将一行复制,或者通过前面加上数字再加上”yy“键来复制多行。同样通过p键粘贴

还有一个区域复制功能,不过这个需要进入另一个模式。将光标移动到需要复制的第一行处,然后按下v键,这样底部状态栏会出现”可视“字样,代表进入了可视模式,这时候就可以通过方向键进行区域的选取了,全部选取完后,按下Y键,然后将游标移动到目标位置后,按下p键即可完成区域复制。


可视模式区域复制

4、撤销和重新执行操作

有时候我们会不小心误删除文件内容,可以通过u键来撤销刚才的命令,撤销过多,还可以通过”.“或”Ctrl+r“组合键来重新执行刚才的操作。

5、写操作

想往文件里写东西,这就只能进入编辑模式进行了。

四、VIM的一些配置

为了让vim用着更顺手,我们通常会对它进行一些配置

1、显示行号,自动缩进和语法高亮

具体方法是运行vim,输入冒号进入EX模式,依次输入如下配置参数:

:set nu #显示行号

:set ai #自动缩进

:syntax on #语法高亮显示

将它们保存在vim配置文件中就不用每次都配置这三个参数了,配置文件地址为/etc/vim/vimrc,只需要把这三个设置命令追加并保存在vimrc配置文件的尾部即可。配置好的效果图如下:


配置好的效果图

语法高亮功能实现的前提是保存为文件且文件扩展名清晰明了,比如上图打开的文件example.c

2、定义快捷键

vim之所以强大的一个原因是可以自定义各种快捷键,把自己常用的命令或操作定义为快捷键,用起来更加高效。下面把前面的三个设置定义为快捷键:

打开vim配置文件

$ sudo vim /etc/vim/vimrc

在尾部添加如下命令并保存

noremap <F6> :set nu

noremap <F7> :set ai

noremap <F8> :set syntax on

这样在按下上述定义的快捷键时,vim底部就会出现相应的设置,这时再按下回车就会生效

3、高效配置

一些配置能使vim的使用更加高效

filetype on #启用文件类型侦测

set encoding=cp936 #指定当前字符编码为windows简体中午

set tabstop=4 #设置tab键为4个空格

set mouse=a #在终端中使用鼠标

set ignorecase #查找时忽略大小写

尤其设置在终端使用鼠标,是不是终于圆了你的梦想。

五、VIM中文手册

vim很强,不是这么简单写一点东西能说清楚的,那么遇到不懂的问题,通常的方法就是找VIM手册来学习,当然vim的手册是英文的,不过很幸运的是有志愿者把它翻译成了中文,感谢这些为Linux世界做出贡献的人们。

最新的中文vim手册下载地址为:https://sourceforge.net/projects/vimcdoc/

最新的中文vim手册在线地址为:http://vimcdoc.sourceforge.net/doc/help.html

下载后使用如下命令解压缩

$ sudo tar zxvf vimcdoc-1.9.0.tar.gz

进入解压后的文件目录,使用如下命令安装:

$ sudo ./vimcdoc.sh -i

中文文档并不会覆盖掉原来的英文文档,安装后还需要在/etc/vim/vimrc的配置文件中添加如下配置参数:

:set helplang=cn

添加后重新启动vim,默认就可以查阅vim中文手册了,方法为在vim中输入以下命令:

:help usr

还可以直接定位到章节

:help usr_n(n为数字,范围为01到32)

界面如下图


vim中文手册

六、编辑器之神的真谛——插件

看了这么多,也许你还是不明白vim为什么被称为编辑器之神,这是因为各种插件可以全面增强vim的功能。

vim的插件类似于Firefox的插件,可以从我们开头列出的官网地址寻找,在左边列表寻找Scripts——>Browse all,点进去就可以看到所有的插件以列表形式展出,下面以TagList插件为例进行说明

下载地址为http://www.vim.org/scripts/script.php?script_id=273

下载最新版本4.6,下载后使用如下命令解压缩:

$ sudo unzip taglist_46.zip

解包后将plugin目录下的taglist文件移动到/etc/vim/plugin目录下

$ sudo cp -rf plugin/taglist.vim /etc/vim/plugin

然后重启vim,这时可能会出现错误提示:

Taglist: Exuberant ctags (http://ctags.sf.net) not found in PATH. Plugin is not loaded.

安装ctags即可

$ sudo apt-get install exuberant-ctags

打开vim后输入如下命令:

:Tlist

然后就会出现如下图所示TagList窗口


TagList窗口

从上图可以看出TagList的主要作用是浏览和管理程序代码,左边窗口会列出当前文件中所有的宏、全局变量、函数名等,查看代码极为方便。

至于其它插件的安装方法大同小异,其作用可以查看下载页的description

许多开发者甚至把vim打造成了IDE(集成开发环境),步骤很复杂,但是我们一般不需要懂,只需要拿来用即可,实用主义万岁。这些开发者们都把自己的成果分享在了GitHub,下面是地址:

https://github.com/HenryHo2015?tab=repositories

这个地址中有三个vim的项目如下图


三个VIM项目

感谢vim配置文件的分享者们

这里还有一个游戏形式的vim的练习网站,帮助我们快速的掌握vim

最后,希望大家在vim的世界里玩的愉快