VIM 使用教程.docx

上传人:b****2 文档编号:14000193 上传时间:2023-06-19 格式:DOCX 页数:15 大小:23.08KB
下载 相关 举报
VIM 使用教程.docx_第1页
第1页 / 共15页
VIM 使用教程.docx_第2页
第2页 / 共15页
VIM 使用教程.docx_第3页
第3页 / 共15页
VIM 使用教程.docx_第4页
第4页 / 共15页
VIM 使用教程.docx_第5页
第5页 / 共15页
VIM 使用教程.docx_第6页
第6页 / 共15页
VIM 使用教程.docx_第7页
第7页 / 共15页
VIM 使用教程.docx_第8页
第8页 / 共15页
VIM 使用教程.docx_第9页
第9页 / 共15页
VIM 使用教程.docx_第10页
第10页 / 共15页
VIM 使用教程.docx_第11页
第11页 / 共15页
VIM 使用教程.docx_第12页
第12页 / 共15页
VIM 使用教程.docx_第13页
第13页 / 共15页
VIM 使用教程.docx_第14页
第14页 / 共15页
VIM 使用教程.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

VIM 使用教程.docx

《VIM 使用教程.docx》由会员分享,可在线阅读,更多相关《VIM 使用教程.docx(15页珍藏版)》请在冰点文库上搜索。

VIM 使用教程.docx

VIM使用教程

VIM编辑器

VIM和Emacs是Linux上最知名和最受程序员喜爱的两种编辑器。

VI追求的是快捷启动程序迅速,编辑文本高效,功能专注,而Emacs追求的是功能的丰富强大以及集成带来的方便,在Emacs里头可以发邮件,上新闻组,听mp3,浏览网页,玩游戏,几乎可以login->emacs->logout了,VI和Emacs都是程序员的编辑器,相比而言,Emacs更是提供了一种程序员的生活氛围。

VIM引入了很多模式,主要的有如下几种:

ØNormalmode  即通常所谓的命令模式,在此模式使用a、i、A、I、o、O等进入Insertmode

ØInsertmode  即通常所谓的编辑模式,在此模式使用ESC进入Normalmode或者Ctrl-c临时进入Normalmode

ØCommand-linemode 命令行模式,在Normalmode下按冒号进入,按ESC取消执行命令或者回车执行命令,然后回到Normalmode。

ØVisualmode  即选择模式(注意跟用鼠标选择不同),用v,V,C-v或C-q进入

ØSelectmode  鼠标选择

ØReplacemode  在Normalmode下按R进入,按ESC返回Normalmode,相当于Windows下命令行中按Insert键进入的覆盖模式

1.基本操作

1)移动光标(Normalmode)

可以用下面的键来移动光标

H(左),j(下),k(上),l(右)

2)删除(Normalmode)

当你想删除一个字符时,把光标移动到它上面,然后按下x键,它就会消失。

dd命令会删除当前所在的一行内容。

dw删除当前光标所在字符

d$删除从当前光标所在位置到当前行结尾的所有内容

d^删除从当前光标所在位置到行首的所有内容

3)合并行(Normalmode)

使用J命令可以合并当前行和下一行

4)撤消和重做(Normalmode)

按下u会撤消上一步的操作,U(大字)是一个特殊的撤消键,它会撤消在在最后编辑的行上所作的所有操作。

如果撤消的次数过多,按下Ctrl+r会重做上次撤消的操作

5)复制和粘贴(Normalmode)

yy复制游标所在行整行。

或大写一个Y。

2yy或y2y复制两行

y^复制至行首,或y0。

不含光标所在处字符。

y$复制至行尾。

含光标所在处字符。

yw复制一个word。

y2w复制两个字。

yG复制至档尾。

y1G复制至档首。

p小写p代表贴至光标后(下)。

P大写P代表贴至光标前(上)。

"ayy将本行文字复制到a缓冲区

a可为26个英文字母中的一个,如果是小写的话,原先的内容会被清掉,如果是大写的话是append的作用,会把内容附加到原先内容之后。

"ap将a缓冲区的内容贴上。

6)退出(Normalmode)

ZZ会退出VIM并且对所有编辑的文件保存

