Linux学习第十九篇--大爱vi编辑器之基本操作

来源:互联网 发布:网吧网络拓扑结构图 编辑:程序博客网 时间:2024/06/06 19:36

VIM编辑器概述

vim可以说是,在学习linux和工作中用的最频繁的文本编辑工具了,当然,在VIM的帮助手册里,并不认为这只是一个文本编辑器.
而是 一个程序员的文本编辑器~
vim兼容vi的功能,但是也有不同的地方.他优化了vi很多地方.
他可以用来编辑ASCII文件,特别是用来编写程序.vim会根据文档的扩展名或者文件开头信息,来判断文件的内容,从而实现语法高亮等功能.

当然vim的用法有很多,其中需要注意的一点是,如果我们使用vi/vim编辑的文件不存在,那么vi/vim就会在缓冲区建立一块区域用来存储数据.

VIM的三种模式

在正式使用vim之前,有必要先了解一下VIM的三种模式.
当我们使用vi/vim命令编辑文件的时候,刚开始进入文件时的状态就是一般模式.

如图所示,如果我们打开的是一个已存在的文件的话,那么在最下面一行则会显示该文件的部分信息.
如果我们打开的是一个不存在的文件,那么最后一行将会显示(下图的newfile是我建立文件的名称):

当我们从其他两种模式进入一般模式的时候,则会显示如下图:

这里有一点需要说明,因为我的linux设置了中文,所以此处显示的数据才是中文的.
在一般模式中,我们可以通过一些输入来对数据进行增删改查操作,具体的操作将在下文解析.
在我们进入一般模式之后,如果我们需要编辑文件,就可以通过输入[i,I,o,O,a,A,r,R]中的任何一个字符进入编辑模式.
当我们进入编辑的时候,在屏幕的最下方则会显示:

或者

这时候,我们就可以进行文本编辑操作了,在文本编辑操作的时候,我们可以通过[ESC]按键返回一般模式.
如果我们在一般模式的时候键入[/]或者[?]或者[:]三个按键之一,那么就会进入指令模式.







在指令模式我们可以执行一些功能性和复杂的操作.
关于vi编辑器的三种模式,可以看下图.

通过刚才学的知识,我们可以总结一下.

一般模式:

当我们使用vi命令打开文件的时候,默认的就是一般模式。

在这个模式里面,我们可以执行对数据的删除,复制,粘贴的操作

编辑模式:

在这个模式我们可以输入内容

指令模式:

在这个模式可以执行查找,读取,保存,替换等操作

也就是说,

一般模式对应着增删改查基本操作。

编辑模式对应着具体文本操作。

指令模式对应着功能性及复杂操作。

VIM的基本操作

在了解vim的基本操作之前,我们先看一下

通过上图我们可以看到,vim可以对标签,内容,错误以不同的颜色来显示(我的样式可能有点花哨...或许不仔细看看不清表示空数据的那个符号).
而且,在窗口最下方会保留一行来作为信息显示的地方,类似于windows的状态栏.

因此,我们可以将窗口分为两个部分,一个是上面的区域,另一个就是最下面一行这个位置.
上面的区域用来显示文本数据,而下面这一行则会根据我们的操作来显示提示.
在下文中,我们将把第一部分作为数据展示区域,而第二部分则成为状态栏.

ok,接下来就开始学习vim的三种模式下的操作.

一般模式

在开始的时候,我们简单的提到了一般模式的操作,接下来就比较详细的说一下一般模式的具体操作.
首先了解一下光标移动的操作.

一般模式下,简单操作光标h或者左箭头光标向左移动一个字符j 或者下箭头光标向下移动一个字符k 或者上箭头光标向上移动一个字符l 或者右箭头光标向右移动一个字符








个人觉得这个实际上不用专门去记,正常情况下,我们的操作也是使用方向键来进行这样的操作,至于hjkl几个按键,相信用的机会会很少,

