VI的使用
最近写过一次awk脚本,发现vi的使用居然忘了,又重新温习了一遍,现在把之前的整理基本用法记录下来。
Vi是Linux/unix系统默认的编辑器,就像是windows下的notepad一样。但是vi编辑器如果熟练使用,效率不知道比notepad快多少倍!
vi有三种工作模式,分别是命令行模式、插入模式、末行模式,我们经常是在插入模式下编辑文字的。三种模式的转换方式如下:
我们每次启动vi都是以命令模式开始,在vi编辑器下是区分大小写的。如果不确定是处在什么模式下,则连续按两次ESC就可以处在命令行模式下了。下面讲述vi的基本使用:
一、光标移动
在非插入模式下,k,j,h,l四键分别代表光标的向左、向下、向上、向右移动,下面说明其他键的使用:
^ 将游标放在该行的开始处
$ 将游标放在改行的结尾处
w 将游标移动到下一个单词的开始
b 将游标移动到上一个单词的开始
( 将游标移动到当前句子的开始处
) 将游标移动到当前句子的结尾处
ctrl+F 将游标向前滚动一屏
ctrl+B 将游标向后滚动一屏
G 将游标移动到最后一行
:x(x为数字) 将游标移动到第x行
二、编辑
我们需要键入i/a/o/I/A/O 将命令行模式转换为插入模式,
i 在当前光标前插入
I 在当前行的最开始处插入
a 在当前光标后插入
A 在当前行的行尾插入
o 在当前行下面创建新行
O 在当前行的上面创建新行插入
cc 删除整个一行,该行变为空行,变为插入模式
cw 删除整个单词,直到下个单词,变为插入模式
r 替换光标所在的字符
R 覆盖光标所在的字符,按ESC停止覆盖
s 删除光标所在的字符,变为插入模式
S 删除光标所在的行,该行变为空行,变为插入模式
x 删除光标所在位置的字符
X 删除光标所在位置前的字符
dw 从当前字符开始删除,直到下一个单词开始
D 从当前字符开始删除,直到行结束
dd 删除整个行的内容,光标移动到下一行的开头
J 将当前行与下面的行合并到一起
可将d与光标移动的字符结果使用,删除相应位置的文字。
三、复制粘贴
yy 复制当前行的内容
yw 复制光标所在的单词
p 将复制的内容,粘贴在光标的后面
P 将复制的内容,粘贴在光标的前面
四、查找替换
vi采用 / 和 ?,进行查找,如/love向下查找love,按n进行下一个查找,使用?进行向上查找。
采用s来进行替换,如 :s /misspelled /spelled correctly /g
/g 是进行全局替换, $表示最后一行,%表示要替换每一行的第一个目标,c代表需要确认,#表示出现/不作为分隔符
:1,$ s/doyouloveme? /i love you /gc 全局替换,从第1行到最后一行,带确认替换doyouloveme?为 i love you。
:%s /you /me 把每一行的you替换为me
:s#spring/#Spring/# 将当前行的spring/替换为Spring/
五、保存退出
vi使用w表示保存,q表示退出,!表示强制,如果在命令行中输入:e filename ,会在当前的编辑窗口编辑新文件,使用crtl + ^ 来切换文件,使用 n也可转换文件。
六、定制
vi编辑器还可以定制特征, 如显示行号,自动缩进,设置字符编码等。常见的有:
syntax on 设置语法高亮
set linespace =0 设置字符间插入的像素行数目
set noerrorbells 不让vim发出讨厌的滴滴声
set ignorecase 在搜索的时候忽略大小写
set autoindent 继承前一行的缩进方式,特别适用于多行注释
set tabstop=4 制表符为4
等等,vi还可以使用ctag ,方便程序猿。