起同样作用的命令(Command-linemode)

:

wq或者:

x

7)插入文本(Normalmode转入Insertmode)

i会在光标所在字符前插入内容。

I在当前行首插入内容。

a会让你在当标所在的位置之后继续输入内容。

A在当前行尾插入内容。

o命令会在光标所在行下面加入一行,并将光标移动的此行的开始以供输入

如果想在光标所在行的上面加入一行,请使用命令O(大写)

8)替换(Normalmode)

r替换当前字符。

R替换当前字符及其后的字符,直至按ESC键。

s从当前光标位置处开始,以输入的文本代替指定数目的字符。

S删除指定数目的行,并以所输入的文本代替。

9)重复命令(Normalmode)

当要做多次同样的操作时,可以用计数来加快这一过程。

[number]commandobject或者command[number]object

其意是∶

number-代表的是命令执行的次数

command-代表要做的事情,比如d代表删除

object-代表要操作的对象,比如w代表单字/单词,$代表到行末等等。

举个例子如下

9k

会让你向上移动9行。

通过在命令前加一个数字n,就可以执行这一命令n次。

10)文件操作

vimFileName打开文件FileName,并将光标置于第一行首。

vim+nFileName打开文件FileName,并将光标置于第n行首。

vim+FileName打开文件FileName,并将光标置于最后一行。

vim+/patternFile打开文件File,并将光标置于其中第一个于pattern匹配的字符串处。

vim–rFileName在上次正用vi编辑FileName发生系统崩溃后,恢复FileName。

vimFile1…Filen打开多个文件,依次对之进行编辑。

11)十六进制查看模式(Command-linemode)

:

%!

xxd按十六进制查看当前文件

:

%!

xxd-r从十六进制返回正常模式

12)屏幕(Normalmode)

H光标移至屏幕顶行。

M光标移至屏幕中间行。

L光标移至屏幕最后行。

Ctrl+u向文件首翻半屏。

Ctrl+d向文件尾翻半屏。

Ctrl+f向文件尾翻一屏。

Ctrl+b向文件首翻一屏。

13)大小写转换(Normalmode)

guu行小写

gUU行大写

g~~行翻转

guw字小写

gUw字大写

g~w字翻转

14)文件状态(Normalmode)

输入CTRL-g显示当前编辑文件中当前光标所在行位置以及文件状态信息。

15)搜索(Normalmode)

输入/以及尾随的字符串可以用以在当前文件中查找该字符串。

要查找同上一次的字符串,只需要按n键。

要向相反方向查找同上一次的字

符串,请输入Shift-n即可。

如果您想逆向查找字符串,请使用 ?

代替/进行

“.*[]ˆ%/\?

~$”这些字符在VIM中有特殊意义,如果搜索内容中包括这些符号,需要在符号前面加“\”。

16)配对括号的查找(Normalmode)

按%可以查找配对的括号)、]、}。

17)查找函数的man说明(Normalmode)

光标置于函数上,输入K

18)变量定位(Normalmode)

gd转到光标下局部变量的定义处

Gd转到光标下全局变量的定义处

19)自动补齐(Insertmode)

CTRL-XCTRL-F文件名

CTRL-XCTRL-L整行

有ctags设置时:

Ctrl-p自动补齐上下文已有的相近项

Ctrl-n自动补齐tags中的相近函数

20)标签跳转(Normalmode)

CTRL+]跳转到光标当前位置的标签处(例如:

一个函数的定义)。

CTRL+T跳转到执行CTRL-]命令前的地方。

:

tselect从一连串匹配的标签中选出一个。

[/跳转到注释开始的位置。

]/跳转到注释结束的位置。

[#返回到未闭合的#if,#ifdef,or#else处。

]#前进到未闭合的#else或#endif处。

[(返回到未闭合的'('处。

))前进到未闭合的']'处。

[{跳转到最近对应的'{'处。

}}跳转到最近对应的']'处。

 

2.Visualmode下操作

进入Visualmode使用v,V,ctrl-v

v:

是以字节模式选择

V:

是以行的方式选择

Ctrl-v:

以列的方式选择

在列选方式下:

I在块的每一行首加上string

A在块的每一行尾加上string

