您的位置:首页 > 运维架构 > Linux

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

2017-08-04 00:00 363 查看

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表示当前文档第一行,所以就是复制当前行到第一行的数据,其余的根据光标操作里面的解释,也能够比较容易的理解,感觉理解着记忆会更有效.
另外,我好像少写了一个操作:

yy,复制光标坐在行往下
行.
删除

x/Xx表示删除后面一个字符
X表示删除前面一个字符
x删除后面n个字符
dd删除当前行
dd删除光标往下
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返回到一般模式.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