王朝网络
分享
 
 
 

自己整理的VIM高级使用技巧, 很实用哟

王朝other·作者佚名  2008-05-21
宽屏版  字体: |||超大  

VIM的功能太强大了, 以至于小弟已经把它作为主力文本编辑器, 现把自己整理的一些技巧与大家分享, 大部分都来自于手册.

##################################################

h (左移) j (下行) k (上行) l (右移)

输入 dw 可以从光标处删除至一个单字/单词的末尾

输入 d$ 从当前光标删除到行末

删除命令 d 的格式如下∶

[number] d object 或者 d [number] object

其意如下∶

number - 代表执行命令的次数(可选项,缺省设置为 1 )。

d - 代表删除。

object - 代表命令所要操作的对象(下面有相关介绍)。

一个简短的对象列表∶

w - 从当前光标当前位置直到单字/单词末尾,包括空格。

e - 从当前光标当前位置直到单字/单词末尾,但是 *不* 包括空格。

$ - 从当前光标当前位置直到当前行末。

欲删除整行,请输入∶dd

输入 p 将最后一次删除的内容置入光标之后

输入 r 和一个字符替换光标所在位置的字符

要改变一个单字/单词的部分或者全部,请输入 cw

更改类指令的工作方式跟删除类命令是一致的。操作格式是∶

[number] c object 或者 c [number] object

对象参数也是一样的,比如 w 代表单字/单词,$代表行末等等。

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

输入 SHIFT-G 则直接跳转到文件中的某一指定行。

输入 / 以及尾随的字符串可以用以在当前文件中查找该字符串。 要查找同上一次的字符串,只需要按 n 键。要向相反方向查找同上一次的字符串,请输入 Shift-N 即可。 如果您想逆向查找字符串,请使用 ? 代替 / 进行。

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

输入 :s/old/new/g 可以替换 old 为 new。

要替换两行之间出现的每个匹配串,请输入 :#,#s/old/new/g (#,#代表的是两行的行号)。输入 :%s/old/new/g 则是替换整个文件中的每个匹配串。进行全文替换时询问用户确认每个替换需添加 c 选项,请输入 :%s/old/new/gc

输入 :! 然后紧随著输入一个外部命令可以执行该外部命令。

要将对文件的改动保存到文件中,请输入 :w FILENAME 。

要保存文件的部分内容,请输入 :#,# w FILENAME **

#,# 就是上面要求您记住的行号(顶端行号,底端行号)

要向当前文件中插入另外的文件的内容,请输入 :r FILENAME

特别提示∶您所提取进来的文件将从光标所在位置处开始置入

输入 o 将在光标的下方打开新的一行并进入插入模式。输入大写的 O 可以在光标上方打开新的一行并将光标置于新开的行首,进入插入模式。

输入小写的 a 可以在光标所在位置之后插入文本。输入大写的 A 可以在光标所在行的行末之后插入文本。

输入大写的 R 可连续替换多个字符。**直至按 <ESC> 键退出替换模式而进入正常模式。

J: 把两行连起来

CTRL-R: redo

"o" 命令在光标下方建立一个新的空行,并把 Vim 切换到插入模式

"O" 命令(大写)在光标上方打开一个新行

w: 移动光标向前跳动一个词,移动到词首

b: 与w相反

"e" 命令可以移到下一个单词的词末,而 "ge" 则移动到前一个单词的末尾

"$" 命令把光标移动到当前行行尾

"^" 命令把光标移动到当前行的第一个非空字符

"0"(零) 命令则移到一行的第一个字符

f/F:单字符查找命令,最有用的移动命令之一,"fx" 命令向前查找本行中的字符 x。"F" 命令则用于向左查找。

"tx" 命令与 "fx" 相似,但它只把光标移动到目标字符的前一个字符上。提示:"t" 表示 "To"。这个命令的反向版本是 "Tx"。

这四个命令可以通过 ";" 命令重复,"," 命令则用于反向重复。无论用哪个命令,光标永远都不会移出当前行,哪怕是这两行是连续的一个句子。

G: 移动到指定的行,"33G" 把你送到 33 行

