0到行首$到行尾^到行首字母(到上面一句或者上面一个代码段)到下面一句或者下面一个代码段`.到最后一次修改的位置/搜索/指定文字,找到之后可使用n来跳到下一个相同单词位置:转跳到指定行数:$转跳到文件末尾,这个和G的作用相同i插入模式,I也可以,还有a,Ao在当前行下面建立新行,对应的有O,在当前行上面
v进入区块选择y复制已经选择的区块yy复制当前行d剪切已经选择的区块dd剪切当前行p粘贴已经选择的区块
.重复上次指令–重复执行指定的指令
%匹配花括号,方括号,括号等,用于例如跳转到对应的{}位置gd到达光标所在处函数或者变量的定义处>缩进代码,在v下可用>>缩进当前行代码<反缩进代码,在v下可用<<反缩进当前行
搜索替换
简单替换表达式
替换命令可以在全文中用一个单词替换另一个单词
[bash]
:%s/four/4/g
[/bash]
%范围前缀表示在所有行中执行替换. 最后的g 标记表示替换行中的所有匹配点. 如果仅对当前行进行操作, 去掉%即可如果有一个 thirtyfour 这样的单词, 上面的命令会出错. 这种情况下, 这个单词会被替换成 thirty4. 要解决这个问题, 用
\< 来指定匹配单词开头:[bash]
:%s/\<four/4/g
[/bash]
显然, 这样在处理 fourty 的时候还是会出错. 还需要用
\>来解决这个问题:[bash]
:%s/\<four\>/4/g
[/bash]
如果只想替换注释中的 four, 而保留代码中的,由于这很难指定, 可在替换命令中加一个
c标记, 这样, Vim 会在每次替换前提示:[bash]
:%s/\<four\>/4/gc
[/bash]
删除多余的空格
要删除这些每行后面多余的空格, 可以执行如下命令:
[bash]
:%s/\s\+$//
[/bash]
命令前面指明范围是 %, 所以这会作用于整个文件. substitute 命令的匹配模式是
\s\+$. 这表示行末 ($) 前的一个或者多个 (\+) 空格(\s). 替换命令的 to 部分是空的: //. 这样就会删除那些匹配的空白字符. 匹配重复性模式
星号项
* 规定在它前面的项可以重复任意次. 因此:[bash]
/a*
[/bash]
匹配 a, aa, aaa, 等等. 但也匹配 (空字串), 因为零次也包含在内. 星号
* 仅仅应用于那个紧邻在它前面的项. 因此 ab* 匹配 a, ab, abb,abbb, 等等. 如要多次重复整个字符串, 那么该字符串必须被组成一个项. 组成一项的方法就是在它前面加 \(, 后面加 \). 因此这个命令:[bash]
/\(ab\)*
[/bash]
匹配: ab, abab, ababab, 等等. 而且也匹配.
要避免匹配空字串, 使用
\+. 这表示前面一项可以被匹配一次或多次. [bash]
/ab\+
[/bash]
匹配 ab, abb, abbb, 等等. 它不匹配 后面没有跟随 b 的 a.
要匹配一个可选项, 用
\=. 例如:[bash]
/folders\=
[/bash]
匹配 folder 和 folders.
指定重复次数
要匹配某一项的特定次数重复, 使用
\{n,m} 这样的形式. 其中 n 和 m 都是数字. 在它前面的那个项将被重复 n 到 m 次 (|inclusive| 包含 n 和 m). 例如:[bash]
/ab\{3,5}
[/bash]
匹配 abbb, abbbb 以及 abbbbb.
当 n 省略时, 被默认为零. 当 m 省略时, 被默认为无限大. 当 ,m 省略时, 就表示重复正好 n 次. 例如:
模式 匹配次数
\{,4}0, 1, 2, 3 或 4\{3,}3, 4, 5, 等等\{0,1}0 或 1, 同 \=\{0,}0 或 更多, 同 *\{1,}1 或 更多, 同 \+\{3}3
多选一匹配
在一个查找模式中, 或运算符是
\|. 例如:[bash]
/foo\|bar
[/bash]
这个命令匹配了 foo 或 bar. 更多的抉择可以连在后面:
[bash]
/one\|two\|three
[/bash]
匹配 one, two 或 three.
如要匹配其多次重复, 那么整个抉择结构须置于
\( 和 \) 之间:[bash]
/\(foo\|bar\)\+
[/bash]
这个命令匹配 foo, foobar, foofoo, barfoobar, 等等.
再举个例子:
[bash]
/end\(if\|while\|for\)
[/bash]
这个命令匹配 endif, endwhile 和 endfor