注:这些东西主要是为了查找方便记的,所以没有例子。如果要看例子,还不如看手册。
如果你要重复键入一个短语或一个句子, 也有一种快捷的方
法。Vim有一种记录宏的机制。你键入"qa"开始把一段宏记录入寄存器
变量°a°中。按下来你可以象平常一样键入你要的操作,只是这些操作都
会被Vim记录进它命名为°a°的宏中,再次再下"q"键,就结束了宏°a°的
录制。当你要重复执行你刚才记录的那些操作时只要使用"@a"命令。共
有26个可用的寄存器供你记录宏。
使用宏你可以重复多个不同的操作。而不仅仅是插入文本。如果你要
进行某种重复的操作,记着要用这一招呀。
1、"#" 代表当前光标位置.
2、波浪线(~)表示所在行并不是文件内容的一部分。
3、Vim编辑器是一个模式编辑器。这意味着在不同状态下编辑器有不同
的行为模式。两个基本的模式是Normal模式和Insert模式。在Normal模式
下你键入的每一个字符都被视为一个命令。而在Insert模式下键入的字符
都作为实际要输入的文本内容。
4、要知道你现在所处的工作模式是什么,打开显示模式的开关:
:set showmode
你会看到按下冒号键之后当前光标跑到窗口的最后一行去了。那是使用冒
号命令的地方(顾名思义,冒号命令就是总是以冒号打头的命令)。最后按
下回车键结束整个命令(所有的冒号命令都以这种方式表明命令的结束).
5、回到Normal模式后,你就可以用下面的命令来移动光标:
h 左
j 下
k 上
l 右
*02.4* 删除字符
1、要删除一个字符,只需要将光标移到该字符上按下"x".
2、删除一整行内容使用"dd"命令。删除后下面的行会移上来填补空缺:
3、在Vim中你可以把两行合并为一行,也就是说两行之间的换行符被删除了:命令是"J"。比如下面的两行
4、命令"u" 更简便,它可以撤消上一次的操作。
5、如果你撤消了多次,你还可以用CTRL-R(重做)来反转撤消的动作。(取消撤销,不是取消上一次操作,"u“才是取消上次操作。只有前一次是撤销命令才有效)
6、撤消命令还有另一种形式,"U"命令,它一次撤消对一行的全部操作。第二次使用该命令则会撤消前一个"U"的操作。
追加
"i"命令可以在当前光标之前插入文本。但如果你想在当前行的末尾添加一些内容时可以用"a"(append)命令。
"o"命令可以在当前行的下面另起一行,并使当前模式转为Insert模式。这样你可以在该命令之后直接输入内容。
"O"命令(注意是大写的字母O)将在当前行的上面另起一行。
使用命令计数
用"3a!<Esc>"命令。3说明该命令将被重复执行3次(在末尾添加3个!,<Esc>后生效)。同样,删
除3个字符可以用"3x"。指定的数字要紧挨在它所要修饰的命令前面。
*02.7* 退出
要退出Vim,用命令"ZZ"。该命令保存当前文件并退出Vim.
放弃编辑
有时你会在做了一连串修改之后突然意识到最好是放弃所有的修改重
新来过。别担心。Vim中有一个命令可以丢弃所有的修改并退出:
:q!
别忘了在命令之后加回车。
对于喜欢把事情弄出个究竟的人来说,这个命令由3部分组成:冒
号(:),用以进入冒号命令行模式;q命令,告诉编辑器退出;最后是强制
命令执行的修饰符(.!)
如果你在放弃所有修改后还想以该文件的初始内容作为开始继续编
辑,还可以用":e!"命令放弃所有修改并重新载入该文件的原始内容。
第二章 移动。
*03.1* 以Word为单位的移动
1、使用"w"命令可以将光标向前移动一个word
This is a line with example text
--->-->->----------------->
w w w 3w
2、。"b"1命令则将光标向后移动到前一个word的首字符上:
This is a line with example text
<----<--<-<---------<---
b b b 2b b
3、"e"2命令会将光标移动到下一个word的最后一个字符3.象"w"有一
个反方向的命令"b"与之对应一样,"e"命令有"ge",它将光标移动到前一
个word的最后一个字符上:
This is a line with example text
<- <--- -----> ---->
ge ge e e
4、如果光标已经位于当前行的最后一个word,则"w"会移动到下一行的第一
个word上去
5、还可以以空白为分界的WORDs为单位进行移动。这种WORD与通常意义
上的word的边界不同。所以此处用了大写的WORD来区分于word
*03.2* 移动到行首或行尾
"$"命令将光标移动到当前行行尾。如果你的键盘上有一个<End>键,它的作用也一样。
"^"命令将光标移动到当前行的第一个非空白字符上1. "0"命令则总是把光标移动到当前行的第一个字符上。<Home>键也是如此。图示如下:
("....." 在这里代表空白)
"$"命令还可接受一个计数,就象其它的移动命令一样.
如"1$"会将光标移动到当前行行尾,"2$"则会移动到下一行的行
尾,如此类推。
PS:命令"^"前加上一个计数并没有任何效果。
*03.3* 移动到指定的字符上
1、一个最有用的移动命令是单字符搜索命令。命令"fx"在当前行上查找
下一个字符x。提示:"f"意为"find"。
移动到单词human中的字符h上去。只要执行命令"fh"就可以了:
该命令可以带一个命令计数; 命令"3fl"会把光标定位于"foul"的"l"上:
2、"F"命令向左方向搜索:(规律:一个命令的大写字母形式会做同样的事情,但是方向相反)
3、"tx"命令形同"fx"命令,只不过它不是把光标停留在被搜索字符上,而是
在它之前的一个字符上。提示:"t"意为"To"。该命令的反方向版是"Tx":
4、这4个命令都可以用";"来重复。以","也是重复同样的命令,但是方向与
原命令的方向相反2。无论如何,这4个命令都不会使光标跑到其它行上去。
*03.4* 以匹配一个括号为目的的移动
写程序的时候很容易被层层嵌套的()给弄糊涂。此时使用命令“%2”
就太方便了:它跳转到与当前光标下的括号相匹配的那一个括号上去。
*03.5* 移动到指定行
1、用"G"(go)命令。指定一个命令计数,这个命令就会把光标定位到由命令计数指定的行上。比如"33G"就会把光标置于第33行上。
没有指定命令计数作为参数的话, "G"会把光标定位到最后一行
上。"gg"命令是跳转到第一行的快捷的方法。"1G"效果也是一样,但是敲
起来就没那么顺手了。
2、另一个移动到某行的方法是在命令"%"之前指定一个命令计数4. 比如"50%"将会把光标定位在文件的中间5. "90%"跳到接近文件尾的地方6。
3、但如果你只是想移动到目前显示在屏幕上的那些行呢?下图展示了达到这一目标的几个命令:
提示:"H"意为Home, "M"为Middle, "L"为Last.
*03.6* 告诉你当前的位置
要知道你当前在文件中的位置,共有三种方法:
1. 使用CTRL-G命令。你会得到一些类似于下面的信息行(假设’ruler‘选项已关闭):
2. 设置‘number’选项1。这会在每行的前面显示一个行号:
:set nu 也行。
将行号关闭,可以用命令:
因为°number°是一个二值选项,所以在它前面放一个"no"表示关闭该
选项。一个二值选项只有两种可能的值,开或关。
3、3. 设置°ruler°选项。这会在Vim窗口的右下角显示当前光标位置
*03.7* 滚屏
1、CTRL-U命令会使文本向下滚动半屏。也可以想象为在显示文本的窗口向上滚动了半屏。
CTRL-D命令将窗口向下移动半屏,所以相当于文本向上滚动了半屏。
2、要一次滚动一行可以使用CTRL-E(向上滚动)和CTRL-Y(向下滚动)。
提示:CTRL-E 意为Extra.
3、要向前滚动一整屏(实际上是整屏去两行)使用命令CTRL-F。另外CTRL-B是它的反向版。很幸运CTRL-F是向前1,CTRL-B是向后2,好记吧!
4、"zz"命令会把当前行置为屏幕正中央(最喜欢了).
5、"zt"命令会把当前行置于屏幕顶端1,"zb"则把当前行置于屏幕底端2。此外还有一些与滚屏相关的命令,请参考|Q sc|。
*03.8* 简单搜索
1、"/string"命令可用于搜索一个字符串。比如要找到单词"include",使用命令:
最后按下回车键执行命令。
备注: 字符.*[]^%/?~$ 有特殊意义,如果你要找的东西
包括这些内容,要在这些字符前面放置一个反斜杠。见下
文。
要查找上次查找的字符串的下一个位置。使用"n"命令。
如果你知道你要找的确切位置是目标字符串的第几次出现,还可以在"n"之前放置一个命令计数。"3n"会去查找目标字符串的第3次出现。
2、"?"命令与"/"的工作相同,只是搜索方向相反:
"N"命令会重复前一次查找,但是与最初用"/"或"?"指定的搜索方向相反。所以在"/"命令之后的"N"命令是向前搜索,而"?"之后的"N"命令是向后搜索。
忽略大小写
通常情况下你要准确地键入你要查找的东西。如果你并不关心目标字
符中字母的大小写,可以通过设置°ignorecase°选项:
现在你再去搜索"word",它就会同时匹配"Word"和"WORD"。要回到对大小
写的精确匹配,可以重设: