)
vi和vim的区别
一直以来,小编习惯会用vi file.txt来进入一个文件进行查看或者编辑,可是也发现有的人习惯用vim file.txt,本来本着”难得糊涂“的原则(也许vi是vim的简写吧,反正没觉得有什么不一样),暗地里给自己的小聪明点赞,写两个字母简直不要太爽(是不是觉得小编是个”戏精”)。但是今天咱是来做正经事儿的,可不能再”糊涂了“,那么我们今天就先回答这样一个问题之后再向下看吧。
vi(Visual Interface,可视化接口)和vim(VI iMproved V,增强版全屏编辑器)都是Linux中的编辑器,不同的是vim 是vi的升级版本,它兼容了vi的所有指令。vi适用于文本编辑,但是vim更适用于coding。vim官网()自己也说vim 是一个程序开发工具而不是文字处理软件。vim有vi没有的一些特性,例如:vi中按u只能撤销上一次命令,而在vim中则可无限制撤销;vi只能在unix运行,而vim还可在windows,mac等操作平台运行;vim还可以用不同颜色加亮你的代码,vi则不能(本文最后略有介绍)。
下面会详细介绍一下vi和vim的通用命令~~
vi/vim的三种模式
命令模式(Insert mode)
vi/vim进入一个文件之后即进入了命令模式,在该模式下的所有输入都是命令。
若文件是一个不存在的新文件(vi/vim new.txt),则在底部会提示你打开的是一个新文件,可以正常编辑保存。
插入模式(Command mode)
在命令模式下按字母i/a/o都可以切换到插入模式(不要以为只有i才是插入哦),在该模式下可以进行文本编辑。
按ESC回到命令模式。
底行模式(Last line mode)
在命令模式下按:可以切换到底行模式,即可以在最底部的一行输入命令。
按ESC回到命令模式。
常用的vi/vim命令
大家已经了解vi/vim的三种模式了,下面我们就介绍一下我们常用的vi/vim命令。在阅读下面内容的时候一定要谨记命令是在什么模式下执行的哦,这样才容易理解。以下带”:”表示是在底行模式下,否则在命令模式下,输入命令后,按Enter键执行命令。
文件编辑完毕后需要保存文件该怎么操作呢?
:f
查看文件状态。在底部可以看到”文件名称 文件总行数 光标所在行占比”
:w
将编辑的数据写入硬盘档案中。相当于将编辑的数据存储一下
:w!
强制写入。不过,到底能不能写入,还是跟对该档案的档案权限有关!
:q
退出vi。若没有编辑文件,执行命令后会直接退出;反之,执行后会提示”已修改尚未保存”,可用!强制执行。
:q!
不保存强制退出。只要你有从头开始的勇气,这个命令你随便用!
:wq
保存后退出。:x也有相同功能;快捷键shift+ZZ(大写)。若文件没有编辑,wq为不存储离开退出vim命令,否则保存后离开。总而言之,打开文件离开的时候,只要你对自己期间的这波操作没有意见的话,你都可以用这个命令,特别省心!
:w filename
文件另存为filename。简直十分便捷有木有,一边编辑一边备份不要太爽哦!
:r filename
读入另一个文件中的数据,然后加到光标所在行的下一行。合并文件呢!
:n1,n2 w filename
将n1行到n2行的内容另存到filename中
怎么显示行号?
:set nu
即set number,显示行号
:set nonu
即set nonumber,不显示行号
按i/a/o可以从命令模式切换到输入模式进行编辑,不同命令决定开始时光标的位置
i
从光标所在位置开始输入。
I
从光标所在行的第一个非空格字符处开始输入。如果某行开头就有很多字符,再也不用一个一个移动过去啦,非常有用。
a
从光标所在字符的下一个字符处开始输入
A
从光标所在行的最后一个字符处开始输入。当然可以先i,再按End,随你高兴。
o
在光标所在行的下一行开始输入新行
O
在光标所在行的上一行开始输入新行
r
只会取代光标所在的那一个字符一次
R
会一直取代光标所在的文字,直到按下 ESC为止
你是否曾经烦恼自己只能让光标一下一下动,是否曾经懊恼为什么我不能让光标指哪打哪?现在小编就来做个知识的搬运工,让光标为你所用。
h(←)
光标向左移动一个字符(向左箭头键)
j(↓)
光标向下移动一个字符(向下箭头键),或者数字+Enter键(常用)
k(↑)
光标向上移动一个字符(向上箭头键)
l(→)
光标向右移动一个字符(向右箭头键),或者数字+Space键(常用)
0
光标移动到本行开头,相当于按Home键
$
光标移动到本行末尾,相当于按End键
w
可跳到下个单词的首
e
可跳到单词尾
有人说了,移动一个字符用键盘上的箭头键就好了,字母还要记住每个字母对应哪个方向,这块好鸡肋。鸡不鸡肋先听小编告诉你一个小秘密:仔细观察你的键盘,你是不是发现hjkl是排列在一起的呢?h在左就向左移,l在右向右移,只需要记住J是向下,那么k就是向上了,这样记忆是不是很好记?另外你还可以在字母前加上数字,这样就可以移动几个字符,比如说10h是向左移动10个字符,15l是向右移动15个字符,20j是向下移动20行,25k是向上移动25行。
你还可以像word中一样翻页:
Ctrl+f
向下翻页,相当于[Page Down]按键 (常用)
Ctrl+b
向上翻页,相当于[Page Up]按键 (常用)
Ctrl+d
向下翻半页(记忆ctrl+down)
Ctrl+u
向上翻半页(记忆ctrl+up)
你也可以以一个屏幕为单位操作光标:
H
光标移动到这个屏幕的最上方那一行的第一个字符(记忆Highest)
L
光标移动到这个屏幕的中央那一行的第一个字符(记忆Lowest)
M
光标移动到这个屏幕的最下方那一行的第一个字符(记忆Middle)
G
移动到这个档案的最后一行(常用)
nG
移动到本文档的第n行。例如20G则会移动到这个档案的第20行(可配合:set nu)。:n也可以
gg
移动到这个档案的第一行,相当于 1G (常用)
看到这里,你是不是发现了一个很优秀的命令:nG?简直不能太优秀了哇!
寻找某个字符串/批量替换修改?小编想你也是需要的
/string
光标之下寻找某个字符串
?string
光标之上寻找某个字符串
n
重复前一个搜索动作,向下寻找
N
重复前一个搜索动作,向上寻找
:s/string1/string2/
替换光标所在行
:1,.s/string1/string2/g
第1行到当前行,将所有string1替换成string2,”.”表示当前行,g表示一直替换退出vim命令,不加g表示只替换遇到的第一个。
:1:$s/string1/string2/g
第1行到末尾行,将所有word1替换成word2;等同于%s/string1/string2/g,%是全局的意思
:1:$s/string1/string2/gc
第1行到末尾行,将所有string1替换成string2,替换前确认是否替换
:1:$s/string1/r&/gc
全局替换,&表示要替换的字符,即string1。意思是将所有string1替换成换行符后加word1;等同于%s/string1/r&/gc
:n1,n2s/string1/string2/g
第n1行到第n2行,将所有string1替换成string2
cc
替换当前行
C/c$
替换当前行中从光标处到行末的全部字符
cw
替换当前行中从光标处到行末的全部字符
ce
替换当前行中从光标处到行末的全部字符
cb
替换当前行中从光标处到行末的全部字符
后5个替换命令并没有给出要替换的内容,所以实际操作的时候是先删除同时进入插入模式,然后手动输入替换内容。
删除命令
x
向后删除一个字符,相当于delete键;nx向后删除n个字符
X
向前删除一个字符,相当于backspace键;nX向前删除n个字符
D
删除当前行光标后的所有字符
dd
删除光标所在整行;ndd删除光标所在行加向下的共n行
d1G/dG
删除光标所在行到第一行的所有数据/删除光标所在行到最后一行的所有数据
d0/d$
删除光标所在字符到本行首字符的数据/删除光标所在字符到本行末尾字符的数据
复制与粘贴命令
yy
复制光标所在整行;nyy复制光标所在行加向下的共n行
y1G/yG
复制光标所在到第一行的所有数据/复制光标所在到最后一行的所有数据
y0/y$
复制光标所在字符到本行首字符的数据/复制光标所在字符到本行末尾字符的数据
p
将复制的数据粘贴到光标下一行
P
将复制的数据粘贴到光标上一行
J
将光标所在行与下一行结合成一行
有没有发现删除和复制命令的相似之处呢?赶紧找到记忆的窍门吧!
还原与重做命令
u
复原上一个动作
Ctrl+r
重做上一个动作
是不是贼喜欢windows编辑下的撤销与重做命令?vi/vim也有哦,记得要用呀!
vi/vim显示/编辑多个文件
命令:vim file1 file2 file3 …[多个文件]
在底行模式下,
:next 切换到下一个文件;或者bn
:prev 切换到上一个文件;或者bp
:first 切换到第一个文件
:last 切换到最后一个文件
:q 退出当前文件
:qa 退出所有文件
注意:使用qa的时候若不能顺利退出,可以选择一个文件一个文件退出
命令:vim -o file1 file2 file3 …[多个文件] 水平显示多个文件
命令:vim -O file1 file2 file3 …[多个文件] 垂直显示多个文件
分屏显示一个文件
命令:vim file
先执行Ctrl w再按s :水平拆分窗口
先执行Ctrl w再按v :垂直拆分窗口
可多次切割显示
窗口间切换命令是先执行Ctrl w,再按箭头键或者hjkl
退出当前用:q,退出所有用:qa
记忆:Ctrl w 表明是在windows模式下,s是standard的缩写,v是vertical的缩写。同一个文件中,前后核查比对的时候这个很好用哦!
设置专属vi/vim
是不是厌倦了一成不变的黑底白字或者白底黑字(注意高亮功能只在vim中)还看不到文件中的分隔符?vi/vim又来了!
首先拷贝全局vim配置文件到自己的目录下,命令是cp /etc/vimrc ~/.vimrc。将对应功能的命令直接粘贴到~/.vimrc中保存即可。比如说set nu(永久显示行号),syntax on(语法高亮显示),set autoindent(自动缩进),set nowrap(不自动换行)等。
vi/vim有很多很多命令,常用的就这么多啦!另外相同的目的有多种实现方式,这里有这么多,总有一款适合你!
———END———
限 时 特 惠:本站每日持续更新海量各大内部创业教程,一年会员只需128元,全站资源免费下载点击查看详情
站 长 微 信:jiumai99