git clone --recursive git@github.com:longtzw/vim.git
:vimgrep word *
:vimgrep word **
:args *.c " 当前目录
:agrs */*.c " 当前目录及其下级目录
:agrs **/*.c " 当期目录及其递归下级目录
:argdo %s/hate/love/gc | update " 没有update的话不会写文件
命令模式下:set fdm可以看到当前使用的折叠模式,默认是manual,set fdm= foldmethod 可以设置折叠模式。
- manual 手动建立折叠。
- indent 相同缩进距离的行构成折叠。
- expr 用表达式来定义折叠,'foldexpr' 给出每行的折叠级别。
- marker 标志用于指定折叠。
- syntax 语法高亮项目指定折叠。
- diff 没有改变的文本构成折叠
如果使用了indent方式,vim会自动的对大括号的中间部分进行折叠。
相关快捷键:
- zc 折叠
- zC 对所在范围内所有嵌套的折叠点进行折叠
- zo 展开折叠
- zO 对所在范围内所有嵌套的折叠点展开
- [z 到当前打开的折叠的开始处。
- ]z 到当前打开的折叠的末尾处。
- zj 向下移动。到达下一个折叠的开始处。关闭的折叠也被计入。
- zk 向上移动到前一折叠的结束处。关闭的折叠也被计入。
全局设置大小写敏感性
启用'ignorecase'设置, Vim的查找模式将不区分大小写,副作用是会影响Vim的关键字自动补全行为。
每次查找时设置大小写敏感性
元字符\c会让查找模式忽略大小写,\C会强制区分大小写。可以出现在模式的任意位置。
启用更智能的大小写敏感性设置
设置了'smartcase'选项,如果模式全是小写字母组成的,就会按照忽略大小写的方式进行查找,但只要我们输入一个大写字母。查找方 式就会变成区分大小写了。
Vim缺省情况下使用magic模式进行查找,此模式下,圆括号'()'与花括号'{}'等需要转义,才能使其具有特殊含义,否则就按原义匹配字 符。
我们可以通过元字符\v开启very magic搜索模式,即假定除'_'、大小写字母及数字之外的所有字符都具有特殊含义。
- 字符类\x可以代替完整的字符集[0-9a-fA-F]
当我们制定一个模式时,可以捕获其子匹配,并在其他地方引用它们。此功能与substitute命令组合起来尤为好用,它也可用于定义某一 类模式,这类模式的特点是重复包含某个单词。
下面是一个专门用来匹配重复单词的正则表达式
/\v<(\w+)\_s+\1>
任何圆括号内部的匹配文本都会被自动保存到一个临时的仓库。我们可以使用\1引用这段被捕获的文本。
< 与 > 用于匹配单词的边界, _s 用于匹配空白符或换行符。
\w匹配单词类字符, 包括字母、数字以及符号"_", 而\W则用来匹配除单词类外的其它字符。
使用圆括号,但不捕获其内容
为了使用圆括号本身的分组功能,我们可以在圆括号前加'%',指示Vim不要将括号内的内容赋给寄存器\1,如下:
/\v%(And|D)rew Neil
注意:想在very magic搜索模式下匹配尖括号本身的话,必须转义
当我们只对匹配结果中的一部分感兴趣时,Vim中的元字符\zs与\ze可以帮助我们处理这种情况。
/\v"\zs[^"]+\ze"
上面的模式可以匹配引号内部的内容
正向查找时要转义'/'字符, 反向查找时要转义'?'字符, 每次都要转义''字符
执行一次查找
查找命令'/'抵达文档结尾处时会回绕至文档开头继续查找,如果不想回绕,可以关闭'wrapscan'选项。
回溯之前的查找
我们可以通过键,滚动浏览之前的查找记录
缺省情况下, 我们在输入查找模式时, Vim不会进行查找, 只有当我们按下后, 它才会立即展开行动, 'incsearch'会让Vim根据已在 查找域中输入的文本, 预览第一处匹配。
根据预览结果对查找域自动补全
会用当前预览的匹配结果对查找域进行自动补全。
:%s/word//gn
标志位n会抑制正常的替换动作, 而是简单地统计匹配次数。
'q/'可以调出查找历史窗口, 在此窗口下可以使用Vim强大的区分模式的编辑能力。
将substitute命令的查找域留空, 意味着Vim将会重用上次的查找模式。
输入/ 即可把上次的查找内容粘贴进来。
引用
假设我们已经复制了多行文本, 并存放于寄存器0中。运 行下面的命令,我们可以在substitute命令的替换域中使用这段文本
:%s//\=@0/g
= 将指示Vim执行一段表达式脚本。在Vim脚本中,我们可以用@{register}来引用这个寄存器的内容
:&& 命令中前一个&作为Ex命令 :& 的组成部分,用作重复上一次的 :substitute 命令,而第二个&则会重用上一次 :s 命令的标志位。
g& 命令可以作为 :%&& 的快捷方式