vim编辑器常用命令|vim编辑器操作教程

vim编辑器常用命令|vim编辑器操作教程)

本文以问答的形式对vi编辑器进行认识和常用操作说明,针对使用过程中常见的问题进行解答。适合vi初学者、入门者阅读。

vi是个什么东西

vi编辑器是Visual interface的简称,是Linux和Unix上最基本的文本编辑器。能对文本进行输出、删除、查找、替换、块操作等多种操作,类似于windows上的notepad(但是vi是终端上的程序,没有图形界面)。它没有菜单,只有命令,且命令繁多(这也是很多初学者觉得很难的地方)。同时也注意的是它并不像Word或WPS那样能对字体、格式、段落等其他属性进行编排。

vim编辑器常用命令(vim编辑器操作教程

vim编辑器

上图是centos6.5上的vi(vim)编辑器(直接在终端上输入命令vi即可打开)

2.为什么使用vi

为什么我们要使用vi进行文本编辑,换句话说vi编辑器为什么受大家欢迎。我总结了下,有几个原因:

1)如上面所说:它是unix/linux上面基本的编辑器,安装完系统后就可以直接使用它,不用单独安装;

2)它是非图形界面的编辑器(这哪能说是它的优点呢?),就正是因为它是终端型的编辑器,它才能在unix/linux服务器(没有图形界面的操作系统,或者远程连接到linux/unix)上发挥作用,其它图形界面的编辑器如gedit、kate等此时都是渣渣;

3)vi编辑器本身的强大,全键盘命令操作、有很多快捷键对文本进行操作、支持自定义设置;

4)使用熟练后,你会发现它比其它编辑器gedit等更便捷、高效;

5)因为牛人都用它(扯远老)。

上面我们对vi编辑器有了一个初步的认识,接下来将对如何使用vi编辑器进行提问和解答。下面的问题也是在使用vi编辑器中常常碰到的问题。

3.怎么编辑文件

很多刚刚接触vi的朋友在使用vi file.txt打开文件后,不知道怎么输入或修改内容。这是因为vi编辑器有两种工作模式:Command(命令)模式和Insert(插入)模式),vim还多一种Visual(可视)模式。而我们首次打开文件时,默认的是command模式,因此无法进行编辑内容。

通过下面的输入即可进入insert模式:

i 在光标之前插入;

a 在光标之后插入;

I 在光标所在行的行首插入;

A 在光标所在行的行末插入;

o 在光标所在的行的上面插入一行;

O 在光标所在的行的下面插入一行;

s 删除光标后的一个字符,然后进入插入模式;

S 删除光标所在的行,然后进入插入模式;

上面的命令大家可以打开一个文本文档分别尝试,体会之间的不同。

4.如何关闭文件

打开文件后,不知道怎么退出vi编辑返回到终端上,这也是初学者经常遇到的一个问题。退出文件vi编辑需要在命令模式中输入命令才可进行相应的保存、退出相关操作。

按 Esc 键进入命令模式,然后输入下面的命令可以达到不同的效果。

:w 保存;

:w filename 另存为filename;

:wq! 保存退出;

:wq! filename 注:以filename为文件名保存后退出;

:q! 不保存退出;

:x 保存并退出 ,功能和:wq!相同

ZZ 保存并退出

上面的w表示write,q表示quit。!表示强制的意思,比如:wq!表示强制保存退出。

5.不同模式的区别和切换

通过上面的学习,我们知道vi有三种模式,它们分别是:

Command(命令)模式,用于输入命令(默认是该模式,键入 Esc 也可进入该模式);

Insert(插入)模式,用于插入编辑文本(参考标题3.怎么编辑文件);

Visual(可视)模式,用于视化的的高亮并选定正文(这个是vim独有的模式,在命令模式下,输入 v 即可进入该模式);

6.方便的光标控制

我们常用方向键来上下左右移动光标,要是你知道了下面的方法来控制光标,这是一件多么快乐的事情。

首先习惯性的按一下 Esc 进入命令模式

j 向下移动一行;

k 向上移动一行;

h 向左移动一个字符;

l 向右移动一个字符;

(backspace 也可以向前移动一个字符)

上面的几个命令,大家觉得不能体现出什么优势 就和 方向键的功能一样,其实当你使用习惯时,会发现在输入文本时,右手不用怎么移动(不需要移动到遥远的方向键的位置)就可以移动光标了。下面的技巧,你会更喜欢..

在h、j、k、l动作命令的前面加上数字可以叠加操作,比如 3j,表示向下移动3行。

7.强大的删除操作

在插入模式中,可以使用backspace来删除字符。但是这样删除很慢。习惯性的按 Esc进入命令模式,然后通过命令(h、j、k、l)迅速的移动到你需要操作的地方,使用下面的命令进行删除内容:

x 一个字符;

#x 删除几个字符,#表示数字,比如3x;

