aix编辑器vi命令.docx
《aix编辑器vi命令.docx》由会员分享,可在线阅读,更多相关《aix编辑器vi命令.docx(10页珍藏版)》请在冰豆网上搜索。
aix编辑器vi命令
1)文件操作
viFileName打开文件FileName,并将光标置于第一行首。
vi+nFileName打开文件FileName,并将光标置于第n行首。
vi+FileName打开文件FileName,并将光标置于最后一行。
vi+/patternFile打开文件File,并将光标置于其中第一个于pattern匹配的字符串处。
vi–rFileName在上次正用vi编辑FileName发生系统崩溃后,恢复FileName。
viFile1…Filen打开多个文件,依次对之进行编辑。
:
%!
xxd按十六进制查看当前文件
:
%!
xxd-r从十六进制返回正常模式
:
n1,n2con3将n1行到n2行之间的内容拷贝到第n3行下。
:
n1,n2mm3将n1行到n2行之间的内容移至第n3行下。
:
n1,n2d将n1行到n2行之间的内容删除。
:
n1,n2wfilename将n1行到n2行之间的内容保存到文件filename中
:
n1,n2w!
Command将文件中n1行到n2行的内容作为Command的输入并执行之,若不指定n1、n2,则将整个文件内容作为Command的输入。
:
r!
Command将命令Command的输出结果放到当前行。
:
nr<文件>把<文件>插入到第n行
:
so<文件>读取<文件>,再执行文件里面的命令(文件中的命令应该都是一些ex命令):
l1,l2w<文件>把第l1和第l2行之间的文本写到<文件>中去
:
w>><文件>添加到<文件>末尾.也可以使用行号
:
e!
重新编辑当前文件,忽略所有的修改
·(、[、、]、)对应显示
%显示当前(、[、{、}、]、)的对应项
)显示对应的(
)显示对应的[
]显示对应的{
·(、[、、]、)内数据选择
daB删除{}及其内的内容(在非v可视模式下)
diB删除{}中的内容
ab选择()中的内容
ib选择()中的内容(不含())
aB选择{}中的内容
iB选择{}中的内容(不含{})
·语法提示与自动补齐
★插入模式下的单词自动完成
★行自动完成(超级有用)
·设置ctags
#ctags-f/usr/share/vim/vim63/funcs.tags-R/opt/j2sdk/src
/usr/src/kernels/2.6.9-5.EL-i686
^p自动补齐上下文已有相近项
^n自动补齐~/.tags中的相近函数
^[显示~/.tags中的光标下的函数的原型,
按^t退出函数
:
pta函数名预览窗口快速打开相应函数所在文件,并将光标定位在对应函数的开头K显示光标下的C函数的man说明手册
·变量定位
gd转到光标下局部变量的定义处
Gd转到光标下全局变量的定义处
·编译选项
:
cn命令会把你带到下一个出错地点,而不考虑它在什么文件里。
:
cc命令会向你显示当前错误的编译器输出信息;
:
cl会生成一个列有项目所有错误的列表,以供浏览这些错误
3]光标移动
·字符
h光标左移一个字符。
l光标右移一个字符。
·字
w或W光标右移一个字至字首。
B或b光标左移一个字至字首。
E或e光标右移一个字至字尾。
·句}光标移至句尾。
(光标移至句首。
·段)光标移至段落开头。
{光标移至段落结尾。
·行k或Ctrl+p光标上移一行。
j或Ctrl+n光标下移一行。
Enter光标下移一行。
nG光标移至第n行首。
n+光标下移n行。
n-光标上移n行。
n$光标移至第n行尾。
0光标移至当前行首。
$光标移至当前行尾。
·屏幕
H光标移至屏幕顶行。
M光标移至屏幕中间行。
L光标移至屏幕最后行。
Ctrl+u向文件首翻半屏。
Ctrl+d向文件尾翻半屏。
Ctrl+f向文件尾翻一屏。
Ctrl+b向文件首翻一屏。
nz将第n行滚至屏幕顶部。
不指定n时将当前行滚至屏幕顶。
4}插入
#在文件中插入行号(不是显示行号,是插入!
)
★:
g/^/exec"s/^/".strpart(line(".")."",0,4)
·光标
i在光标前插入。
a在光标后插入。
·行
I在当前行首插入。
A在当前行尾插入。
o在当前行之下一新行插入。
O在当前行之上新开一行插入。
5)替换
r替换当前字符。
R替换当前字符及其后的字符,直至按ESC键。
s从当前光标位置处开始,以输入的文本代替指定数目的字符。
S删除指定数目的行,并以所输入的文本代替。
6)修改
ncw或nCW修改指定数目的字符。
nCC修改指定数目的行。
:
rfilename将文件filename插入在当前行之下
7)查找替换
/把狭义单词写到搜索命令行
/把广义单词写到搜索命令行
:
g/str/s/str1/str2/g
第一个g表示对每一个包括s1的行都进行替换,
第二个g表示对每一行的所有进行替换
包括str的行所有的str1都用str2替换
:
%s/f$/for$/g将每一行尾部的“f”(f键和空格键)替换为for
:
%s/^/mv/g在每一行的头部添加“mv”(mv键和空格键)
:
s/fred/a/g替换fred成registera中的内容,呵呵
:
g/
#替换一个visual区域
#选择一个区域,然后输入:
s/Emacs/Vim/等等,vim会自动进入:
模式:
'<,'>s/Emacs/Vim/g前面的'<,'>是vim自动添加的
#在多个文档中搜索
:
bufdo/searchstr
:
argdo/searchstr
复制与剪切
xp交换前后两个字符的位置
ddp上下两行的位置交换
:
g/fred/t$拷贝行,从fred到文件末尾(EOF)
:
vne[filename]
:
sp[filename]
:
S[filename]
:
new[filename]
:
^w+^r交换两个窗口的位置
^w=窗口等宽
:
res-n窗口高度减小n
:
res+n窗口高度增大n
:
vertres-n
:
vertres+n
10)DOS格式文本转成Unix格式文本
:
1,$s/^M//g
11)书签
在阅读和编写大的程序文件时,利用标记(书签)功能定位是十分有帮助的。
将光标移到想做标记的位置。
假如做一个名为“debug1”的标记,那么用户可在命令模式下输入做标记的命令“mdebug1”,然后敲入回车键,一个名为“debug1”的标记就做好了。
接下来用户可以随意将光标移到其它的位置,当在命令模式下输入“`debug1”后,就能快速回到“debug1”的标记所在行的行首。
12)删除操作
:
%s/r//g删除DOS方式的回车^M
:
%s=*$==删除行尾空白
:
%s/^(.*)n1/1$/删除重复行
:
%s/^.pdf/new.pdf/只是删除第一个pdf
:
%s/
--_.-->//又是删除多行注释(咦?
为什么要说「又」呢?
)
:
g/^s*$/d删除所有空行
:
g!
/^dd/d删除不含字符串'dd'的行
:
v/^dd/d同上(译释:
v==g!
就是不匹配!
)
:
g/str1/,/str2/d删除所有第一个含str1到第一个含str2之间的行
:
v/./.,/./-1join压缩空行
:
g/^$/,/./-j压缩空行
ndw或ndW删除光标处开始及其后的n-1个字符。
d0删至行首。
d$删至行尾。
ndd删除当前行及其后n-1行。
x或X删除一个字符。
Ctrl+u删除输入方式下所输入的文本。
^R恢复u的操作
J把下一行合并到当前行尾
V选择一行
^V按下^V后即可进行矩形的选择了
aw选择单词
iw内部单词(无空格)
is选择句子(无空格)
ap选择段落
ip选择段落(无空格)
D删除到行尾
x,y删除与复制包含高亮区
dl删除当前字符(与x命令功能相同)
d0删除到某一行的开始位置
d^删除到某一行的第一个字符位置(不包括空格或TAB字符)
dw删除到某个单词的结尾位置
d3w删除到第三个单词的结尾位置
db删除到某个单词的开始位置
dW删除到某个以空格作为分隔符的单词的结尾位置
dB删除到某个以空格作为分隔符的单词的开始位置
d7B删除到前面7个以空格作为分隔符的单词的开始位置
d)删除到某个语句的结尾位置
d4)删除到第四个语句的结尾位置
d(删除到某个语句的开始位置
d)删除到某个段落的结尾位置
d{删除到某个段落的开始位置
d7{删除到当前段落起始位置之前的第7个段落位置
dd删除当前行
d/text删除从文本中出现“text”中所指定字样的位置,
一直向前直到下一个该字样所出现的位置(但不包括该字样)之间的内容
dfc删除从文本中出现字符“c”的位置,一直向前直到下一个该字符所出现的位置(包括该字符)之间的内容
dtc删除当前行直到下一个字符“c”所出现位置之间的内容
D删除到某一行的结尾
d$删除到某一行的结尾
5dd删除从当前行所开始的5行内容
dL删除直到屏幕上最后一行的内容
dH删除直到屏幕上第一行的内容
dG删除直到工作缓存区结尾的内容
d1G删除直到工作缓存区开始的内容
修改命令操作
r更改当前字符
cw修改到某个单词的结尾位置
c3w修改到第三个单词的结尾位置
cb修改到某个单词的开始位置
cW修改到某个以空格作为分隔符的单词的结尾位置
cB修改到某个以空格作为分隔符的单词的开始位置
c7B修改到前面7个以空格作为分隔符的单词的开始位置
c0修改到某行的结尾位置
c}修改到某个语句的结尾位置
c4}修改到第四个语句的结尾位置
c(修改到某个语句的开始位置
c)修改到某个段落的结尾位置
c{修改到某个段落的开始位置
c7{修改到当前段落起始位置之前的第7个段落位置
ctc修改当前行直到下一个字符c所出现位置之间的内容C修改到某一行的结尾
cc修改当前行
5cc修改从当前行所开始的5行内容
.重复上一次修改!