"50%" 移动到文件的中间,而 "90%" 移到差不多结尾的位置。

H,M,L:分别代表移到当前视野的Home, Middle, Last处

:set number 这会在每行的前面加上一个行号

有些 "操作符-动作" 命令由于经常被使用,所以被设置为单字符命令:

x 表示 dl (删除当前光标下的字符)

X 表示 dh (删除光标左边的字符)

D 表示 d$ (删除到行尾)

C 表示 c$ (修改到行尾)

s 表示 cl (修改一个字符)

S 表示 cc (修改一整行)

使用 "V" 命令来启动可视模式。左右移动不会有任何效果。而通过上下移动,你可以一次选择多行。如果你要处理一个矩形块内的文本,可以使用 CTRL-V 启动可视模式。

"daw" 的 "d" 是删除操作符。"aw" 是一个文本对象。提示:"aw" 表示 "A Word"一个单词),这样,"daw" 就是 "Delete A Word"(删除一个单词)。确切地说,该单词后的空格字符也被删除掉了。

"cis" 包括 "c"(change,修改)操作符和 "is" 文本对象。这表示 "Inner Sentence"(译者注:实在很难用中文表示这个意思了,各位还是记英文名吧)。还有一个文本对象是 "as",区别是 "as" 包括句子后面的空白字符而 "is" 不包括。如果你要删除一个句子,而且你还想同时删除句子后面空白字符,就用 "das";如果你想保留空白字符而替换一个句子,则使用"cis"。

还有很多方法可以删除文本。这是一些经常用到的:

x 删除光标下的字符("dl"的缩写)

X 删除光标前的字符("dh"的缩写)

D 从当前位置删除到行尾("d$"的缩写)

dw 从当前位置删除到下一个单词开头

db 从当前位置删除到前一个单词的开头

diw 删除光标上的单词(不包括空白字符)

daw 删除光标上的单词(包括空白字符)

dG 删除到文末

dgg 删除到文首

如果你用 "c" 代替 "d",这会变成修改命令;而改用 "y",则变成拷贝命令,等等等等。

还有一些常用的命令,放在哪一章都不合适,列在这里:

~ 修改光标下字符的大小写,并移动到下一个字符。这不是一个操作符

(除非设置了 'tildeop'),所以你不能连接一个动作命令。这个命

令在可视模式下也有效,它会改变被选中的所有文本的大小写。

I 移到当前行的第一个非空字符并启动插入模式

A 移动到行尾并启动插入模式

彩色的文字难以辨认

Vim 自动猜测你使用的背景色。如果是黑的(或者其它深色的色彩),它会

用浅色作为前景色。如果是白的(或者其它浅色),它会使用深色作为前景

色。如果 Vim 猜错了,文字就很难认了。要解决这个问题,设置一下

'background' 选项。对于深色:

:set background=dark

而对于浅色:

:set background=light

这两个命令必须在 ":syntax enable" 命令前调用,否则不起作用。如果要在

这之后设置背景,可以再调用一下 ":syntax reset"。

:colorscheme evening

保留原始文件

如果你在编辑源程序,你可能想在修改之前保留一个备份。但备份文件会在你存盘的时

候被覆盖。这样它只能保留前一个版本,而不是最早的文件。

要让 Vim 保存一个原始的文件,可以设置 'patchmode' 选项。这个选项定义需要

改动文件的第一个备份文件的扩展名。通常可以这样设:

:set patchmode=.orig

这样,当你第一次编辑 data.txt,作了修改并执行存盘,Vim 会保留一个名为

"data.txt.orig" 的原始文件。

如果你接着修改这个文件,Vim 会发现这个原始文件已经存在,并不再覆盖它。进

一步的备份就存在 "data.txt~"(或者你设置的 'backupext' 指定的文件)中。

如果你让 'patchmode' 设为空(这是默认的情况),则原始文件不会被保留。

文件间拷贝文本

本节解释如何在文件间拷贝文本。我们从一个简单的例子开始。编辑一个你要拷贝文本的