C修改选中的列块(即删除并输入新内容)

c修改选中的列块(即删除并输入新内容)

>右移Tab宽度

<左移Tab宽度

3.规则表达式(regularexpression)及其应用

1)表达式

●基本匹配

^行的起始

$行的结尾

.除换行字符外的任一单一字符

*指前所绑住的字符或字符集合,出现0次或0次以上

\+和*作用相同,但不包括出现0次

\=指前所绑住的字符恰好出现0或1次

[…]匹配括号内任意一个字符

[^…]匹配除了括号内字符的字符

\{n,m}指前所绑住的字符或字符集合最少出现n次,最多出现m次

\(\)记忆pattern,可由\1,\2...\9来叫出

\<匹配字(word)首,所谓word包括文数字及底线

\>匹配字尾。

这就是前所提及的限定用法,被\<,或\>括住的

\|搜索的或操作

●中介字符(metacharacter,orcharacterclasses)

\d:

匹配一个数字[0-9]

\D:

匹配一个非数字字符

\x:

匹配一个十六进制数[0-9A-Fa-f]

\X:

匹配一个非十六进制字符

\o:

匹配一个八进制字符[0-7]

\O:

匹配一个非八进制字符

\w:

匹配一个word字符[0-9A-Za-z]

\W:

匹配一个非word字符

\a:

匹配一个字母字符[A-Za-z]

\A:

匹配一个非字母字符

\l:

匹配一个小写字母字符[a-z]

\L:

匹配一个非小写字母字符

\u:

匹配一个大写字母字符[A-Z]

\U:

匹配一个非大写字母字符

\c:

忽略搜索内容大小写

\C:

大小写敏感

2)全域性指令

:

[range]g/pattern/[cmd]

cmd是ed可用的指令,预设是p(print)。

这里主要是说明d(delete)的功能。

因为是要说明如何消除空白行。

需注意的是,d是行删除指令,凡含pattern的整行都会被删掉,而且range不指定的话,预设是全篇文章,因为g就是代表globe。

例:

:

g/^$/d删除全文的空白行

 

3)替换

:

[range]s/pattern/string/[c,e,g,I,n]

range指的是范围,1,7指从第一行至第七行,1,$指从第一行

至最后一行,也就是整篇文章,也可以%代表。

pattern就是要被替换掉的字符串,可以用regexp来表示。

string将pattern由string所取代。

c每次替换前会询问。

e不显示error。

g不询问,整行替换。

n不做替换操作。

(可以做统计用)

I忽略大小写

Note:

&代表置换时合于patern的字符或字符串

例:

将档案3至7行的数据向右移2个空白

:

3,7s/.\+/&/

4.设置书签

你可以在编辑的内容的某处设置书签(marks),然后到其它地方去编辑,在呼叫这个书签的时候就会回到设置点位置。

mxx代表26个小写英文字母,这样光标所在处就会被标记一个书签