dw 删除一个单词;

#dw 删除几个单词,#用数字表示,比如3dw表示删除三个单词;

dd 删除一行;

#dd 删除多个行,#代表数字,比如3dd 表示删除光标行及光标的下两行;

d$ 删除光标到行尾的内容;

J 清除光标所处的行与上一行之间的空格,把光标行和上一行接在一起;

8.怎么撤销修改

往往在对文本编辑时,总有犯错的时候,这时我们如果使用 ctrl+z是不能撤销操作的,正确的方法是:按Esc键(进入命令模式),再按 u 键 即可撤销一次,多按几次 u 就多撤销几次。

记住是在命令模式下输入小写 u 哦...

9.复制和粘贴

说到复制、粘贴,我们也会想到剪贴,上面“7.强大的删除操作”中说的删除操作其实就是剪贴的功能。比如dd(删除一行)后当前行被删除并放入了vi的剪贴区中,然后移动光标到相应的地方,输入p即可把刚删除的内容粘贴到光标处。

p 在光标之后粘贴;

shift p 在光标之前粘贴;

下面举个例,

比如我们想把一个文档的第3行复制下来,然后帖到第5行的后面,我们应该怎么做呢? 、

有如下两种方法:

第一种方法,

先把第3行删除,把光标移动到第3行处,然后用dd动作,接着再按一下shift p键。这样就把刚才删除的第3行帖在原处了(复制);

接着我们再用k键移动光标到第5行,然后再按一下p键,这样就把第3行的内容又帖到第5行的后面了(粘贴)。

第二种方法:

进入命令模式移动光标到第3行,在进入可视模式(按Esc键,然后按v键),移动光标选中第3行的内容,然后按y键复制;再移动指针到第5行,最后按p键;

所以复制和粘贴操作,是命令模式、插入模式及可视模式的综合运用,我们要学会各种模式之间的切换,要常用Esc键,更为重要的学会在命令模式下移动光标。

10.怎么显示行号

很多编辑器都有显示行号的功能,当然vi也有这个功能。

在命令模式下输入:

:set number

即可显示行号

11.ctrl+f不能进行查找

说到查找我们习惯性的想到ctrl+f,在vi中是不行的。习惯性的按Esc键进入到命令模式,然后下车的输入。

/pattern<Enter> :向下查找pattern匹配字符串

?pattern<Enter>:向上查找pattern匹配字符串

使用了查找命令之后,使用如下两个键快速查找:

n:按照同一方向继续查找

N:按照反方向查找

字符串匹配

pattern是需要匹配的字符串,例如:

/abc<Enter> #查找abc

/ abc <Enter> #查找abc单词(注意前后的空格)

除此之外,pattern还可以使用一些特殊字符,包括(/、^、$、*、.),其中前三个这两个是vi与vim通用的,“/”为转义字符。

/^abc<Enter> #查找以abc开始的行

/test$<Enter> #查找以abc结束的行

//^test<Enter> #查找^tabc字符串

12.替换功能

在一般的可视化文本编辑器中,ctrl+h即可进行文本替换操作。而在vi中,需要使用命令来操作。首先进入命令模式,然后下面的输入。

:s/str1/str2/ #用字符串 str2 替换行中首次出现的字符串 str1

:s/str1/str2/g #用字符串 str2 替换行中所有出现的字符串 str1

:.,$ s/str1/str2/g #用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1

:1,$ s/str1/str2/g #用字符串 str2 替换正文中所有出现的字符串 str1

:g/str1/s//str2/g #功能同上

例如:

:s/vivian/sky/ #替换当前行第一个 vivian 为 sky

:s/vivian/sky/g #替换当前行所有 vivian 为 sky

:n,$s/vivian/sky/ #替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky

:n,$s/vivian/sky/g #替换第 n 行开始到最后一行中每一行所有 vivian 为 sky(n 为数字,若 n 为 .,表示从当前行开始到最后一行)

:%s/vivian/sky/ #(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky

:%s/vivian/sky/g #(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky

从上面的例子,我们不难发现::s表示替换的命令,在:s中间可以增加参数n,m表示第n行到第m行,n和m还可以是字符,.表示当前行,$表示最后一行。%可以理解为1,$(第一行到最后一行)。g表示全局的意思(类似js中的正则表达式)。

同时,上面的例子中使用了 / 作为分隔符(默认的),我们也可以使用 #或+ 作为分隔符,此时中间出现的 / 不会作为分隔符。

:s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/

其它功能

vi编辑器还有其它的功能和命令,比如vi中的标记、正则表达式、多个文件的编辑等,请各位读者参考其它文档。

结束语

相信通过上面的阅读,加上大家的实际操作,使用vi已经不是一件难事。Vi只是一个工具,没有想象的那么难,任何工具都是越用越简单,越用越快乐!

推荐阅读