VI和VIM
vi vim
linux有多重编辑器,但是在不同的distribution上不一样,vi基本是在每个distribution上都支持的。
vim是vi的增强版。vim具有程序编辑的能力,可以主动以字体颜色辨别语法的正确性,方便程序设计。
vi的三种模式:
vim编辑器的三种模式:一般模式、编辑模式和命令行模式。
在一般模式中可以进行删除、复制和粘贴的功能,但是无法更加明确的编辑文件内容。
从一般模式切换到编辑模式可以按下i、I、o、O、a、A、r、R键。具体说明如下,个人觉得只需要记住i就可以了。
- i,I:进入插入模式,i为从目前光标所在处插入。I为在目前所在行的第一个非空格字符处开始插入。
- a,A:进入插入模式。a为从目前光标所在处的下一个字符处开始插入。A为从所在行的最后一个字符处开始插入。
- o,O:进入插入模式。o为在下一行插入。O为在上一行插入。
- r,R:进入替换模式。r只替换光标所在那个字符一次。R会一直替换光标所在字符,直到按下Esc键。
从编辑模式切换到奥一般模式:ESC。
在一般模式中输入:、/、?三个中的任意一个可以将光标移到最下面的一行,也就是命令模式,在这个模式中可以提供查找数据的操作,读取、保存、大量替换字符、离开vii、显示行号等操作则是在此模式中完成的。
编辑模式与命令行模式之间是不能互相切换的。
在一般模式下,可以执行的命令有:
移动光标的命令:
- PgDn键:下一页 (这个命令在编辑模式下也有效)
- PgUp键:上一页(这个命令在编辑模式下也有效)
- Home键:光标移动到这一行的第一个字符的前面(这个命令在编辑模式下也有效)
- End键:光标移动到这一行的最后一个字符的后面(这个命令在编辑模式下也有效)
- G:光标移动到最后一行
- 1G或者gg:光标移动到第一行
- 10G:光标移动到第10行
- 输入10之后按下Enter键:光标往下移动10行。
查找和替换:
- /word:向下寻找一个名称为word的字符串。
- ?word:向上寻找一个名称为word的字符串。
- n:重复上一个查找
- N:反向重复上一个查找
- :n1,n2s/word1/word2/g:在第n1行和n2行之间寻找word1这个字符串,并且将其替换为word2.
- :1,$s/word1/word2/g:从第一行到最后一行寻找word1这个字符串,并且将其替换为word2.
- :1,$s/word1/word2/gc:从第一行到最后一行寻找word1这个字符串,并且将其替换为word2.且在替换前显示提示字符给用户确认是否需要替换。
示例::1,$s/trace.log/test.log/gc
删除复制粘贴
- x,X:在一行字中,x为向后删除一个字符(相当于[Del]键),X为向前删除一个字符(相当于[Backspace])。
- dd:删除光标所在的一整行。
- ndd:删除光标所在的向下n行。
- yy:复制光标所在的一行。
- nyy:复制光标所在的向下n行。
- p,P:p为将已复制的内容在光标的下一行粘贴,P则为粘贴在光标的上一行。
- u:复原前一个操作。
- [Ctrl]+r:重做上一个操作。
- .:小数点,重复前一个操作
vim的功能
- 块选择:
这个功能可以让我们复制一个矩形区域的内容,十分方便。
v:字符选择,会将光标经过的地方反白选择;
V:行选择;
Ctrl+v:块选择;
y:复制反白的地方;
d:删除反白的地方。
示例如下:
需要注意的是,粘贴时候也是粘贴在一个块的范围内,而不是以行为单位来处理的。
- 多文件编辑
我们在两个或多个文件之间复制粘贴内容时,这个功能会让我们方便很多。
使用命令vim name1 name2 name3...(各个文件名之间用空格隔开)可以同时打开多个文件。
:n:编辑下一个文件;
:N:编辑上一个文件;
:files:列出目前vim打开的所有文件。
- 显示行号:
:set nu 设置行号
:set nonu 取消行号
vi和vim的使用:
vi和vim是两个独立的命令,如果需要高亮或者块选择等程序编辑功能,那么使用vim命令。
有的系统直接用vim替换了vi。替换的方式是使用alias。
输入alias命令可以看到全部的昵称命名。确认里面是否有vi和vim的昵称替换规则。