皮肤白癜风如何治疗 http://m.39.net/pf/a_6624244.html如果用过Linux系统,你应该对Vi/Vim编辑器不陌生。
Vi编辑器是Linux系统默认自带文本编辑,但是大多数的时候,我们更会选择使用Vim编辑器。
Vim是从Vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix/Linux系统用户最喜欢的文本编辑器。
Vim的设计理念是命令的组合。用户学习了各种各样的文本间移动/跳转的命令和其他的普通模式的编辑命令,并且能够灵活组合使用的话,能够比那些没有模式的编辑器更加高效的进行文本编辑。
同时Vim与很多快捷键设置和正则表达式类似,可以辅助记忆。并且Vim针对程序员做了优化。
下图为Ubuntu20TLS系统的Vim编辑器截图:
Vim发展历程
按照时间线,Vim编辑器的发展历程可以总结如下:
80年代末,BramMoolenaar发布了Vim1.0版
年:Vim1.14版发布
年:Vim1.22版发布并被移植到UNIX和MS-DOS操作系统
年:Vim3.0版本发布,并加入了多视窗编辑模式
年:Vim4.0版本发布,该版本是第一个利用图形接口(GUI)的版本
年:Vim5.0版本发布,该版本开始支持代码语法高亮(Highlight)功能
年:Vim6.0版本发布,该版本加入了代码折叠、插件以及多语言支持
年5月:Vim7.0版本发布,该版本加入了拼字检查、上下文补全,标签页编辑等新功能
年8月:Vim7.2版本发布,修复了Vim7.1的一些Bug,并加入了VimScript浮点数支持
年8月:Vim7.3版本发布,该版本主要是修复了之前版本的一些Bug
年-年:每1-2年发布一个小版本,最终的7.x版本是Vim7.4
年:Vim8.0发布,这是一次跨越大版本的更新,带来了许多新功能
年12月:Vim8.2发布,该版本引入了社区呼声较高的弹出窗口(PopupWindows)功能
Vim工作模式
基本上Vi/Vim共分为三种模式,分别是:
命令模式(Commandmode):左下角有一个冒号,这个冒号是我们输入的
输入模式(Insertmode):左下角出现INSERT字符
底线命令模式/一般模式(Lastlinemode,默认):打开文档就是一般模式
怎样打开Vim?
打开Vim的方式有多种,分别如下:
直接在命令行输入vim即可。该种方式打开的vim没有文件,需要使用/p>
vimfilename形式打开filename文件
vim-ofilename1filename2打开多个文件,垂直布局
vim-Ofilename1filename2打开多个文件,水平布局
退出Vim
:qa(退出所有打开的文件,如有修改则失败)
:qa!(强制退出所有打开的文件,忽略对文件的修改)
:wqa(保存且退出所有打开的文件)
:wqa!(保存且强制退出所有打开的文件,如:文件已存在等)
Vim工作模式
一般模式(默认)
Vim打开文档就直接进入一般模式
使用按键移动光标
使用删除字符
使用来复制粘贴
控制光标
你可以通过键盘的控制,离键盘主区太远,效率低。
h(左移动)
j(下移动)
k(上移动)
l(右移动)
怎样一次移动多个字符?
数字+h(左移动n个字符)
数字+l(右移动n个字符)注意:数字+h表示先按数字再按h,编辑器右下角显示数字怎样一次移动多行?
数字+j(下移n行,如:30j下移30行)
数字+k(上移n行,如:30k上移30行)
屏幕控制
Ctrl+f(屏幕移动一页,相当于PageDown按钮)
Ctrl+b(屏幕移动一页,相当于PageUp按钮)
Ctrl+d(屏幕移动半页,d=down)
Ctrl+u(屏幕移动半页,u=up)
+(光标移动到非空格符的下一列)
-(光标移动到非空格的上一列)
0或Home(数字0;移动到该行的行首)
或End(移动到该行末尾)
nspace(n表示数字,space表示空格键,向后移动n个字符)
H(光标移动到这个屏幕最上方那一行的第一个字符)
M(光标移动到这个屏幕中央那一行的第一个字符)
L(光标移动到这个屏幕下方那一行的第一个字符)
G(移动到这个档案的最后一行)
nG(n为数字,移动到这个文档的第n行)
gg(移动到当前文档第一行,相当于1G)
nEnter(n为数字,光标向下移动n行)
查找和替换
/word(向光标之下寻找word的字符串)
?word(向光标之上寻找word字符串)
n(重复前面的查询条件)
如前面是/word,则n向下搜索
如前面是?word,则n向上搜索
N(与n相反)
如果为/word,则N向上搜索
如果为?word,则N向下搜索
:n1,n2s/word1/word2/g(n1和n2为数字,在第n1至n2行之间寻找word1并替换成word2)
:1,s/word1/word2/g(将第一行到最后一行间word1替换成word2字符串)
:1,s/word1/word2/gc(将第一行到最后一行间word1替换成word2,且提示用户是否进行替换)
命令模式
删除单个字符
x(当前行向后删除一个字符,相当于del)
X(当前向前删除一个字符,相当于backspace)
nx(n为数字,连续向后删除n个字符)
nX(n为数字,连续向前删除n个字符)
删除数据行
dd(删除光标所在的行)
ndd(n为数字,删除光标向下的n行,如:20dd)
d1G(删除光标所在行到第一行的所有数据)
dG(删除光标所在到最后一行的所有数据)
d(删除光标所在处,到该行最后一个字符)
d0(删除光标所在处,到该行的最前面一个字符)
复制数据
yy(复制光标所在行)
nyy(n为数字,复制光标所在向下n行)
y1G(复制光标所在行到首行的所有数据)
yG(复制光标所在行到最后一行的所有数据)
y0(复制光标所在字符到行首的所有数据)
y(复制光标所在字符到行尾的所有数据)
粘贴数据
p(将已复制的数据在光标下一行粘贴)
P(将已复制的数据在光标上一行粘贴)
J(将光标所在行与下一行拼接)
cj(重复删除多个数据,如:10cj向下删除10行数据)
u(复原前一个动作)
Ctrl+r(重做上一个动作)
.(重复前一个动作,如:删除)按任意一个进入命令模式,进入命令模式后光标定位到编辑器左下角。该模式允许用户执行退出、保存、查询等操作常用指令
:w(将数据持久化到磁盘)
:w!(强制持久化,是否成功跟权限相关)
:q(退出)
:q!(强制退出,不保存修改后数据)
:wq(保存且退出)
:wq!(保存后且强制退出)(如果有修改,则保存退出,否则直接退出)
:wfilename(将数据存储到filename文件中)
:rfilename(将filename文件内容读入到编辑器中)
:n1,n2wfilename(n1和n2为数字,将n1到n2行的内容存储到filename文件中)