a毛片毛费观看-a毛片在线-a毛片在线观看-a毛片在线免费观看-国产成人综合洲欧美在线-国产成人综合高清在线观看

始創于2000年 股票代碼:831685
咨詢熱線:0371-60135900 注冊有禮 登錄
  • 掛牌上市企業
  • 60秒人工響應
  • 99.99%連通率
  • 7*24h人工
  • 故障100倍補償
您的位置: 網站首頁 > 幫助中心>文章內容

Vim進階技術:搜索和替換

發布時間:  2012/9/15 21:12:06

行內搜索

行內搜索,也就是在當前行內進行搜索和移動,通常都與編輯命令一起使用。

  • fx -- 移動到下一個字符x的位置,光標停留在x字符上面
  • tx -- 移動到下一個字符x的位置,光標停留在x前一個字符上
  • Fx -- 移動到前一個字符x的位置,光標停留在x字符上面
  • Tx -- 移動到前一個字符x的位置,光標停留在x后一個字符上
  • ; -- 重復前一個搜索,向著同一方向,即原來向前就向前,原來向后就向后
  • , -- 重復前一個搜索,向著反方向

行內搜索通常與編輯一起使用:

  • dfx/dtx -- 刪除到下一個字符x
  • yfx/ytx -- 復制到下一個字符x

全局搜索

搜索,分為二個部分:一個是搜索命令,另一個是模式匹配;搜索命令就是各個編輯器所支持的啟動搜索的方式,比如Windows的各種編輯器都是以對話框的形式。模式就是在對話框中輸入的要匹配的字串集。本身字串的匹配功能有限,所以就有了專門用于模式匹配的正則表達式,它描述了模式匹配的一些規則,使用這些規則可以讓匹配更加的強大和精準,多數編輯器都支持正則表達式,Vim也不例外,先講一下搜索命令,然后再講對正則表達式的支持。

基本搜索命令

  • /pattern -- 向前搜索pattern,光標停留在第一個匹配的第一個字符上面。向前的意思是向下,或者向著行數增加的方向。Vim會亮顯示所有的匹配,并將光標停留在當前位置的下一個匹配的首字符上
  • / -- 當不提供pattern時,會向前重復搜索上一個pattern,也就是向前重復搜索的意思,光標會跳到下一個匹配上面
  • ?pattern -- 與/pattern類似,只不過它是向后搜索,向著行數減少的方向。
  • ? -- 與/類似,是不過是向后重復搜索
  • n -- 向著同一方向重復搜索,原來向前就繼續向前,原來向后就繼續向后(當向前搜索時與/一樣,當向后搜索時與?一樣)
  • N -- 向著反方向重復搜索,原來向前就向后,原來向后就向前(向前時?一樣,向后時/一樣)
  • * -- 向前搜索光標所在的單詞,只匹配整個單詞,單詞的定義是一串連續的字母,數字,標點,空白都是單詞的分隔符。
  • # -- 向后搜索光標所在的單詞,只匹配整個單詞
  • /?+上下方向鍵 -- 像其他的命令提示符一樣,方向鍵可以方便的引用歷史搜索記錄如,搜索記錄為error, grape, that,那么按了/后,再按向上方向鍵:/that,再向上:/grape,向下:/that,再次按回車就可以搜索了。

正則表達式

如前提及,模式匹配在搜索當中有重要的作用。正則表達式(Regular Expression)是專門用于描述搜索中的(Pattern)模式的。使用正則表達式來構建pattern可以讓搜索更加強大和精準。有關正則表達式的詳細內容可以參閱《Mastering Regular Expression》這本書。正則表達式僅是一種規范,但是各種常用的工具和編程語言都對正則表達式有不同程度的支持。正則表達式有二類:一是正常的字符,僅匹配自身,如"that",只能匹配"that";另一類就是具有特殊意義的元字符。不像基本字符,元字符具有特殊的含義,如.(句點)可以匹配任意除換行符外的單個字符。正則表達式就是學習各種元字符的使用。

Vim對正則表達式有很好的支持,它的常用元字符有:

通用匹配:

  • . -- 匹配任何除換行符外的單個字符
  • \s -- 匹配一個空白符(space或tab)
  • \S -- 一個非空白符
  • ^ -- 僅匹配行首,也即必須以模式開頭
  • $ -- 僅匹配行尾,也即必須以模式結尾
  • \< -- 匹配詞首,單詞定義為一連串的字母,標點空白和數字均視為分隔符
  • \> -- 匹配詞尾。
  • \<...\> -- 匹配整個單詞(前面命令中的*和#就是用這個來只匹配單詞)。當然\<和\>不必一起使用,可以分開使用

限量符:

  • * -- 前一個字符出現0次或多次,如a*,可以匹配'', 'a', 'aa'或'aaa'等
  • \+ -- 前一個字符出現1次或多次
  • \= -- 前一個字符出現0次或1次
  • \{n,m} -- 前一個字符出現n到m,如a\{3,5},則可以匹配'aaa', 'aaaa'或'aaaaa'
  • \{n} -- 前一個字符出現n次
  • \{n,} -- 前一個字符出現n次到最多次數(32000)
  • \{} -- 0次或多次,與*一致

操作符:

  • \| -- 或,如ab\|ba,則匹配'ab'或'ba'

其他:

  • [...] -- 字符集,表達一組字符的集合,匹配其中任何一個字符

    如[abc],則匹配a或b或c。連續的字符可以用-代替如,[a-c]則匹配a或b或c,[0-9]匹配0到9中任何一個數字,[a-zA-Z]匹配任何一個字母。通常與限量符一起使用,如:/[a-z]\{3,6},長度3到6的小寫字串,/[0-9]\{2,4}長度2到4的數字。

  • \(...\) -- 組合,把內部看成一個整體并保存起來以便后續引用。本身作用不大,要與其他元字符一起使用才能發揮其功效
  • \n -- 其中n=1~9,對組合的引用,也即引用\(...\)中所匹配的內容

    如,/\(that\)\1,則匹配thatthat;/\([a-z]\).\1則匹配,aba, aoa, bcb等。

全局替換

替換也是編輯器中一個必不可少的功能,Vim對于替換也提供了強大的支持。

命令格式

:[range]s/pattern/replacement/[options]

把[range]所指的范圍內的pattern替換為replacement

詳解

  • range -- 可選。如果缺省就指當前行,也就是后面的命令僅對當前行有效

    指定方式:n,m -- 從第n行到第m行,包括第n行和第m行。其中.代表當前行; $代表最后一行; %表示全局,等同于1,$

  • options -- 可選,缺省時只替換一行中的第一個匹配

    常用:g -- 把一行中的所有匹配都替換;c -- 替換之前要求確認

示例:

  • :s/old/new -- 當前行中的第一個old替換為new
  • :s/old/new/g -- 當前行中的所有old替換為new
  • :s/old/new/gc -- 當前行中的所有old替換為new,每一個替換之前要求確認
  • :5,20s/old/new/gc -- 5到20行中的所有old替換為new,每一個替換之前要求確認
  • :.,20s/old/new/g -- 當前行到20行中的所有old替換為new
  • :.,$s/old/new/gc -- 當前行到最后一行中的所有old替換為new
  • :%s/old/new/gc -- 全局替換,文檔中所有的old替換為new

根據條件替換

前面的替換方式是以行的方式指定具體的范圍,也可以以另外一種方式指定范圍:

:g/pattern/s/old/new/gc

全局查找pattern,對于匹配pattern的行進行后面的替換,這里的pattern和old都可以使用正則表達式,但是replacement是不能使用正則表達式的,對于replacement,它有自己專屬的規則。

replacement中的規則

  • >\n n = 1~9 -- 引用pattern中的組合\(...\)。

    最常用的方式就是調換二個詞的順序或者用于重復輸入,如:

    • :s/\(that\), \(what\)/\2, \1 -- that, that被換成what, that

     

  • & -- 替換為模式的匹配,也即如果pattern匹配that,那么&就是that

    咋一聽貌似這個沒啥用處,如:s/that/&/gc,這與未替換之前是一樣的。它也常用于重復輸入,如:

    • :s/that/&,&,what/gc -- that替換成that, that, what
    • :s/.*/{&}/g -- 把當前行用{}括起來

     

  • ~ -- 替換為上一次替換命令所用的replacement,而pattern不必相同,也多用于重復編輯

    如:

    • :s/their/our/g -- their --> our
    • :s/his/~/g -- his --> our
    • :s/my/~/g -- my --> our

     

  • \u或\l -- 把接下來下一個字母轉成大寫或小寫

    如::s/that/\uthat/g -- that --> That; :s/That\lThat/g -- That --> that。這多少顯得有些弱智,直接拼大寫或小寫更方便。

    這二個多用于變量,如:

    • :s/\(what\)/\u\1/g -- what --> What;
    • :s/\(.*\)/\u&/g 行首大寫;
    • :s/\([a-zA-Z]\+\)/\u&/g 每個單詞都Captalization

     

  • \U或\L和\e或\E -- 把replacement中的從\U或\L到\e或\E的所有字母都轉成大寫或小寫,如::s/restore/re\Usto\ere/ -- restore --> reSTOre,這也很弱智。

    還是與變量才更強大:

    • :s/restore/\U&/g -- restore --> RESTORE;
    • :s/ResTore/\L&/g -- ResTore --> restore

     

替換中的技巧

  • :s或:&或:~ -- 重復上次替換命令。可以加上選項g,:sg或:&g或:~g,則會對當前行所有匹配進行替換

    也可以加上范圍% :%sg或:%&g或:%~g,則會對全文所有匹配都替換。

  • :s/pattern/replacement與:s/pattern/replacement一樣
  • & -- 直接使用命令&與:&和:s和:~是一樣的,即重復上一次替換
  • :和方向鍵,方向鍵也可以引用歷史命令

Vim中的搜索和替換博大精深,要想掌握好唯有不斷的練習與實踐,這些講的僅是一個開端。

億恩-天使(QQ:530997) 電話 037160135991 服務器租用,托管歡迎咨詢。


本文出自:億恩科技【www.ibaoshan.net】

服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經營性ICP/ISP證:贛B2-20080012
  • 服務器/云主機 24小時售后服務電話:0371-60135900
  • 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
  • 專注服務器托管17年
    掃掃關注-微信公眾號
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
      0
     
     
     
     

    0371-60135900
    7*24小時客服服務熱線

     
     
    麻豆国产96在线日韩麻豆| 日本XXXXX九色视频在线观看| 亚洲国产精品无码AV| 国内精品视频一区二区三区| 亚洲AV午夜成人片精品| 久久久久99精品成人片直播| ZPS无套内射视频免费播放| 亚洲 欧美 动漫 少妇 自拍| 精品久久久久香蕉网| 52色擼99热99RE超碰| 玩弄少妇秘书人妻系列| 久久亚洲精品无码AV| 18一20亚洲GAY无套| 玩弄chinese丰满人妻| 炕上光着腚压在女人身上| 9L国产精品久久久久麻豆| 午夜男女爽爽影院_性夜影院| 久久99精品久久久久久青青| 2021国内精品久久久久精品K| 人妻av一区二区三区| 国产一区二区三区久久精品| 亚洲无线码高清在线观看| 日本精品无码一区二区三区久久久| 国产精品久久久久9999高清| 亚洲色成人www在线观看| 日本三线和韩国三线的市场定位 | 日本老肥婆BBBWBBBWZR| 国产精品久久久久国产A级| 亚洲AV无码一区二区三区dv| 欧洲精品VA无码一区二区三区| 国产波霸爆乳一区二区| 野花社区高清在线观看视频| 欧洲无线一线二线三W955 | らだ天堂√在线WWW| 亚洲 日韩 欧美 成人 在线| 欧美极品小妇另类xXXX性| 激情内射亚洲一区二区三区| 成人网站V片免费观看| 一区二区三区精品视频日本| 无人区卡一卡二卡三乱码入口 | 免费观看亚洲人成网站| 国产熟妇与子伦HD| BTА√天堂中文在线官网| 亚洲精品国自产拍在线观看| 熟女少妇丰满一区二区| 欧美激情精品久久| 国产黄A三级三级三级| 中文人妻无码一区二区三区| 性欧美丰满熟妇XXXX性| 乱中年女人伦AV三区| 刺激Chinese乱叫国产高潮| 亚洲AV永久精品无码| 女人带毛的真人图片| 黑人巨大BBWBBW| AV一本大道香蕉大在线| 亚洲欧美日韩精品成人| 玩弄美艳馊子高潮秀色可贪| 人妻精品丝袜一区二区无码AV| 国内老熟妇对白HDXXXX| 98色精品视频在线| 亚洲AV综合AV一区二区综合| 少妇人妻无码专用视频| 内射女校花一区二区三区| 精品久久久无码中字| 国产成人综合一区人人| 啊灬啊别停灬用力啊老师| 一区二区三区国产好的精华液| 日韩人妻无码一区二区三区综合部 | AV天堂亚洲国产AV| 亚洲欧美中文日韩V在线观看 | 色婷婷AV一区二区三区在线观看| 久久精品国产亚洲AV麻| 大学生高潮无套内谢视频| 中文字幕日本六区小电影| 亚洲精品第一国产综合精品99| 人妻精品久久一区二区av| 极品少妇被啪到呻吟喷水| 跪趴式啪啪GIF动态图27报| JAVAPARSER偷乱中国| 玉蒲团2之玉女心经| 亚洲成AV人片久久| 日本动漫瀑乳H动漫啪啪免费| 精品无码久久久久久尤物| 国产AV无码专区亚洲AV桃花庵| 在线观看无码AV网址| 亚洲成在人线在线播放无码| 图片区小说区AV区| 日本肉体裸交XXXXBBBB| 久久久久久精品免费免费69| 国产成人牲交在线观看视频| 最新 国产 精品 精品 视频| 亚洲女同成AV人片在线观看| 午夜AV内射一区二区三区红桃视 | 人摸人人人澡人人超碰| 邻居少妇张开腿让我爽了在线观看| 国产精品久久毛片| 成 人 黄 色 网站 小说 免| 42岁女子经历20天断崖式衰老 | 国产欧美日韩一区二区三区| 丰满熟妇大号BBWBBWBBW| JAPANESEⅩⅩⅩHD护士| 中文日产无乱码AV在线观| 亚洲无线一二三四区手机| 我和子发生了性关系视频| 欧美精品18VIDEOS性欧美| 久久综合九色欧美综合狠狠 | 被黑人上司侵犯狂草内射| 27报女上男下动态图GIF图| 一本大道香蕉大L在线吗视频| 无遮挡又黄又刺激的视频 | 粉嫩AV一二三区免费| YELLOW在线资源免费观看| 97人妻天天爽夜夜爽二区| 淫淫网站日本网站黑人大吊| 亚洲A∨国产AV综合AV麻豆丫| 日本熟妇毛茸茸XXXX| 欧美丰满熟妇性XXXX| 免费A级毛片无码韩国| 极品AV麻豆国产在线观看| 高潮和狂野射精合集| 成年免费A级毛片免费看丶| 中文无码热在线视频| 亚洲最刺激成人无码| 亚洲AV成人永久网站www在线| 日欧 片内射AV在线影院| 人妻体内射精一区二区| 乱辈通奷ⅩXXXXHD| 久久久国产成人精品蜜臀AⅤ| 国产强奷糟蹋漂亮邻居在线观看| 播放片高清MV在线观看| DIPTYQUE含羞草香薰| 97精品伊人久久大香线蕉| 亚洲欧美妆和亚洲妆的区别| 无码免费大香伊蕉在人线国产| 日本A级作爱免费观看在线| 欧美性爱群交视频| 欧美成人精品一区二区| 男人J桶进女人P无遮挡的图片 | 99精品国产在热久久无毒不卡| 亚洲色偷偷综合亚洲AVYP| 无码国产精品一区二区免费久久 | 亚洲成A人片在线观看中文| 体型差糙汉乖乖女| 少妇BBW搡BBBB搡BBBB| 日韩人妻在线一区二区三区 | 亚洲精品又大又粗| 五十路亲子中出在线观看| 日韩av一区二区三区| 人人妻人人爽人人人少妇| 亲子伦AV一区的三区| 美女裸身裸乳免费视频的APP| 精品成人一区二区三区四区| 国内精品久久久久久久久电影网 | 大陆极品少妇内射AAAAA| 97久久天天综合色天天综合色H| 亚洲中文字幕乱码电影| 亚洲日韩精品无码AV一区二区三| 亚洲AⅤ中文无码字幕色本草| 丝瓜秋葵草莓香蕉榴莲绿| 清纯JK校花被啪啪AV免费| 蜜芽VA亚洲VA欧美VA天堂| 巨胸爆乳美女露双奶头挤奶| 狠狠色噜噜狠狠狠8888米奇| 国产精华液一区二区区别大吗| 成人女人爽到高潮的Av在线| 成人精品无码一区二区三区| 成人奭片免费观看| 顶级大但人文艺术视频 音乐| ZOOM与人性ZOOM2023| 37大但文体艺术A级都市天气| 一面亲上边一面膜下边文字的含义 | 亚洲精品又大又粗| 亚洲精品午睡沙发系列| 亚洲欧洲美洲无码精品VA| 亚洲熟女综合色一区二区三区| 亚洲AV永久无无码精品一区二区| 无码AV无码一区二区| 无码中文AV波多野结衣| 性一交一乱一性一在线观看| 挽起裙子迈开腿坐上MBA| 无码成人亚洲AV污污污在线看 | 果冻传媒一二三工厂免费观看| 国产精品普通话国语对白露脸| 恶毒美人长批后被宿敌爆炒了| WWW射我里面在线观看| 波多野美乳人妻HD电影欧美| 吃警察爸爸的擎天柱视频| 国产AV人人夜夜澡人人爽麻豆| 大地琪琪网在线观看| 公交车上售票员用B验票小镇| 成人艳情一二三区| 丰满人爽人妻AXXXXHD| 国产成人AV区一区二区三| 国产美女精品视频线免费播放软件 | 中文乱码字幕视频观看网站免费| 野花影视大全在线观看免费 | 嫩模超大胆大尺度人体写真| 欧美激情一区二区三区在线| 人妻一区二区视频| 色窝窝人妻9色聚色窝|