文件,把光标移到要拷贝的文本的开始处,用 "v" 命令启动可视模式,然后把光标移到

要拷贝文本的结尾处,输入 "y" 拷贝文本。

例如,要拷贝上面这段文字,你可以执行:

:edit thisfile

/本节解释

vjjj$y

现在编辑你要粘贴文本的文件。把光标移到你要插入文本的地方。用 "p" 命令把文本粘贴

到那里:

:edit otherfile

/There

p

当然,你可以用任何命令拷贝文本。例如,用 "V" 命令选中整行的内容。或者用

CTRL-V 选择一个矩形区域。或者使用 "Y" 拷贝一个单行,"yaw" 拷贝一个单词等。

"p" 命令把文本粘贴到光标之后,"P" 命令则粘贴到光标之前。注意, Vim

会记住你拷贝的是一整行还是一个矩形,并用相同的方式把文本贴出来。

关闭窗口

以下命令用于关闭窗口:

:close

实际上,任何退出编辑的命令都可以关闭窗口,象 ":quit" 和 "ZZ" 等。但 "close"可以避免你在剩下一个窗口的时候不小心退出 Vim 了。

关 闭 所 有 其 它 窗 口

如果你已经打开了一整套窗口,但现在只想编辑其中一个,如下命令可以完成这个功能:

:only

这个命令关闭除当前窗口外的所有窗口。如果要关闭的窗口中有一个没有存盘,Vim 会

显示一个错误信息,并且那个窗口不会被关闭。

对所有窗口执行命令

你打开了几个窗口,现在你想退出 Vim,你可以分别关闭每一个窗口。更快的方法是:

:qall

这表示 "quit all"(全部退出)。如果任何一个窗口没有存盘,Vim 都不会退出。同时光标会自动跳到那个窗口,你可以用 ":write" 命令保存该文件或者 ":quit!" 放弃修改。

如果你知道有窗口被改了,而你想全部保存,则执行如下命令:

:wall

这表示 "write all"(全部保存)。但实际上,它只会保存修改过的文件。Vim 知道保

存一个没有修改过的文件是没有意义的。

另外,还有 ":qall" 和 "wall" 的组合命令:

:wqall

这会保存所有修改过的文件并退出 Vim 。

最后,下面的命令由于退出 Vim 并放弃所有修改:

:qall!

注意,这个命令是不能撤消的。

用 vimdiff 显示区别

有一种特殊的启动 Vim 的方法可以用来显示两个文件的区别。让我们打开一个 "main.c"

并插入一些字符。在设置了 'backup' 选项的情况下保存这个文件,以便产生 "main.c~"

备份文件。

在命令行中输入如下命令:(不是在Vim中)

vimdiff main.c~ main.c

Vim 会用垂直分割的方式打开两个文件。你只能看到你修改过的地方和上下几行的地方。

我 在 哪?

要知道当前文件在文件列表中的位置,可以注意一下文件的标题。那里应该显示类似

"(2 of 3)" 的字样。这表示你正在编辑三个文件中的第二个。

如果你要查看整个文件列表,使用如下命令:

:args

这是 "arguments"(参数)的缩写。其输出应该象下面这样:

one.c [two.c] three.c

这里列出所有你启动 Vim 时指定的文件。你正在编辑的那一个,例如,"two.c",被中括号括起来了。

移 动 到 另 一 个 参 数

要回到前一个文件:

:previous

这个命令与 ":next" 相似,只不过它是向相反的方向移动。同样地,这个命令有一个

快捷版本用于 "保存再移动":

:wprevious

要移动到列表中的最后一个文件:

:last

而要移动到列表中的第一个文件:

:first

不过,可没有 ":wlast" 或者 "wfirst" 这样的命令了。

你可以在":next"和":previous"前面加次数前缀。例如要向后跳两个文件:

:2next

选项 'fileformats' 包含各种各样的格式,Vim 会在编辑一个新文件之初尝试该

选项定义得各种格式。例如,下面这个命令告诉 Vim 先尝试用 UNIX 格式,其次, 尝试

MS-DOS 格式:

:set fileformats=unix,dos

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有