Skip to content

longtzw/vim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

使用pathogen+git管理Vim插件

git clone --recursive git@github.com:longtzw/vim.git

实现过文件查找替换

在当前目录下所有文件中查找 word

:vimgrep word *

在当前目录下及其子目录的所有文件中查找 word

:vimgrep word **

多文件替换

:args *.c     " 当前目录
:agrs */*.c   " 当前目录及其下级目录
:agrs **/*.c  " 当期目录及其递归下级目录
:argdo %s/hate/love/gc | update " 没有update的话不会写文件

代码折叠

命令模式下:set fdm可以看到当前使用的折叠模式,默认是manual,set fdm= foldmethod 可以设置折叠模式。

6种模式

  • manual 手动建立折叠。
  • indent 相同缩进距离的行构成折叠。
  • expr 用表达式来定义折叠,'foldexpr' 给出每行的折叠级别。
  • marker 标志用于指定折叠。
  • syntax 语法高亮项目指定折叠。
  • diff 没有改变的文本构成折叠

indent 模式

如果使用了indent方式,vim会自动的对大括号的中间部分进行折叠。

相关快捷键:

  • zc 折叠
  • zC 对所在范围内所有嵌套的折叠点进行折叠
  • zo 展开折叠
  • zO 对所在范围内所有嵌套的折叠点展开
  • [z 到当前打开的折叠的开始处。
  • ]z 到当前打开的折叠的末尾处。
  • zj 向下移动。到达下一个折叠的开始处。关闭的折叠也被计入。
  • zk 向上移动到前一折叠的结束处。关闭的折叠也被计入。

Section1 模式

1.5 命令行模式

1.5.1 运行shell命令

Section5 匹配

5.1 按模式匹配及按原义匹配

5.1.1 调整查找模式的大小写敏感性

全局设置大小写敏感性

启用'ignorecase'设置, Vim的查找模式将不区分大小写,副作用是会影响Vim的关键字自动补全行为。

每次查找时设置大小写敏感性

元字符\c会让查找模式忽略大小写,\C会强制区分大小写。可以出现在模式的任意位置。

启用更智能的大小写敏感性设置

设置了'smartcase'选项,如果模式全是小写字母组成的,就会按照忽略大小写的方式进行查找,但只要我们输入一个大写字母。查找方 式就会变成区分大小写了。

5.1.2 按正则表达式查找时,使用\v模式开关

Vim缺省情况下使用magic模式进行查找,此模式下,圆括号'()'与花括号'{}'等需要转义,才能使其具有特殊含义,否则就按原义匹配字 符。

我们可以通过元字符\v开启very magic搜索模式,即假定除'_'、大小写字母及数字之外的所有字符都具有特殊含义。

  • 字符类\x可以代替完整的字符集[0-9a-fA-F]

5.1.3 按原义查找文本时,使用\V原义开关

5.1.4 使用圆括号捕获子匹配

当我们制定一个模式时,可以捕获其子匹配,并在其他地方引用它们。此功能与substitute命令组合起来尤为好用,它也可用于定义某一 类模式,这类模式的特点是重复包含某个单词。

下面是一个专门用来匹配重复单词的正则表达式

/\v<(\w+)\_s+\1>

任何圆括号内部的匹配文本都会被自动保存到一个临时的仓库。我们可以使用\1引用这段被捕获的文本。

< 与 > 用于匹配单词的边界, _s 用于匹配空白符或换行符。

5.1.5 界定单词的边界

\w匹配单词类字符, 包括字母、数字以及符号"_", 而\W则用来匹配除单词类外的其它字符。

使用圆括号,但不捕获其内容

为了使用圆括号本身的分组功能,我们可以在圆括号前加'%',指示Vim不要将括号内的内容赋给寄存器\1,如下:

/\v%(And|D)rew Neil

注意:想在very magic搜索模式下匹配尖括号本身的话,必须转义

5.1.6 界定匹配的边界

当我们只对匹配结果中的一部分感兴趣时,Vim中的元字符\zs与\ze可以帮助我们处理这种情况。

/\v"\zs[^"]+\ze"

上面的模式可以匹配引号内部的内容

5.1.7 转义问题字符

正向查找时要转义'/'字符, 反向查找时要转义'?'字符, 每次都要转义''字符

5.2 查找

5.2.1 结实查找命令

执行一次查找

查找命令'/'抵达文档结尾处时会回绕至文档开头继续查找,如果不想回绕,可以关闭'wrapscan'选项。

回溯之前的查找

我们可以通过键,滚动浏览之前的查找记录

5.2.2 在执行查找前预览第一处匹配

缺省情况下, 我们在输入查找模式时, Vim不会进行查找, 只有当我们按下后, 它才会立即展开行动, 'incsearch'会让Vim根据已在 查找域中输入的文本, 预览第一处匹配。

根据预览结果对查找域自动补全

会用当前预览的匹配结果对查找域进行自动补全。

5.2.3 统计当前模式的匹配个数

:%s/word//gn

标志位n会抑制正常的替换动作, 而是简单地统计匹配次数。

5.2.4 利用查找历史, 迭代完成复杂模式

'q/'可以调出查找历史窗口, 在此窗口下可以使用Vim强大的区分模式的编辑能力。

5.2.5 查找当前高亮选区中的文本

5.2.6 重用上次的查找模式

将substitute命令的查找域留空, 意味着Vim将会重用上次的查找模式。

输入/ 即可把上次的查找内容粘贴进来。

5.2.7 用寄存器的值替换

引用

假设我们已经复制了多行文本, 并存放于寄存器0中。运 行下面的命令,我们可以在substitute命令的替换域中使用这段文本

:%s//\=@0/g

= 将指示Vim执行一段表达式脚本。在Vim脚本中,我们可以用@{register}来引用这个寄存器的内容

5.2.8 重复上一次substitute命令

:&& 命令中前一个&作为Ex命令 :& 的组成部分,用作重复上一次的 :substitute 命令,而第二个&则会重用上一次 :s 命令的标志位。

g& 命令可以作为 :%&& 的快捷方式

About

vim plugin&config

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors