Remember that you should be learning by doing, not memorization.
1.零散的一些东西!
a. CTRL-o 回到前一个位置(Notice:Type CTRL-T or CTRL-O <repeat to go further back>)
b. 移动光标,按“k”上移,按“j”下移,按“h”左移,按“l”右移。图示如下:
c.查看系统的字符集:shell>echo $LANG $LANGUAGE
d.如果你现在启动Vim,'compatible'选项应该是关闭的。下面的命令可以检查它的设置:{:set compatible?}
如果结果是'nocompatible'就对了。如果是"compatible"可就麻烦了。你要找找看为什么这个选项还是这样
的设置。也许是上面的文件没找到。下面的命令可以告诉你它的位置:{:scriptnames}
如果你的配置文件没有在这个列表中,你需要检查一下它的位置和名字。
如果在,那一定是别的什么地方把 'compatible'选项给打开了。详情请参考|vimrc|和|compatible-default|
e.进入vim教程,输入该命令即可:[shell>vimtutor]
---->一些平日木有留心的地方:
------>NOTE:Pressing <Esc> will place you in Normal mode or will cacel an unwanted and partially completed command.
------>NOTE:Move the cursor to the beginning of a word that needs to be deleted. Type 'dw' to make the word disappear.
------>NOTE:Type "d$" to delete to the end of the line! (d$可以用来删除整行!)
------>NOTE: Lesson 2.3:ON OPERATORS AND MOTIONS
Many commands that change text are made from an operator and a motion.The format for a delete command with the d delete operator is as follow d motion
Where:
d -- is the delete operator.
motion -- is what the operator will operate on (listed below).
A short list of motions:
w -- until the start of the next word,EXCLUDING its first character.
e -- to the end of the current word,INCLUDING the last character.
$ -- to the end of the line,INCLUDING the last character.
Thus typing de will delete from the cursor to the end of the word.
------->NOTE: Pressing just the motion while in Normal mode without an operator will move the cursor as specified.
------->NOTE: A count between the operator d and the motion works similar to using the motion without an operator.???我做实验怎么发现d2w和2dw的效果一样呢?
------->NOTE: Type dd to delete a whole line.And type 2dd to delete two lines.
------->NOTE: LESSON 2 SUMMARY
1. To delete from the cursor upto the next word type: dw
2. To delete from the cursor to the end of a line type: d$
3. To delete from a whole line type: dd
4. To repeat a motion prepend it with a number: 2w
5. The format for a change command is:
operator [number] motion
where:
operator - is what to do, such as d for delete
[number] - is an optional count to repeat the motion
motion - moves over the next to operator on ,such as w (word),$ (to the end of line),etc....
6. To move to the start of the line use a zero: 0
7. To undo previous actions,type; u (lowercase u)
To undo all the changes on a line ,type: U (capital U)
To undo the undo's ,type: CTRL-R
------->NOTE: Type r and then the character which should be there!!! ( ** Type rx to replace the character at the cursor with x. **)
------->NOTE: Type ce and the correct word !!1 ( ** To change until the end of a word,type ce. **)
------->NOTE: Type c$ and type the rest of the line like the righ line and press <ESC>。
------->NOTE: LESSON 3 SUMMARY 48% 继续看!
f.将光标移到你想附加的位置,然后按[A],然后输入对应的文字即可,最后输入[ESC],进入Normal mode!
g.若是在其他系统上,要费点小事儿:
1.复制教程文件。可以在VIM中做(它知道文件的具体位置):
Shell>vim -u NONE -c 'e $VIMSUNTIME/tutor/tutor' -c 'w! TUTORCOPY' -c 'q'
2.上面那一条命令结束之后,会在当前目录下创建一个名为“TUTORCOPY”的文件作为副本,要使用教程的某种语言的本地化版本,
只需要在文件名后面追加它的对应的两个字符的语言代码,比如对法语:
Shell>vim -u NONE -c 'e $VIMRUNTIME/tutor/tutor.fr' -c 'w! TUTORCOPY' -c 'q'
h.用Vim编辑这个副本
Shell>vim -u NONE -c "set nocp" TUTORCOPY
这两个参数会让Vim更happy一些
i.学完后把教程文件删掉:
Shell>del TUTORCOPY
j.首先键入的命令是 i (进入Insert模式),接着插入“A young”,然后退出 Insert 模式(最后的 <Esc>)。
k.删除一行,删除一整行内容使用“dd”命令。删除后下面的行会移上来填补空缺。
l.删除换行符,在Vim中你可以把两行合并为一行,也就是说两行之间的换行符被删除了:命令是 “J”。两行,将光标移到第一行上然后按 "J"。
m.如果你误删了过多的内容。显然
n.删除换行符,在Vim中你可以把两行合并为一行,也就是说两行之间的换行符被删除了:命令是“J”。将光标移到第一行上然后按“J”。
o.撤消和重做,如果你误删了过多的内容。显然你可以再输入一遍,但是命令“u”更简便,它可以撤消上一次的操作。
实际看一下它的效果,用“dd”命令来删除前面例子中的第一行内容,“u”命令会把它找回来。另一个例子:将光标移到第一行的A上:A young intelligent turtle
现在 用xxxxxxx来删除“A young”。结果如下:intelligent turtle
键入"u"来撤消最后的一次删除。最后被删除的是字符g,所以撤消操作恢复了这个字符,下一个u命令将恢复倒数第二次被删除的字符,再一次是字符u,如此如此。
备注:如果你按下“u”两次结果是两次找回了同样的字符,那说明你的Vim配置成Vi兼容模式了。在|not-compatible| 可以找到这一问题的对策。这个例子假设你的Vim
使用的是Vim的方法。如果你更喜欢老的Vi编辑器的做法,你就要留心两者在这方面的细微差别。
p.重做:如果你撤消了多次,你还可以用CTRL-R (重做)来反转撤消的动作。换句话说,它是对撤消的撤消。
撤消命令还有另外一种形式,“U”命令,它一次撤消对一行的全部操作。第二次使用该命令则会撤消前一个“U”的操作。
“U”命令本身也造成了一次改变,这种改变同样可以用“u”命令和CTRL-R来撤消和重做。看起来这很容易把人搞糊涂,不过别担心,
用“u”和CTRL-R你可以找回任何一个操作状态。请参阅|32.1|了解该主题的更多信息。
q.其他编辑命令:
Vim有一大堆命令来改变文本。请参考|Q_in|和下面的内容,这里仅列出一些最常用的。
----->\追加\
"i" 命令可以在当前光标之前插入文本。但如果你想在当前行的末尾添加一些内容时怎么办呢?你必需在光标之后插入文本。答案是用 "a" 命令来代替 "i" 。
例如要在一段话的末尾将句号去掉,改成三个感叹号。可以将光标移动到行尾的句点上,然后用“x”来删除这个点号。现在光标被置于行尾turtle的e上了。
键入命令:a!!!<Esc> ,然后在后面追加三个叹号!
------->\另起一行\
“o”命令可以再当前行的下面另起一行,并使当前模式转为Insert模式。这样你可以在该命令之后直接输入内容。
“O”命令(注意是大写的字母O)将在当前行的上面另起一行。
------->\使用命令计数\
假设你要向上移动9行。这可以用“kkkkkkkkk”或者“9k”来完成。事实上,很多命令都可以接受一个数字作为重复执行同一命令的次数。比如刚才的例子,
要在行尾追加三个感叹号,当时用的命令是“a!!!<Esc>”。另一个办法是用“3a!<Esc>”命令。3说明该命令将被重复执行3次。
同样,删除3个字符可以用“3x”。指定的数字要紧挨在它所要修饰的命令前面。
r.退出
要退出Vim,用命令“ZZ”。该命令保存当前文件并退出Vim.
备注:Vim不会像其他的编辑器那样,自动为被编辑的文件生成一个备份。如果你用“ZZ”,Vim就会提交你对该文件所做出的修改。并且无法撤销。
当然你也可以配置你的Vim让它也可以自动生成一个备份文件。请参考|07.4|。
------->\放弃编辑\
有时候你会在做了一连串的修改之后突然意识到最好是放弃所有的修改重新来过。别担心。Vim中有一个命令可以丢弃所有的修改并退出 :q!
不要忘了在命令之后加回车!
对于喜欢把事情弄出个究竟的人来说,这个命令由3部分组成:冒号(:),用以进入冒号命令行模式;q命令,告诉编辑器退出;最后是强制命令执行的修饰符(.!)。
这里强制命令执行的修饰符是必需的,因为Vim对隐含地放弃所有修改感到不妥。如果你只是用“:q”来退出,Vim会显示下面的错误信息并且拒绝不负责任地退出。
指定了强制执行的修饰符等于告诉Vim,”我知道也许我这样做很蠢,但是我已经长大了我知道我在做什么你就让我蠢一次吧“。
如果你在放弃所有的修改后还想以该文件的初始内容作为开始继续编辑,还可以用 " :e! " 命令放弃所有修改并重新载入该文件的原始内容。
s.求助篇
你想做的任何操作都可以在Vim的帮助文件里找到答案,别怕问问题!命令 :help
会带你到帮助文件的起始点。如果你键盘上有一个 <F1> 键的话你也可以直接按 <F1> 。
如果你没有指定一个具体的帮助主题, ":help" 命令会显示上面提到的帮助文件的起点。vim的作者聪明地(也许是懒惰地)设计了它的帮助系统:帮助窗口也是一个普通的编辑窗口。
你可以使用编辑其他文件时一样的命令来操作帮助文件。比如用hljk移动光标。
退出帮助窗口也跟退出其他文件编辑窗口一样,使用 "ZZ" 即可。这只会关闭帮助窗口,而不是 退出Vim。
浏览帮助文件时,你会注意到有一些内容用两个小栅栏围了起来(比如 |help|)。这表明此处是一个超链接。如果你把光标置于两个小栅栏之间的任何位置然后按下 CTRL-] (跳转到一个标签的命令),
帮助系统就会带你到那个指定的主题。(因为一些此处不便讨论的原因,在Vim的术语中这种超链接叫标签。所以 CTRL-] 可以跳转到当前光标之下的那个word 所对应的链接中。)
几次跳转之后,你可能想回到原来的某个地方,CTRL-T (弹出标签) 可以回到前一个位置。用命令 CTRL-O (跳转到较早的位置)也可以。
帮助窗口的开始有一个关于 *help.txt* 的说明。在星号 "*" 之间的字符被帮助系统定义为一个标签的目的地(超链接的目的地)
参考 |29.1| 可以了解更多关于标签使用的细节。
要查看关于某个特殊主题的帮助,使用下面的命令形式:":help {subject}"
比如要得到关于 "x" 命令的帮助,就可以使用:":help x "
要查找关于如何删除的内容,使用命令: ":help deleting"
要得到所有Vim命令的索引,使用命令:":help index"
如果你要得到关于某个控制字符的帮助(比如,CTRL-A),你需要用前缀 "CTRL-" 来代表控制键:":help CTRL-A"
Vim编辑器有很多模式。默认情况下帮助系统显示的是Normal模式下某个命令的帮助。比如,下面的命令显示Normal模式下CTRL-H命令的帮助:":help CTRL-H"
要查找其他模式下的帮助,使用一个模式前缀。如果你想要看的是Insert模式下某个命令的帮助,使用 " i_ " 前缀。对于 CTRL-H 来说是这样: ":help i_CTRL-H"
启动Vim编辑器时,你可以使用一些命令行参数。这些参数都以 - 开始。比如说要查找 -t 参数的功能,使用命令:":help -t"
Vim编辑器也有众多的选项来让用户自己进行定制。如果你想得到关于某个选项的帮助,你需要把它用单引号括起来。比如要找 'number' 选项,就可以用命令:":help 'number'"
关于各种模式都要用哪些前缀可以在 |help-context| 中找到。
特殊键用尖括号中一个简单的描述性名字表示。比如要查找Insert模式下的上箭头键的功能,可以用:":help i_<Up>"
如果你看到了像下面这样的错误信息还是不明究竟:E37: No write since last change (use ! to override) 。你可以把它的错误ID号作为一个帮助主题来得到更进一步的信息:":help E37"
--------->\关于帮助的小结\
:help ,通过帮主入口。在该帮助页中向下滚动可以查看所有的帮助文件,包括本地安装的帮助文件(比如不是随Vim安装包发行的). :help usr_toc.txt 用户手册的目录,:help :subject 冒号命令
行命令 "subject" ,比如下面的:
":help :help",就是关于如何通过冒号命令行获得帮助的命令。
":help abc"关于normal模式命令"abc"的帮助。
":help CTRL-B" 关于normal模式控制键<C-B>的帮助。
":help i_abc"和 ":help i_CTRL-B" 关于同样的按键在插入模式的帮助。
":help v_abc"和":help v_CTRL-B" 关于同样的按键在Visual模式的帮助。
":help c_abc"和 ":help c_CTRL-B"关于同样的按键在冒号命令行模式的帮助。
":help 'subject'" 关于选项 'subject' 的帮助。
":help subject()" 关于函数 "subject" 的帮助。
":help -subject" 关于命令行选项 "-subject" 。注意这里“命令行”一词指从命令解释器shell启动Vim时所带参数,不是指进入Vim后的冒号命令行。
":help +subject" 关于编译时特性 "+subject"的帮助。
":help EventName" 关于引发自动命令的事件 "EventName" 的帮助。
":help digraphs.txt" 到帮助文件"digraphs.txt"的开头。这对其它帮助文件同样适用。
":help pattern<Tab>" 查找一个以 "pattern" 开始的帮助标记。重复按<Tab>查看其它匹配的帮助标记。
":help pattern<Ctrl-D>" 同时列出匹配 "pattern" 的所有可能的帮助主题。
":helpgrep pattern" 在所有帮助文件中搜索全部文件查找指定的 "pattern" 。并且定位到第一个匹配的位置。
用下面的命令可以跳转到其他的匹配项:
":cn" ,下一个匹配项。
":cprev",
":cN", 前一个匹配项。
":cfirst",
":clast",第一个/最后一个匹配项。
":copen",
":cclose",打开/关闭快速修改窗口;在该窗口中按<Enter>可以跳到当前光标所意指的条目。
t.移动:
在你插入或删除文本之前,光标当然要先移动到正确的位置上,Vim有众多的命令来移动光标。本章将介绍这些命令中最重要的一些。此外,你可以在 |Q_lr| 找到这些命令的完整列表。
------->\以Word为单位的移动\
使用 "w" 命令可以将光标向前移动一个word。像大多数其它的Vim命令一样,你可以在 "w" 前面指定一个数字前缀以向前移动指定个数的word。比如 "3w"将光标向前移动3个words。
注意,如果当前光标已经在一个word的首字符上时 "w" 命令还是会将光标移动到下一个 word 的首字符上。"b" 命令则将光标向后移动到前一个word的首字符上。同样,"e"命令会将光标
移动到下一个word的最后一个字符。像 "w" 有一个反方向的命令 "b" 与之对应一样,"e"命令有"ge",它将光标移动到前一个word的最后一个字符上。如果光标已经位于当前行的最后一个word,
则"w"会移动到下一行的第一个word上去。所以使用"w"就可以在整个文本段中移动,速度要比"1"快多了。"b"也一样,只是方向相反。
助记: b--->backward,e--->end of word 。
有一些被认为是non-word的特殊字符,比如 ".","-" 或 ")" 充当了word边界的作用。要改变Vim对word 边界的定义,请查看 'iskeyword' 选项。还可以以空白为分界的WORDs为单位进行移动。
这种WORD与通常意义上的word的边界不同。所以此处用了大写的WORD来区分于word。它的移动命令也是相应字母的大写形式,如下所示:
混合使用这种不同大小写的命令,你可以更快地在文本中前后移动。
-------->\移动到行首或行尾\
"$" 命令将光标移动到当前行行尾。如果你的键盘上有一个<End>键,它的作用也一样。
"^"命令将光标移动到当前行的第一个非空白字符上. "0" (注意,是数字零) 命令则总是把光标移动到当前行的第一个字符上。<Home>键也是如此。图示如下:
("....." 在这里代表空白)
"$"命令还可接受一个计数,就像其它的移动命令一样。但是移动到一行的行尾多于一次没有任何意义。所以它的功能被赋予为移动到下一行的行尾。如“1$”会将光标移动到
当前行行尾,“2$”则会移动到下一行的行尾,如此类推。
"0" 命令却不能接受类似这样的计数,因为 "0" 本身就是一个数字,所以合起来 "0" 会成为你前面指定的计数的一部分,另外,并不像其它命令一样可以举一反三,命令 "^" 前
加上一个计数并没有任何效果。
-------->\移动到指定的字符上\
一个最有用的移动命令是单字符搜索命令。命令 "fx" 在当前行上查找下一个字符 x 。提示:"f" 意为 "find"。
例如,光标位于下行的开头,假如你要移动到单词 human 中的字符 h 上去。只要执行命令 "fh" 就可以了。
上图同时展示了命令 "fy" 会将光标定位于单词 really 的尾部。
该命令可以带一个命令计数;命令 "3fl" 会把光标定位于 "foul"的 "l" 上:
"F" 命令向左方向搜索:
"tx" 命令形同 "fx" 命令,只不过它不是把光标停留在被搜索字符上,而是在它之前的一个字符上。提示:"t" 意为 "To"。该命令的反方向版是 "Tx":
(这个命令好像不是很听话!)
这4个命令都可以用 " ; " 来重复。以 " , " 也是重复同样的命令,但是方向与原命令的方向相反。无论如何,这4个命令都不会使光标跑到其它行上去。即使当前的句子还没有结束!
…………
这儿只是凤毛麟角啦~
VIM会让你觉得这个世界很神奇~~Just do it!!!!