我保证~这是你想要的vim

Posted 百迈客医学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我保证~这是你想要的vim相关的知识,希望对你有一定的参考价值。

vim命令是我们常用的Linux下的文本编辑命令,也有很多时候我们用来查看源码。也许有人会问了,vim不就是编辑文本然后保存吗,这有什么值得写的?小编本来也是这样以为的,也是在写完之后才发现,原来看似简单的东西,你不深挖汇总,永远不知道它会带给你多大的惊喜。你想感受下这种惊喜吗?那么就跟随小编往下扒拉吧!


(图片来源:

http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html


我保证~这是你想要的vim

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官网(http://www.vim.org)自己也说vim 是一个程序开发工具而不是文字处理软件。vim有vi没有的一些特性,例如:vi中按u只能撤销上一次命令,而在vim中则可无限制撤销;vi只能在unix运行,而vim还可在windows,mac等操作平台运行;vim还可以用不同颜色加亮你的代码,vi则不能(本文最后略有介绍)。


下面会详细介绍一下vi和vim的通用命令~~


我保证~这是你想要的vim

vi/vim的三种模式


命令模式(Insert mode)



vi/vim进入一个文件之后即进入了命令模式,在该模式下的所有输入都是命令。

若文件是一个不存在的新文件(vi/vim new.txt),则在底部会提示你打开的是一个新文件,可以正常编辑保存。

插入模式(Command mode)



在命令模式下按字母i/a/o都可以切换到插入模式(不要以为只有i才是插入哦),在该模式下可以进行文本编辑。

按ESC回到命令模式。

底行模式(Last line mode)



在命令模式下按:可以切换到底行模式,即可以在最底部的一行输入命令。

按ESC回到命令模式。



我保证~这是你想要的vim

常用的vi/vim命令


大家已经了解vi/vim的三种模式了,下面我们就介绍一下我们常用的vi/vim命令。在阅读下面内容的时候一定要谨记命令是在什么模式下执行的哦,这样才容易理解。以下带”:”表示是在底行模式下,否则在命令模式下,输入命令后,按Enter键执行命令。


我保证~这是你想要的vim文件编辑完毕后需要保存文件该怎么操作呢?


:f

查看文件状态。在底部可以看到”文件名称 文件总行数 光标所在行占比”

:w

将编辑的数据写入硬盘档案中。相当于将编辑的数据存储一下

:w!

强制写入不过,到底能不能写入,还是跟对该档案的档案权限有关!

:q

退出vi若没有编辑文件,执行命令后会直接退出;反之,执行后会提示”已修改尚未保存”,可用!强制执行。

:q!

不保存强制退出只要你有从头开始的勇气,这个命令你随便用!

:wq

保存后退出:x也有相同功能;快捷键shift+ZZ(大写)。若文件没有编辑,wq为不存储离开,否则保存后离开。总而言之,打开文件离开的时候,只要你对自己期间的这波操作没有意见的话,你都可以用这个命令,特别省心!

:w filename

文件另存为filename简直十分便捷有木有,一边编辑一边备份不要太爽哦!

:r filename

读入另一个文件中的数据,然后加到光标所在行的下一行合并文件呢!

:n1,n2 w filename

将n1行到n2行的内容另存到filename中


我保证~这是你想要的vim怎么显示行号?


:set nu

即set number,显示行号

:set nonu

即set nonumber,不显示行号


我保证~这是你想要的vim按i/a/o可以从命令模式切换到输入模式进行编辑,不同命令决定开始时光标的位置


i

从光标所在位置开始输入

I

从光标所在行的第一个非空格字符处开始输入如果某行开头就有很多字符,再也不用一个一个移动过去啦,非常有用。

a

从光标所在字符的下一个字符处开始输入

A

从光标所在行的最后一个字符处开始输入当然可以先i,再按End,随你高兴。

o

在光标所在的下一行开始输入新行

O

在光标所在的上一行开始输入新行

r

只会取代光标所在的那一个字符一次

R

会一直取代光标所在的文字,直到按下 ESC为止


我保证~这是你想要的vim你是否曾经烦恼自己只能让光标一下一下动,是否曾经懊恼为什么我不能让光标指哪打哪?现在小编就来做个知识的搬运工,让光标为你所用。


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?简直不能太优秀了哇!


我保证~这是你想要的vim寻找某个字符串/批量替换修改?小编想你也是需要的


/string

光标之下寻找某个字符串

?string

光标之上寻找某个字符串

n

重复前一个搜索动作,向下寻找

N

重复前一个搜索动作,向上寻找

:s/string1/string2/

替换光标所在行

:1,.s/string1/string2/g

第1行到当前行,将所有string1替换成string2,”.”表示当前行,g表示一直替换,不加g表示只替换遇到的第一个。

:1:$s/string1/string2/g

第1行到末尾行,将所有word1替换成word2;等同于%s/string1/string2/g,%是全局的意思

:1:$s/string1/string2/gc

第1行到末尾行,将所有string1替换成string2,替换前确认是否替换

:1:$s/string1/ &/gc

全局替换,&表示要替换的字符,即string1。意思是将所有string1替换成换行符后加word1;等同于%s/string1/ &/gc

:n1,n2s/string1/string2/g

第n1行到第n2行,将所有string1替换成string2

cc

替换当前行

C/c$

替换当前行中从光标处到行末的全部字符

cw

替换当前行中从光标处到行末的全部字符

ce

替换当前行中从光标处到行末的全部字符

cb

替换当前行中从光标处到行末的全部字符

后5个替换命令并没有给出要替换的内容,所以实际操作的时候是先删除同时进入插入模式,然后手动输入替换内容


我保证~这是你想要的vim删除命令


x

向后删除一个字符,相当于delete键;nx向后删除n个字符

X

向前删除一个字符,相当于backspace键;nX向前删除n个字符

D

删除当前行光标后的所有字符

dd

删除光标所在整行;ndd删除光标所在行加向下的共n行

d1G/dG

删除光标所在行到第一行的所有数据/删除光标所在行到最后一行的所有数据

d0/d$

删除光标所在字符到本行首字符的数据/删除光标所在字符到本行末尾字符的数据


我保证~这是你想要的vim复制与粘贴命令


yy

复制光标所在整行;nyy复制光标所在行加向下的共n行

y1G/yG

复制光标所在到第一行的所有数据/复制光标所在到最后一行的所有数据

y0/y$

复制光标所在字符到本行首字符的数据/复制光标所在字符到本行末尾字符的数据

p

将复制的数据粘贴到光标下一行

P

将复制的数据粘贴到光标上一行

J

将光标所在行与下一行结合成一行


有没有发现删除和复制命令的相似之处呢?赶紧找到记忆的窍门吧


我保证~这是你想要的vim还原与重做命令


u

复原上一个动作

Ctrl+r

重做上一个动作


是不是贼喜欢windows编辑下的撤销与重做命令?vi/vim也有哦,记得要用呀!


我保证~这是你想要的vimvi/vim显示/编辑多个文件


命令:vim file1 file2 file3 ...[多个文件]

在底行模式下,

:next 切换到下一个文件;或者bn

:prev 切换到上一个文件;或者bp

:first 切换到第一个文件

:last 切换到最后一个文件

:q 退出当前文件

:qa 退出所有文件

注意:使用qa的时候若不能顺利退出,可以选择一个文件一个文件退出


我保证~这是你想要的vim


命令:vim -o file1 file2 file3 ...[多个文件] 水平显示多个文件


我保证~这是你想要的vim


命令:vim -O file1 file2 file3 ...[多个文件] 垂直显示多个文件


我保证~这是你想要的vim


我保证~这是你想要的vim分屏显示一个文件


命令:vim file

先执行Ctrl w再按s :水平拆分窗口

先执行Ctrl w再按v :垂直拆分窗口

可多次切割显示

窗口间切换命令是先执行Ctrl w,再按箭头键或者hjkl

退出当前用:q,退出所有用:qa

记忆:Ctrl w 表明是在windows模式下,s是standard的缩写,v是vertical的缩写。同一个文件中,前后核查比对的时候这个很好用哦!


我保证~这是你想要的vim


设置专属vi/vim


是不是厌倦了一成不变的黑底白字或者白底黑字(注意高亮功能只在vim中)还看不到文件中的分隔符?vi/vim又来了!


首先拷贝全局vim配置文件到自己的目录下,命令是cp /etc/vimrc ~/.vimrc。将对应功能的命令直接粘贴到~/.vimrc中保存即可。比如说set nu(永久显示行号),syntax on(语法高亮显示),set autoindent(自动缩进),set nowrap(不自动换行)等。

 


vi/vim有很多很多命令,常用的就这么多啦!另外相同的目的有多种实现方式,这里有这么多,总有一款适合你!


以上是关于我保证~这是你想要的vim的主要内容,如果未能解决你的问题,请参考以下文章

选择vim编辑器的7个理由

选择vim编辑器的7个理由

Vim 注册标准

你想要的sublimewebstormvi/vim不得不用的快捷键简报实用

ubuntu下vim中内容拷贝到浏览器

vim环境变量配置背景色配置