程序员

注册

 

发新话题 回复该主题

程序员专用编辑器VI或VIM [复制链接]

1#
皮肤白癜风如何治疗 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文件中)

分享 转发
TOP
发新话题 回复该主题