vi操作.docx

上传人:b****0 文档编号:12824033 上传时间:2023-04-22 格式:DOCX 页数:21 大小:26.21KB
下载 相关 举报
vi操作.docx_第1页
第1页 / 共21页
vi操作.docx_第2页
第2页 / 共21页
vi操作.docx_第3页
第3页 / 共21页
vi操作.docx_第4页
第4页 / 共21页
vi操作.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

vi操作.docx

《vi操作.docx》由会员分享,可在线阅读,更多相关《vi操作.docx(21页珍藏版)》请在冰豆网上搜索。

vi操作.docx

vi操作

件操作

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)

9)窗口操作

:

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内部单词(无空格)

as选择句子

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行内容

.重复上一次修改!

13}Set选项设置

setall列出所有选项设置情况。

setterm设置终端类型。

setignorecase在搜索中忽略大小写。

setlist显示制表位(^I)和行尾标志($)。

setnumber显示行号。

setshowmode示用户处在什么模式下

setreport显示由面向行的命令修改国的行数目。

setterse显示简短的警告信息。

setwarn在转到别的文件时,若没有保存当前文件则显示Nowrite信息。

setautowrite在“:

n”和“:

!

”命令之前都自动保存文件

setnomagic允许在搜索模式中,使用前面不带\的特殊字符。

setnowrapscan禁止vi在搜索到达文件两端时,又从另一端开始。

setmesg允许vi显示其他用户用write写到自己终端上的信息。

autoindent(ai)noai使新行自动缩进,和上(下)行的位置对齐

autoprint(ap)ap每条命令之后都显示出修改之处

autowrite(aw)noaw在:

n,:

!

命令之前都自动保存文件

beautify(bf)nobf在输入的时候忽略所有的控制字符(除了制表键(tab),换行(newline),进纸(formfeed))

directory=(dir=)/tmp存放缓冲区的目录名

edcompatiblenoedcompatible在替换的时候使用类ed的用法

errorbells(eb)errorbells出错的时候响铃

exrc(ex)noexrc允许在主目录(home)外面之外放.exrc文件

hardtabs=(ht=)8设置硬制表的边界

ignorecase(ic)noic正规式里忽略大小写

lispnolisp打开lisp模式

listnolist显示所有的制表键和行的结尾

magicagic可以使用更多的正规表达式

mesgmesg允许向终端发送消息

number(nu)nonumber显示行号

openopen允许开放和可视化

optimize(opt)optimize优化吞吐量,打印时不发回车

paragraphs=(para=)IPLPPPQPPLIbp设置{&}的分界符

promptprompt命令模式下的输入给出:

的提示符

readonly(ro)noro除非用!

号否则不准保存文件

redrawnoredraw当编辑的时候重绘屏幕

remapremap允许宏指向其他的宏

report=5如果影响的行数>这个数的话就报告

scroll1/2window下卷屏幕时滚动屏幕的数目,同样这也是z命令输出的行数(z输出2倍滚屏的大小)

sections=SHNHHHU定义节的末尾(当使用命令[[和]]时)

shell=(sh=)/bin/sh缺省的SHELL,如果设置了环境变量SHELL的话,就使用变量

shiftwidth=(sw=)8当使用移动(shift)命令时移动的字符数

showmatch(sm)nosm显示{,},(,),[,或者]的匹配情况

showmodenoshowmode显示你处在什么模式下面

slowopen(slow)插入之后不要立刻更新显示

tabstop=(ts=)8设置制表停止位(tabstop)的长度

taglength=(tl=)0重要标记的字符个数(0表示所有的字符)

tags=tag,/usr/lib/tags定义包含标记的文件路径

term=设置终端类型

tersenoterse显示简短的错误信息

timeout(to)timeout一秒钟后键盘映射超时

ttytype=设置终端类型

warnwarn显示"Nowritesincelastchange"信息

window=(w=)可视模式下窗口的行数

wrapmargin=(wm=)0右边距,大于0的话最右边的单词将折行,留出n个空白位置

wrapscan(ws)ws查找到文件尾后再重头开始

writeany(wa)nowa可以保存到任意一个文件去

14}特殊字符

^匹配字符串位于行首。

$匹配字符串位于行尾。

.用在模式串中,表示任何单个字符。

在命令模式下,重复上次的命令。

*在模式串中,表示其前字符可出现任意多次。

