zoukankan      html  css  js  c++  java
  • Vim实用技巧系列

    最近发现了一个很好的VIM资源,best of vim tips, 展示了一系列很有用的vim 技巧。博主会逐个翻译介绍这些技巧。

    来源: http://rayninfo.co.uk/vimtips.html

    本篇:VIM搜索有关的技巧

    " *最佳搜索技巧*
    /joe/e                      : 搜索joe并且将光标置于匹配单词末尾。若不加/e,则光标位于匹配单词开头
    3/joe/e+1                   : 搜索第三个joe并且将光标置于匹配单词末尾+1
    /joe/s-2                    : 光标置于匹配单词开头-2的位置
    /joe/+3                     : 搜索joe并且光标下移3行
    /^joe.*fred.*bill/          : 查找依次包含有joe, fred, bill这三个单词的字符串,几个单词之间可以有任何内容。joe必须位于行的开头
    /^[A-J]/                    : 查找以A到J之间字母开头的行
    /begin\_.*end               : 在多行中查找依次包含begin和end两个单词的字符串,两个单词之间可以有任何内容。
    /fred\_s*joe/               : 同上。但是限制两个单词之间只能有空白字符 (white space).
    /fred|joe                  : 查找FRED或者JOE,两个单词中有一个匹配即可
    /.*fred&.*joe              : Search for FRED AND JOE in any ORDER!
    /<fred>/                  : 查找fred这个单词,不能使afred, freda, 或者afreda,只能是fred
    /<dddd>               : 查找四个数字,不多不少
    /DddddD               : 同上,但是需要数字前后都有空白字符 (white space).
    /<d{4}>                 : 同上 
    /([^0-9]|^)%.*%          : 查找以非数字开头或者位于行首的字符串。博主表示也没太搞懂那两个百分号是啥意思。原文是Search for absence of a digit or beginning of line
    " 查找空行
    /^
    {3}                    : 查找三个空行
    /^str.*
    str                : 查找连续两个以str开头的行
    /(^str.*
    ){2}           : 同上
    " 利用正则表达式中的存储,也就是变量。下面这个命令中2表示joe,1表示fred
    /(fred).*(joe).*2.*1
    " 正则表达式重复次数。下面命令表示重复8次
    /^([^,]*,){8}
    " 可是模式下的搜索、查找
    :vmap // y/<C-R>"<CR>       : 查找高亮字符串
    :vmap <silent> //    y/<C-R>=escape(@", '\/.*$^~[]')<CR><CR> : 查找带有特定字符的高亮字符串
    " zs and ze regex delimiters :h /zs
    /<zs[^>]*ze>              : 查找tag的内容,忽略tag
    " zero-width :h /@=
    /<@<=[^>]*>@=             : 同上
    /<@<=\_[^>]*>@=           : 在多行中查找tag
    " 在多行中搜索、查找, \_ 代表多行
    /<!--\_p{-}-->                   : 查找多行的注释
    /fred\_s*joe/                     : 多行中查找两个单词,单词之间可以有空白符
    /bugs(\_.)*bunny                : 多行中查找两个单词,单词之间可以有任何字符
    :h \_                             : 查看帮助
    " 查找光标位置处的子程序、函数的定义
    :nmap gx yiw/^(sub<bar>function)s+<C-R>"<CR>
    " 多文件查找
    :bufdo /searchstr/                : 通过:rewind来重新开始查找
    " 更好的多行查找,但是具有欺骗性
    :bufdo %s/searchstr/&/gic   : 输入n到下一个,输入a停止
    " 查找没有反斜杠的URL
    ?http://www.vim.org/        : 利用了反向搜索,很聪明。
    " 指定你不想查找的内容
    /cv([^aeiou]&a){4}       : 查找四个连续的辅音字母
    /\%>20l\%<30lgoat           : 在第20行到第30行之间查找goat
    /^.{-}home.{-}zshome/e   : 查找一行中第二次出现的home
    :%s/home.{-}zshome/alone  : 在所有行中替换home的出现。博主没看懂,原文是 Substitute only the occurrence of home in any line [N]
    " 在不含有tongue的行中查找str
    ^(.*tongue.*)@!.*nose.*$
    v^((tongue)@!.)*nose((tongue)@!.)*$
    .*nose.*&^\%(\%(tongue)@!.)*$ 
    :v/tongue/s/nose/&/gic
    'a,'bs/extrascost//gc       : 技巧,将搜索范围限制在两个标记(marker)之间
  • 相关阅读:
    1.打开windows中功能的快捷方式
    16-SQLServer强制走索引
    15-资源等待类型sys.dm_os_wait_stats
    14-SQLServer索引碎片
    13-修复数据库,表,索引
    12-SSMS图形化工具中不允许保存修改的解决办法
    11-常用SQL总结
    10-SQLServer中统计信息的使用
    Java连接mysql数据库
    递归方式的对变量中的特殊字符进行转义/去除转义
  • 原文地址:https://www.cnblogs.com/l00l/p/3660620.html
Copyright © 2011-2022 走看看