翻页操作[ctrl]+[f]或者[page down]下一页[ctrl]+[b]或者[page up]上一页[ctrl]+[d]下半页[ctrl]+[u]上半页
哎呀...这个操作分类还真不好分类...有些操作不知道该如何形容....
+移动到非空格的下一列-移动到非空格的上一列
[数字]+[空格]往右移动对应数值个字符
0(数字)或者home移动到行首$或者end移动到行尾
H移动到当前页首行首字符M移动到当前页中间行的首字符L移动到当前页尾行首字符
G移动到当前文档最后一行[数值]G移动到当前文档第[数值]行gg 移动到当前文档首行[数值][回车]      往下移动[数值]行
上面这些都是移动光标(游标)的基本操作,在一般模式下还有一些功能性的操作.
功能性操作粘贴p/Pp用于将已复制的数据粘贴在光标的下一行.
P用于将已复制的数据粘贴在光标的上一行.复制yy复制游标所在的哪一行y1G复制光标所在行到第一列的数据yG复制光标所在行到最后一列的数据y0复制光标所在字符到行首字符的数据y$复制光标所在字符到行尾字符的数据补充其实感觉这种组合比较好理解.首先我们知道yy是用于复制当前行的命令,1G表示当前文档第一行,所以就是复制当前行到第一行的数据,其余的根据光标操作里面的解释,也能够比较容易的理解,感觉理解着记忆会更有效.
另外,我好像少写了一个操作:
[n]yy,复制光标坐在行往下[n]行.删除x/Xx表示删除后面一个字符
X表示删除前面一个字符[n]x删除后面n个字符dd删除当前行[n]dd删除光标往下[n]行d1G删除当前行到第一行的数据dG删除当前行到最后一行的数据d$删除当前位置到行尾的字符d0删除当前位置到行首的字符其他功能性操作J(大写)将当前行和下一行合并为一行c重复删除多个数据,比如5cj表示删除5行数据u还原前一个动作,类似于windows的[CTRL]+[Z]最后补充一个比较好玩的操作
  .   看清楚了哈,前面有个小点[ . ],这个[ . ]表示可以前一个动作.
查找/[word]
?[word]在文档中查找[word]字符串
在文档中网签查找[word]字符串n
N继续执行上一个查找操作
反向执行上一个查找操作替换:起始行 , 结束行s /被替换单词/替换为/g将起始行中所有需要被替换的单词替换指定的单词.如果在/g的后面加上c的话在替换字符前将会询问用户

啧啧....这么多指令,难不难过...绝不绝望...

但是这些命令总结一下的话,还是很好记的...
首先是
上下左右移动光标,
pagedown,pageup翻页.
p粘贴,
y复制,
x和d删除.
u还原.
 /单词和?单词查找
:开始,结束s/字符串1/字符串2/g替换 如果末尾加c则替换前询问.

ok,就这么简单,至于还有一些其他的..记住0$gG的用法,拼一下就好了.


切换到编辑模式

在我们最开始三模式的图中,上面描述了如何从一般模式切换到编辑模式.
这里在具体一点.
我们通过在一般模式输入按键进入编辑模式.
i在当前光标位置插入I在光标所在行的第一个非空字符处插入a在当前光标的下一个字符处插入A在当前行最后一个字符后插入o在当前行的下一行插入新的一行O在当前行的前一行插入新的一行r取代光标所在字符一次R一直替换光标所在位置的字符
我感觉这几条命令都挺好玩的.敲代码的时候肯定会经常用到.
当然之前说过从编辑模式和指令模式可以通过[ESC]来切换到普通模式.

切换到指令模式

可以在一般模式下通过键入下列指令来进入指令模式.
指令:w保存编辑的数据:w!强制保存:q退出:q!强制退出:wq保存并退出ZZ有修改则保存退出,无修改则不保存并退出.:w [文件]另存为:r在当前数据中,添加另一个档案的数据,这些数据将会追加在当前字符后面.:n1,n2 w[文件]将指定行之间的内容另存为:! 命令暂时离开vi,然后执行命令:set nu显示行号:set nonu不显示行号这几个命令感觉就很好记了.
同样,也是通过ESC返回到一般模式.


原创粉丝点击