zoukankan      html  css  js  c++  java
  • 玩转VIM编辑器强力搜索

    玩转VIM编辑器-强力搜索

    搜索导航

    导航键

    描述

    /

    向前搜索,前向

    ?

    向后搜索,反向

     

     

    n

    跳转到下一个搜索词所在位置

    N

    跳转到前一个搜索词所在位置

    //??

    重复前面的搜索或反向搜索

    跳转到下一个/上一个当前光标所在的字符

          使用该技巧可以不用使用/pattern可以直接跳转到光标所在的字符。

    导航键

    描述

    *

    跳转到光标所在字符的下一个匹配处

    #

    跳转到光标所在字符的上一个匹配处

    上面的搜索方式是精确匹配的,比如光标在字符hell上,就不会搜索到hello上,但是我们可以使用下面描述的可以使得光标在hell上时,也能搜索到hello或者shell等包含hell的单次。

    导航键

    描述

    g*

    跳转到下一个局部匹配的单词处

    g#

    跳转到上一个局部匹配的单词处

    PS:可以使用[I来列出所有符号光标处单次的行。

    在一行中搜索字符

    导航键

    描述

    fX

    在一行中向前搜索字符X并跳转

    FX

    在一行中向后搜索字符X并跳转

    tX

    在一行中向前搜索字符X并跳转到X前面一个字符

    TX

    *****没有测试出来

    ;

    向前重复上述操作

    ,

    向后重复上述操作

    12个实用的强力搜索和替换实例

    Vim编辑器中文本替换命令的语法为:

    :[range]s[ubstitute]/{pattern}/{string}/[flags] [count]

    其中有3个可能的flags,分别为:

        [c]每次替换都确定一下

        [g]替换当前行中所有符合的

        [i] 忽略模式匹配的大小写

    1替换整个文件中所有符合模式的文本

    :%s/old-text/new-text/g

    其中%s指定了所有的行,而其中%的含义为替换整个文件;

    其中g的含义为指定行中所有的匹配项,如果没有g将只是替换行中发现的第一个。

    2在一行中替换文本

    :s/old-text/new-text/gi

    上述命令中没有指定range范围,将默认为当前行。

    3在指定行中替换文本

    :1,10s/I/We/g

    上述命令将把从第1行到第10行的I替换为We

    4在指定块中替换文本

    在使用CTRL+V时,可以替换选定的文本,在输入:时,就会自动变为:’<,’>,这是就可以输入命令了:

    :'<,'>s/helo/hello/g

    该命令将把指定块中的helo替换为hello

    5在接下来的N行中替换文本

    :s/helo/hello/g N

    该命令将替换从当前行开始的共N行。

    6只替换整个单词而不是部分匹配

    标准替换:

    原始文本: This is his idea

    :s/his/her/g

    替换文本:Ther is her idea

     

    完整单词替换:

    原始文本: This is his idea

    :s/\<his\>/her/

    替换文本: This is her idea

     

          所以,如果需要完整替换,需要在关键词前后添加<>,对于一些新手而言,可能会希望使用空格来代替,殊不知,这样可能会导致开始和结束的字符不符合条件。

    7使用正则表达式来替换多个文本

    原始文本: Linux is good. Life is nice.

    :%s/\(good\|nice\)/awesome/g

    替换文本: Linux is awesome. Life is awesome.

    8交互式地查找替换

    可以在命令行中使用c-flag来交互式地查找替换,比如

    :%s/awesome/wonderful/gc

    将会提示如下信息:

    replace with wonderful (y/n/a/q/l/^E/^Y)?

        y:替换当前高亮显示的单词,并高亮显示下一个匹配的词;

        n:不替换当前高亮显示的单词,然后高亮显示下一个匹配的词;

        a:将不再出现提示而替换掉所有剩下匹配的词;

        l:替换当前高亮显示的词,并且中断操作。

    9将行号写到文件中

    :%s/^/\=line(".") . ". "/g

    该命令将会把显示的行号写到文件中去。这个与:set number不同,set number只是显示行数而不会对文件内容有所影响。

    10使用等价值来替换一个特殊字符

    原始文本: Current file path is ~/test/

    :%s!\~!\= expand($HOME)!g

    替换文本: Current file path is /home/leo/test/

    11在插入一个新的条目时更改所有其他的条目

    比如我们有下面的图书列表:

    Article 1: Vi and Vim Editor: 3 Steps To Enable Thesaurus Option

    Article 2: Vim Autocommand: 3 Steps to Add Custom Header To Your File

    Article 3: 5 Awesome Examples For Automatic Word Completion Using CTRL-X

    Article 4: Vi and Vim Macro Tutorial: How To Record and Play

    Article 5: Tutorial: Make Vim as Your C/C++ IDE Using c.vim Plugin

    Article 6: How To Add Bookmarks Inside Vim Editor

    Article 7: Make Vim as Your Bash-IDE Using bash-support Plugin

    Article 8: 3 Powerful Musketeers Of Vim Editor ? Macro, Mark and Map

    Article 9: 8 Essential Vim Editor Navigation Fundamentals

    Article 10: Vim Editor: How to Correct Spelling Mistakes Automatically

    Article 11: Transfer the Power of Vim Editor to Thunderbird for Email

    Article 12: Convert Vim Editor to Beautiful Source Code Browser

    忘记了3rd Article “Make Vim as Your Perl IDE Using perl-support.vim Plugin” ,现在我们要做的就是插入3rd Article “Make Vim as Your Perl IDE Using perl-support.vim Plugin”并且需要把后面的数目需要逐次增加1

          那么我们可以使用命令:

    :4,$s/\d\+/\=submatch(0) + 1/

          其中:

    范围:4,$为从第4行到最后;

    \d\表示一个数字的字符串;

    \=submatch(0) + 1 取到数字并且加1

    由于这里没有flag,所以默认只会替换第一个吻合的单词。

    更换后变为:

    Article 1: Vi and Vim Editor: 3 Steps To Enable Thesaurus Option

    Article 2: Vim Autocommand: 3 Steps to Add Custom Header To Your File

    Article 3: Make Vim as Your Perl IDE Using perl-support.vim Plugin

    Article 4: 5 Awesome Examples For Automatic Word Completion Using CTRL-X

    Article 5: Vi and Vim Macro Tutorial: How To Record and Play

    Article 6: Tutorial: Make Vim as Your C/C++ IDE Using c.vim Plugin

    Article 7: How To Add Bookmarks Inside Vim Editor

    Article 8: Make Vim as Your Bash-IDE Using bash-support Plugin

    Article 9: 3 Powerful Musketeers Of Vim Editor ? Macro, Mark and Map

    Article 10: 8 Essential Vim Editor Navigation Fundamentals

    Article 11: Vim Editor: How to Correct Spelling Mistakes Automatically

    Article 12: Transfer the Power of Vim Editor to Thunderbird for Email

    Article 13: Convert Vim Editor to Beautiful Source Code Browser

    12将每个句子的首字母大写

    :%s/\.\s*\w/\=toupper(submatch(0))/g

    该命令将把每个句子的首字母大写。

    \.\s*\w  --搜索模式,在句点后跟零个或多个空格,然后一个单词;

    toupper – 将给定的文本改为大写字母;

    submatch(0) –返回匹配的模式

    使用vimgrep在多个文件中搜索

    :vimgrep leo  *.txt  --可以使用该命令在当前所有txt文件中搜索leo,如果有多个匹配项,可以使用:cn来跳转到下一个。

    命令

    描述

    :vimgrep pattern *

    在多个文件中搜索pattern

    :cn

    跳转到下一个vimgrep搜索到的项

    :cN

    跳转到上一个vimgrep搜索到的项

    :clist

    列出所有vimgrep搜索到的项

    :cc number

    直接跳转到number对应的项

    高亮显示搜索结果

    :set hlsearch  该选项将高亮显示搜索的结果

    :set nohlsearch  该选项将不高亮显示搜索的结果

    :nohlsearch  清除高亮显示的结果

    Vim增量搜索

    :set incsearch该增量搜索模式将在你输入字符的时候就立即定位符合你输入的pattern,同样禁用该选项为:set noincsearch

    给力的:match

    :match ErrorMsg /Error/

    将文件中所有的ErrorErrorMsg配色方案来显示;

    比如::match ErrorMsg /printf/将显示如下:

    clip_image002

    其中,配色方案主要有:

        ErrorMsg

        WarningMsg

        ModeMsg

        MoreMsg

    关于配色方案,我们也可以自己设定。

  • 相关阅读:
    修改sharepoint列表样式
    Zend Server 安装与配置图文教程
    安装zendstudio和破解方法及配置svn
    C#索引器
    曝光尚德机构亲身经历请大家不要上当
    不支持PowerShell 2.0版本(don't support PowerShell version 2.0. )
    SharePoint Project Server List 列表CURD操作使用rest api接口
    解决启动SQL Server Management Studio 17时报Cannot find one of more components...的问题
    Project Server2016升级安装问题项目中心无法显示
    Project Server 2016 RestAPI调用测试
  • 原文地址:https://www.cnblogs.com/shaoguangleo/p/2806050.html
Copyright © 2011-2022 走看看