VIM有3种模式:通常模式、编辑模式、命令行模式,每种命令都须要在对应的模式下操做下有效。
通常模式 ==》编辑模式: i I a A ……
通常模式到命令模式: : / ?
命令模式、编辑模式==》通常模式 ESC
注意:命令模式没法直接到编辑模式 搞清楚这个,就知道什么状况下该用什么命令。java
1 vim a.txt 打开一个文件 2 set nu 设置行号 3 set nonu 取消设置行号 4 gg (通常模式) 到首行 5 G 查看多少行、到末行 6 58G 直接到58行 7 :58 也是直接到58行 8 10G 向右边移动10个字符 9 gg 跳转到首行 10 /application 查找application出如今第几行? 11 :16,31s/application/mei/gc 把16~31行之间的application替换为mei,而且在替换的时候给提示 12 :16,31s/application/mei/g 不给提示替换(c表示confirm) 13 u 撤销(反悔了,撤销操做);或者:q!不保存,那么全部的操做都不保存了 14 16G ==>16yy(16 lines yanked) ==>G ==>p 复制16-31行这16行,而且粘贴到最后一行以后,说明:p为在光标所在行下一行粘贴,P在光标所在行上一行粘贴 15 1853G ==>dG(删除从光标所在到最后一行数据) 删除末尾16行 16 :w mei.config 把刚才操做后的文件另存一份 17 990G ==>10x 到第990行向后删除10个字符 18 gg ==>O 在第一行以前新增一行,而且输入“Today is Sunny! Leg's go!”
19 补充:o O 表示:o表示在光标所在行下一行插入一行,跟Enter同样;O表示在光标所在行上一行插入,并且直接进入编辑模式。 20
21 :wq! 保存后离开
1.删除字符
要删除一个字符,只须要将光标移到该字符上按下"x"。
2.删除一行
删除一整行内容使用"dd"命令。删除后下面的行会移上来填补空缺。
3.删除换行符
在Vim中你能够把两行合并为一行,也就是说两行之间的换行符被删除了:命令是"J"。
4.撤销
若是你误删了过多的内容。显然你能够再输入一遍,可是命令"u" 更简便,它能够撤消上一次的操做。
5.重作
若是你撤消了屡次,你还能够用CTRL-R(重作)来反转撤消的动做。换句话说,它是对撤消的撤消。撤消命令还有另外一种形式,"U"命令,它一次撤消对一行的所有操做。第二次使用该命令则会撤消前一个"U"的操做。用"u"和CTRL-R你能够找回任何一个操做状态。
6.追加
"i"命令能够在当前光标以前插入文本。
"a"命令能够在当前光标以后插入文本。
"o"命令能够在当前行的下面另起一行,并使当前模式转为Insert模式。
"O"命令(注意是大写的字母O)将在当前行的上面另起一行。
7.使用命令计数
假设你要向上移动9行。这能够用"kkkkkkkkk"或"9k"来完成。事实上,不少命令均可以接受一个数字做为重复执行同一命令的次数。好比刚才的例子,要在行尾追加三个感叹号,当时用的命令是"a!!!"。另外一个办法是用"3a!"命令。3说明该命令将被重复执行3次。一样,删除3个字符能够用"3x"。指定的数字要紧挨在它所要修饰的命令前面。
8.退出
要退出Vim,用命令"ZZ"。该命令保存当前文件并退出Vim。
9.放弃编辑
丢弃全部的修改并退出,用命令":q!"。用":e!"命令放弃全部修改并从新载入该文件的原始内容。
10.以Word为单位的移动
使用"w"命令能够将光标向前移动一个word的首字符上;好比"3w"将光标向前移动3个words。"b"命令则将光标向后移动到前一个word的首字符上。
"e"命令会将光标移动到下一个word的最后一个字符。命令"ge",它将光标移动到前一个word的最后一个字符上。、
11.移动到行首或行尾
"$"命令将光标移动到当前行行尾。若是你的键盘上有一个键,它的做用也同样。"^"命令将光标移动到当前行的第一个非空白字符上。"0"命令则老是把光标移动到当前行的第一个字符上。键也是如此。"$"命令还可接受一个计数,如"1$"会将光标移动到当前行行尾,"2$"则会移动到下一行的行尾,如此类推。"0"命令却不能接受相似这样的计数,命令"^"前加上一个计数也没有任何效果。
12.移动到指定字符上
命令"fx"在当前行上查找下一个字符x(向右方向),能够带一个命令计数"F"命令向左方向搜索。"tx"命令形同"fx"命令,只不过它不是把光标停留在被搜索字符上,而是在它以前的一个字符上。提示:"t"意为"To"。该命令的反方向版是"Tx"。这4个命令均可以用";"来重复。以","也是重复一样的命令,可是方向与原命令的方向相反。
13.以匹配一个括号为目的移动
用命令"%"跳转到与当前光标下的括号相匹配的那一个括号上去。若是当前光标在"("上,它就向前跳转到与它匹配的")"上,若是当前在")"上,它就向后自动跳转到匹配的"("上去.
14.移动到指定行
用"G"命令指定一个命令计数,这个命令就会把光标定位到由命令计数指定的行上。好比"33G"就会把光标置于第33行上。没有指定命令计数做为参数的话, "G"会把光标定位到最后一行上。"gg"命令是跳转到第一行的快捷的方法。
另外一个移动到某行的方法是在命令"%"以前指定一个命令计数好比"50%"将会把光标定位在文件的中间. "90%"跳到接近文件尾的地方。
命令"H","M","L",分别将光标跳转到第一行,中间行,结尾行部分。
15.告诉你当前的位置
使用CTRL-G命令。"set number"在每行的前面显示一个行号。相反关闭行号用命令":set nonumber"。":set ruler"在Vim窗口的右下角显示当前光标位置。
16.滚屏
CTRL-U显示文本的窗口向上滚动了半屏。CTRL-D命令将窗口向下移动半屏。一次滚动一行可使用CTRL-E(向上滚动)和CTRL-Y(向下滚动)。要向前滚动一整屏使用命令CTRL-F。另外CTRL-B是它的反向版。"zz"命令会把当前行置为屏幕正中央,"zt"命令会把当前行置于屏幕顶端,"zb"则把当前行置于屏幕底端.
17.简单搜索
"/string"命令可用于搜索一个字符串。要查找上次查找的字符串的下一个位置,使用"n"命令。若是你知道你要找的确切位置是目标字符串的第几回出现,还能够在"n"以前放置一个命令计数。"3n"会去查找目标字符串的第3次出现。
"?"命令与"/"的工做相同,只是搜索方向相反."N"命令会重复前一次查找,可是与最初用"/"或"?"指定的搜索方向相反。
若是查找内容忽略大小写,则用命令"set ignorecase", 返回精确匹配用命令"set noignorecase" 。
18.在文本中查找下一个word
把光标定位于这个word上而后按下"*"键。Vim将会取当前光标所在的word并将它做用目标字符串进行搜索。"#"命令是"*"的反向版。还能够在这两个命令前加一个命令计数:"3*"查找当前光标下的word的第三次出现。
19.查找整个word
若是你用"/the"来查找Vim也会匹配到"there"。要查找做为独立单词的"the"使用以下命令:"/the\>"。"\>"是一个特殊的记法,它只匹配一个word的结束处。近似地,"\<"匹配到一个word的开始处。这样查找做为一个word的"the"就能够用:"/\"。
20.高亮显示搜索结果
开启这一功能用":set hlsearch",关闭这一功能:":set nohlsearch"。若是只是想去掉当前的高亮显示,可使用下面的命令:":nohlsearch"(能够简写为noh)。
21.匹配一行的开头与结尾
^ 字符匹配一行的开头。$字符匹配一行的末尾。
因此"/was$"只匹配位于一行末尾的单词was,因此"/^was"只匹配位于一行开始的单词was。
22.匹配任何的单字符
.这个字符能够匹配到任何字符。好比"c.m"能够匹配任何前一个字符是c,后一个字符是m的状况,无论中间的字符是什么。
23.匹配特殊字符
放一个反斜杠在特殊字符前面。若是你查找"ter。",用命令"/ter\。"
24.使用标记
当你用"G"命令从一个地方跳转到另外一个地方时,Vim会记得你起跳的位置。这个位置在Vim中是一个标记。使用命令" `` "可使你跳回到刚才的出发点。
``命令能够在两点之间来回跳转。CTRL-O命令是跳转到你更早些时间停置光标的位置(提示:O意为older). CTRL-I则是跳回到后来停置光标的更新的位置(提示:I在键盘上位于O前面)。
注:使用CTRL-I 与按下键同样。
25.具名标记
命令"ma"将当前光标下的位置名之为标记"a"。从a到z一共可使用26个自定义的标记。要跳转到一个你定义过的标记,使用命令" `marks "marks就是定义的标记的名字。命令" 'a "使你跳转到a所在行的行首," `a "会精肯定位a所在的位置。命令:":marks"用来查看标记的列表。
命令delm!删除全部标记。
26.操做符命令和位移
"dw"命令能够删除一个word,"d4w"命令是删除4个word,依此类推。相似有"d2e"、"d$"。此类命令有一个固定的模式:操做符命令+位移命令。首先键入一个操做符命令。好比"d"是一个删除操做符。接下来是一个位移命。好比"w"。这样任何移动光标命令所及之处,都是命令的做用范围。
27.改变文本
操做符命令是"c",改变命令。它的行为与"d"命令相似,不过在命令执行后会进入Insert模式。好比"cw"改变一个word。或者,更准确地说,它删除一个word并让你置身于Insert模式。
"cc"命令能够改变整行。不过仍保持原来的缩进。
"c$"改变当前光标到行尾的内容。
快捷命令:x 表明dl(删除当前光标下的字符)
X 表明dh(删除当前光标左边的字符)
D 表明d$(删除到行尾的内容