VI常用命令和按键

1. 存储及退出文件
:wq或者:x  存文件,并且退出vi
ZZ  保存并退出(:x 表示仅在需要时保存,ZZ不需要输入冒号并回车) ZZ = wq
ZQ  无条件退出
:e filename 打开文件filename进行编辑[相当于退出当前的并打开另一个文件]
:e! 放弃修改文件内容,重新载入该文件编辑
:e 重新载入【类似刷新】
ctrl+z/fg 暂时挂到后台/跳回编辑页面
:f 或 Ctrl-g   显示文件名及一些其他信息
:!command 暂时退出vi并执行shell指令,执行完毕后再回到vi
:r!command 将命令command的输出结果放到当前行【强大】
vim -x exam.txt 新编辑的文件加密,会提示输入密码
:X  文件加密,会提示输入密码
:map 列出当前已定义的映射(如何定义映射?)
:jumps 列出关于你曾经跳转过的位置的列表,你最后一个跳转的位置被特别以一个”>”号标记
:marks 列出自定义的标记,包含VIM内部自定义的标识
:%!nl  要对包含空行的所有行进行编号(所有行之前插入行号^I)
:version 显示VIM版本信息,包含特性、编译方式及配置文件目录
:options 打开一个新窗口, 在该窗口的最开头的注释下面是一个选项列表(do what?)
:r filename 在光标所在处插入一个文件的内容(read)可加入数字 :nr filename
:f filename 改变编辑中的文件名(file)相当于复制了一个文件,执行这个命令后,新编辑不会应用于原文件
gf vim特殊打开文件的方法,打开光标所在处的 word 为名的文件,当然,这个文件要在当前目录内,否则会创建新文件

2.移动
(1)单词
w 光标跳到下个word的第一个字母 [常用]
W 移到下一个字的开头,忽略标点符号
b 光标回到上个word的第一个字母
B 移到前一个字的开头,忽略标点符号 BACK
e 光标跳到下个word的最后一个字母
E 移到下一个字的结尾,忽略标点符号 END
ge 前一个word的词尾
gE
(2)行
n+ 光标下移n行【按上档键 数字shift +】
n- 光标上移n行
[[ 文件开始位置——开始行
]] 文件结束位置——末尾行
H  光标移至屏幕顶行    HEAD
M  移到屏幕的中间行开头 Middle
L  移到屏幕的最后一行 LAST
(  光标移至句首
)  光标移至句尾
(3)段落
* 和 #  匹配光标当前所在的单词,移动光标到下(或上)一个匹配单词(*是下一个,#是上一个)
zf 折叠(需加方向键)
zo 展开(空格也可以展开)
(4)屏幕
Ctrl+u 向文件首翻半屏up
Ctrl+d 向文件尾翻半屏down
Ctrl+f 向文件尾翻一屏 forward (fact整屏去两行)
Ctrl+b 向文件首翻一屏back (fact整屏去两行)
CTRL-] 跳转到当前光标所在单词对应的主题
CTRL-O 回到前一个位置
zz 命令会把当前行置为屏幕正中央(z字取其象形意义模拟一张纸的折叠及变形位置重置)
zt 命令会把当前行置于屏幕顶端(top)
zb 命令会把当前行置于屏幕底端(bottom)
50% 光标定位在文件的中间
` 跳转到最近光标定位的位置(只能记忆最近两个位置) 反引号

3.插入
I 在当前行首开始插入字符
A 在光标所在行的最后面开始加字
s 默认删除光标所在字符,输入内容插入之 = xi
S 默认删除当前行内容,输入内容作为当前行新内容= dd+o

4.删除
(1)字符
nx 删除由光标位置起始后的n个字符(含光标位置) x =dl(删除当前光标下的字符)
nX 删除由光标位置起始前的n个字符(含光标位置) X =dh(删除当前光标左边的字符)
d0 删至行首
d$ 删至行尾
dfa 表示删除从当前光标到光标后面的第一个a字符之间的内容
D 代表d$(删除到行尾的内容)
C 代表c$(修改到行尾的内容)
(2)单词
ndw 删除光标处开始及其后的n-1个字
ndb 删除光标处开始及其前的n-1个字
diw 删除当前光标所在的word(不包括空白字符),意为Delete Inner Word 两个符号之间的单词
daw 删除当前光标所在的word(包括空白字符),意为Delete A Word
(3) 行
dG 删除当前行至文件尾的内容
dgg 删除当前行至文件头的内容
cw 删除当前字,并进入输入模式 【很好用,快速更改一个单词】 相当于dw+i
ncw 删除当前字及其后的n-1个字,并进入输入模式\ 修改指定数目的字
cc 删除当前行,并进入输入模式
ncc 删除当前行及其后的n-1行,并进入输入模式
guw 光标下的单词变为小写
gUw 光标下的单词变为大写
xp 左右交换光标处两字符的位置
ga 显示光标下的字符在当前使用的encoding下的内码

5.复制和黏贴
(1)复制
y0 表示拷贝从当前光标到光标所在行首的内容
y$ 复制从当前位置到行尾
yfa 表示拷贝从当前光标到光标后面的第一个a字符之间的内容
yG 复制从所在行到最后一行
P 复制暂存数据在光标的上一行
:n1,n2 co n3 将n1行到n2行之间的内容拷贝到第n3+1行【n3行的下一行】
:n1,n2 m n3 将n1行到n2行之间的内容移至到第n3行下
~ 改变当前光标下字符的大小写
 
6.查找
/pattern 从光标开始处向文件尾搜索pattern
?pattern 从光标开始处向文件首搜索pattern
# 向上完整匹配光标下的单词 相当于?word
* 向下完整匹配光标下的单词 相当于/word
 
7.替换
:%s!\s*//.*!!  去掉所有的“//”注释
:%s!\s*/\*\_.\{-}\*/\s*!!g 去掉所有的“/* */”注释
:%s= *$== 将所有行尾多余的空格删除(没看懂)
:g/^\s*$/d 将所有不包含字符(空格也不包含)的空行删除


参考:http://blog.csdn.net/wklken/article/details/7533272

posted @ 2012-05-11 22:07  Mr.Rico  阅读(1100)  评论(0编辑  收藏  举报