杨超 2010年08月17日 星期二 22:48 | 1336次浏览 | 0条评论
1.保存和舍弃 2.移动和滚屏 3.标记与跳转 4.模式与编辑 5.搜索与替换 6.编辑多个文件 7.宏 8.执行shell命令
1.保存和舍弃
:w 保存
:w file 另存为file
:w %.bak 另存为file.bak(假定当前文件名为file,%可指代当前文件名)
:x 存盘退出
:wq 存盘退出
:q 无未保存修改情况下的退出
:q! 舍弃一切修改,强制退出
:e! 舍弃一切修改,将文档恢复到初始状态
2.移动和滚屏
j 上移
k 下移
h 左移
l 右移
w 以单词为单位右移,光标停在每单词首部
b 以单词为单位左移,光标停在每单词首部
W 同w,但是单词以空白字符分界
B 同b,但是单词以东百字符分界
e 以单词为单位右移,光标停在每单词尾部
ge 以单词为单位左移,光标停在每单词尾部
E 同e,但是单词以空白字符分界
gE 同ge,但是单词以空白字符分界
0 移动到当前行首
^ 移动到当前行第一个非空白字符
$ 移动到当前行最后一个字符
% 移动到与光标当前括号相匹配的另一个括号
( 移动到句子开始
) 移动到句子结尾
{ 移动到段落开始
} 移动看段落结尾
H 移动到屏幕首行第一个非空白字符
M 移动到屏幕中间行第一个非空白字符
L 移动到屏幕末行第一个非空白字符
gg 移动到文件首行第一个非空白字符
G 移动到文件尾行第一个非空白字符
12G 移动到第12行第一个非空白字符
注意:以下x表示任意字符,{a-z}表示任意小写字母
fx 移动到当前行光标右边第一个x
Fx 移动到当前行光标左边第一个x
tx 移动到当前行光标右边第一个x的前一个字符
Tx 移动到当前行光标左边第一个x的前一个字符
; 重复上一次f、F、t、T,方向与上次相同
, 重复上一次f、F、t、T,方向与上次相反
CTRL+u 向下滚半屏
CTRL+d 向上滚半屏
CTRL+f 向下滚半屏
CTRL+b 向上滚半屏
zt 以当前行作为屏幕首行滚屏
zz 以当前行作为屏幕中间行滚屏
zb 以当前行作为屏幕末行滚屏
3.标记与跳转
m{a-z} 标记光标所在处
'{a-z} 跳到指定标记处行首第一个非空白字符
`{a-z} 精确跳到标记处
CTRL+](注意这是右中括号) 跳到帮助tag
``跳回到刚才的跳转出发点
`[ 跳回上次修改的起始处
`] 跳回上次修改的结尾处
CTRL+o 跳回上一次的跳转点
CTRL+i 跳到下一次的跳转点
:jumps 列出所有的跳转点
:marks 列出所有的标记
[ [ 移动到前一个行首的'{'字符上
] ] 移动到下一个行首的'{'字符上
[ ] 移动到前一个行首的'}'字符上
] [ 移动到下一个行首的'}'字符上
{ 到前一个空行上
} 到下一个空行上
gd 到当前局部变量的定义处(当前的意思是光标停留其上的单词).
4.模式与编辑
注:文本对象
iw 一个单词(含其后空格)
aw 一个单词(不含其后空格)
as 一个句子(含其后空格)
is 一个句子(不含其后空格)
J 将当前行的末尾和下一行连接起来
i 在当前光标处开始插入字符
I 在当前行第一个非空白字符处插入字符
a 在当前光标处之后开始插入字符
A 在当前行最后一个字符后插入字符
c 后接相关信息以改写内容
C 改写光标处到行尾的内容
以上均会进入insert模式
R 进入replace模式
d 后接相关信息以删除内容
D 删除光标处到行尾的内容
y 后接相关信息以复制内容
Y 复制光标处到行尾的内容
r 后接相关信息改写一个字符
x 删除光标处字符
. 重复上一次修改
v 进入visual模式
CTRL+v 进入选择矩形文本块的visual模式
visual模式下的o 光标移动到文本块的对角
visual模式下的O 光标平移到文本块光标当前行的另一个角
~ 对选定文本进行大小写反转
"{a,b,c,d...x,y,z}y 将选定文本复制到指定寄存器中
"{a,b,c,d...x,y,z}p 将寄存器中内容粘贴出来
5.搜索与替换
* 向下搜索光标所在处单词
# 向上搜索光标所在处单词
/file 向下搜索file
?file 向上搜索file
n 搜索相同方向的下一个
N 搜索相同方向的上一个
:[range]s/from/to[/flag]
6.编辑多个文件
vi -d file1 file2 以diff模式打开file1和file2
:split 水平分割
:vsplit 垂直分割
vi file1 file2 file3 打开多个文件
:n或:bn 切换到同时打开的下一个文件
:bp 切换到同时打开的上一个文件
:b2 切换到同时打开的第二个文件,后面的数字可视情况自定
7.宏
记录宏
q{a,b,c,d...x,y,z}
...
...
...
q
引用宏
@{a,b,c,d...x,y,z} 引用指定宏
@@ 引用上一条宏
编辑宏
G
o<Esc>
"np 将寄存器的内容置于该行
{edits} 此处指的是文本化编辑宏中记录的命令
0
"ny$ 最后两个字母是命令,指的是将刚才编辑的一行替换到n中,也可以用别的
dd
q{A,B,C,D...X,Y,Z} 追加命令到寄存器中
...
q
gCTRL+g 统计字数
CTRL+g 查看当前文件信息
8.执行shell命令
:!command 派生一个shell执行command,执行完后返回vi
!!command 将当前行作为命令command的输入,用输出替换当前行文本(等同于:.!command,手动输入:.,$!command则是代表对当前行到最后一行执行命令command)
:sh 进入shell环境,执行exit则返回vi
Zeuux © 2024
京ICP备05028076号
暂时没有评论