`x就可以回到书签设置的位置

‘x回到书签设置行的行首

:

marks得知目前所有书签的列表。

小写字母只作用于单一档案内。

大写字母可作用于编辑中之各档案间。

5.宏的使用

Vim有一种记录宏的机制。

键入”qa”开始把一段宏记录入寄存器变量a中。

下面按平常的操作键入你的擦作,这些操作会北Vim记录到它命名为a的宏中去,当再次按下q”键,就结束了宏a的记录。

当你要重复执行你刚才记录的那些操作时只要用“@a”命令。

6.窗口操作

Ctrl-wn即:

new。

开一空的新窗口。

Ctrl-ws即:

sp(lit),会开一新窗口,且原文件分属两个窗口。

Ctrl-wf开一新窗口,并编辑光标所在处之word为档名的档案。

Ctrl-wq即:

q结束分割出来的窗口。

Ctrl-wo即:

only!

使光标所在之窗口,成为目前唯一显示的窗口

其它窗口会隐藏起来。

Ctrl-wj移至下窗口。

Ctrl-wk移至上窗口。

7.编程辅助功能

1)插件

VIM内置的插件

●ctags,cscope

现在的IDE都提供了类、函数的索引功能,可以方便的找到某个类或者函数的在哪里定义的,VIM这方面可以利用ctags、cscope做到,Exuberantctags支持的语言种类非常多,UltraEdit的tags功能也是利用的ctags。

cscope只支持C,它能实现SourceInsight的一些功能,比如查找某个函数调用了哪些函数,某个函数被哪些函数调用。

VIM对这两个工具集成的非常好,利用它们就可以在源文件中方便的跳转搜索类和函数了。

vim中cscope相关命令简介:

所有命令都是通过主命令 ":

cscope" 的子项完成的。

主命令最短的缩写是 ":

cs"。

":

scscope" 完成同样的功能的同时还可以分割窗口 (缩写:

 "scs").可用的子命令有:

  

add :

 添加一个新的 cscope 数据库/连接。

  

用法 :

cs add {file|dir} [pre-path] [flags] [pre-path] 用来通知 cscope 使用 -P [pre-path] 选项。

 [flags] 可以用来给 cscope 传递额外的选项。

  例子 :

cscope add /usr/local/cdb/cscope.out

     :

cscope add /projects/vim/cscope.out /usr/local/vim 

     :

cscope add cscope.out /usr/local/vim -C

  find :

 查询 cscope。

  用法 :

cs find {querytype} {name} {querytype} 和 cscope 的控制台界面都是一致的。

   0 或 s:

 查找 C 符号 

   1 或 g:

 查找定义 

   2 或 d:

 查找本函数调用的函数 

   3 或 c:

 查找调用指定函数的函数 

   4 或 t:

 查找字符串 

   6 或 e:

 查找 egrep 模式 

  7 或 f:

 查找文件 

   8 或 i:

 查找包含指定文件的文件 

  例如  :

cscope find c vim_free 

     :

cscope find 3 vim_free    这两个例子执行同样的查询。

  kill :

 终止一个 cscope 连接 (或终止所有 cscope 连接). 

  用法 :

cs kill {num|partial_name} 要终止一个连接,需要给处连接号或者部分的连接名称。

部分名称可以是数据库文件路径的任何一部分。

所以要当心使用这个功能!

 如果给定的连接号是 -1,那么所有的cscope 连接都会被终止。

reset:

 重新初始化所有连接。

 用法 :

cs reset 

show :

 显示当前的连接。

 用法 :

cs show

这里介绍几种常用的插件和安装方法

i.taglist一种代码浏览的插件

taglist_41.zip包含两个文件taglist.vim和taglist.txt。

taglist.vim放置于VIM的plugin目录

taglist.txt放置于VIM的doc目录

当重启VIM,放置于plugin的taglist.vim会自动被载入,而帮助文件需要命令安装。

启动VIM后执行:

helptags.就可以重建帮助文件的索引,这样新插件的帮助文件就被加入到重帮助文件中了。

ii.bufexplorer方便文件之间切换

bufexplorer.zip安装方法可以参考taglist

2)编译及定位程序错误

a)打开VIM的目录中有makefile

b):

make

c):

cl查看编译过程中的错误和警号信息

d):

cc+number跳转到number对应的错误位置

e):

cn查看下一个错误

f):

cp查看上一个错误

3)文件比较

进入比较模式编辑的最简单方法就是用"vimdiff"命令。

它如常启动Vim,但附加一些

设置,以便于查看输入参数所指定的文件间的差异:

vimdifffile1file2[file3[file4]]

:

diffu[pdate]刷新比较结果的高亮和折叠

有两条命令可用于在跳转到差异文所在的位置:

[c反向跳转至上一处更改的开始

]c正向跳转至下一个更改的开始。

有两个命令可用来在两个缓冲区之间复制文本。

相应的结果是,在一定的范围内两缓冲区的内容被统一。

do用另一个缓冲区来修改当前的缓冲区,消除不同之处

dp用当前缓冲区来修改另一个缓冲区,消除不同之处

4)括号内的快速块操作和跳转

Normalmode模式下

daB删除{}及其内的内容

diB删除{}中的内容

在Visualmode模式下

ab选择()中的内容

iB选择{}中的内容(不含{})

5)语法提示与自动补齐

K显示函数的man手册

插入模式下的单词自动完成

行自动完成

8.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可以保存到任意一个文件去

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2