[]用在模式串中,表示指定方位内字符,其中可用-表示一个字

符范围,用^表示不在某个范围内的字符。

ESC从插入状态转换到命令状态

^[功能同ESC

15]大小写转换

guu行小写

gUU行大写

g~~行翻转(当然指大小写啦)

guw字小写(狭义字)译注:

建议对比iw

gUw字大写(狭义字)

g~w字翻转(狭义字)

vEU字大写(广义字)

vE~字翻转(广义字)

ggguG把整个文章全部小写(ft!

bt!

16)跳转足迹'.跳到最后修改的那一行(超级有用)(ft,怎么又是这个评价)

`.不仅跳到最后修改的那一行,还要定位到修改点

依次沿着你的跳转记录向回跳(从最近的一次开始)

依次沿着你的跳转记录向前跳

:

ju(mps)列出你跳转的足迹

17)命令历史

:

history列出历史命令记录

:

hisc命令行命令历史

:

hiss搜索命令历史

q/搜索命令历史的窗口

q命令行命令历史的窗口

:

历史命令记录的窗口

18]寄存器

#列出寄存器(Registers)

:

reg显示所有当前的registers

"1p表示引用register,1表示一个名字叫做1的register,p就是粘贴(paste)命令

译释:

"也用来定义register

先输入",表示定义register

然后输入名字,如0~9,a~z

然后执行删除或复制命令,如dd或y,

或者是visual模式下的d(删除选中的部分)或y(复制选中的部分)

则被删除或复制的部分就被存入了这个命名的register

观察:

一个特殊的register,"",里面存储了一个匿名的删除/复制

在你执行dd或y的时候,被作用的部分被存到了""中

19}命令行

"ayy@a把当前行作为一个Vim命令来执行

译释:

"ayy是定义当前行到registera,然后@a是执行registera中存储的指令

10yycopy当前行以下10行

11}排序

:

%!

sort-u使用sort程序排序整个文件(用结果重写文件)

!

1)sort-u排序当前段落(只能在normal模式下使用!

!

:

.,+5!

sort排序当前行及以下5行

20)列操作

:

%s=[^]+$=&&=复制最后一列

:

%s=f+$=&&=一样的功能

:

%s=S+$=&&ft,还是一样

:

s/(.*).*)/2"1/颠倒用:

分割的两个字段

:

%s(w+s+){2})str1:

1str2:

处理列,替换所有在第三列中的str1

:

%sw+)(.*s+)(w+)$:

321:

交换第一列和最后一列(共4列)

·.vimrc

"UseVimsettings,ratherthenVisettings(muchbetter!

).

setnocompatible

"c风格的缩进

:

setexpandtab"不使用tab只使用空格

:

setcindentshiftwidth=4

"自动缩进

:

setai

"语法

":

setfiletype=j***a

:

setsyntax=j***a

"键入)、]、},显示(、[、{

:

setshowmatch

"手工定义折叠

:

setfoldmethod=manual

"标签文件位置

settags=/usr/share/vim/vim63/funcs.tags

"在插入模式下通过按[Ctrl]N自动地将任何类、方法或者字段名补齐

setcomplete+=k

"不要用声音烦我!

setvisualbell

"历史

:

sethistory=50

"显示行列位置

:

setruler

"设置字符编码

setfileencodings=gb2312

"setencoding=euc-cn

"设置ruler

setruler

"显示当前命令

setshowcmd

"incsearch

setincsearch

"allowbackspacingovereverythingininsertmode

setbackspace=indent,eol,start

"自动检测文件类型

:

filetypeon

"""""""""""快捷键定义"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

ifversion>=600

"查找

"map/

"查找函数原型

mapyiw/^\(\s\)*\(sub\)\\|\(function\)\(\s\)*"

"继续查找

mapn

"使用显示类、属性、方法列表

map:

Tlist

"用compiler定义的编译程序来编译当前程序

"map:

make"%"

"使用来进行php语法检测

map:

!

php-l"%"

map;w:

callFormatText()

"查找当前光标下的字

map/

endif

""""""""""":

:

快捷键定义"""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"""""""""""格式化文件"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

functionFormatText()

:

%s/\t//g"把\t换成4个空格

:

%s/*$//g"去掉行尾空格

endfunction

"""""""""""格式化文件"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

""""""""""显示行尾的tab和多余空格"""""""""""""""""""""""""""""""""""""""""""""""

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 历史学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1