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)之间
  • 相关阅读:
    Java实现 LeetCode 735 行星碰撞(栈)
    Java实现 LeetCode 735 行星碰撞(栈)
    Java实现 LeetCode 887 鸡蛋掉落(动态规划,谷歌面试题,蓝桥杯真题)
    Java实现 LeetCode 887 鸡蛋掉落(动态规划,谷歌面试题,蓝桥杯真题)
    Java实现 LeetCode 887 鸡蛋掉落(动态规划,谷歌面试题,蓝桥杯真题)
    Java实现 蓝桥杯算法提高 求最大值
    Java实现 蓝桥杯算法提高 求最大值
    Java实现 蓝桥杯算法提高 求最大值
    Python eval() 函数
    Python repr() 函数
  • 原文地址:https://www.cnblogs.com/l00l/p/3660620.html
Copyright © 2011-2022 走看看