隨筆 - 175  文章 - 202  trackbacks - 0
          <2011年6月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          第一個Blog,記錄哈哈的生活

          常用鏈接

          留言簿(16)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          Java links

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          轉自:http://dolphin-ygj.iteye.com/blog/366314
          vi替換命令用法詳解
          : ranges /pat1/pat2/g
          其中
          : 這是Vi的命令執行界面。
          range 是命令執行范圍的指定: 百分號(%)表示所有行
          點(.)表示當前行
          美元($)表示最末行

          例如:
          10,20表示第10到20行,
          .,$表示當前行到最后一行,.
          +2,$-5表示當前行后兩行直到全文的倒數第五行

          s 表示其后是一個替換命令。
          pat1 這是要查找的一個正則表達式
          pat2 這是希望把匹配串變成的模式的正則表達式

          g 可選標志,帶這個標志表示替換將針對行中每個匹配的串進行,否則則只替換行中第一個匹配串。


          :/string #向下查找
          :?stirng   # 向上查找


          1

          vi編輯命令責任編輯:黑色聯想   更新日期:2006-9-7重復執行命令
          數字N+命令     重復執行命令N次,如刪除15行,就在命令狀態下輸入15dd
          .              重復執行上一條命令
          vi命令使用的一些選項及含義
          -c sub-command 在對指定的文件編輯前,先執行指定的命令 sub-command .
          -r filename 恢復指定的文件filename .
          -R 將指定的文件以只讀的方式放入編輯器中,這樣不會保存對文件的任何修 改。
          -y number 將編輯窗口的大小設為number行。
          光標移動
          命令模式下,在同一行上移動的子命令:
          h   將光標左移一格
          l   將光標右移一格
          j   將光標下移一格
          k   將光標上移一格
          w   將光標移到下一個小字的前面
          W  將光標移到下一個大字的前面
          b   將光標移到前一個小字的前面
          B   將光標移到前一個大字的前面
          e   將光標移到下一個小字的后面
          E   將光標移到前一個大字的后面
          fc  把光標移到同一行的下一個c字符處
          Fc  把光標移到同一行的前一個c字符處
          tc  把光標移到同一行的下一個字符c的前一格
          Tc  把光標移到同一行的前一個字符c的后一格
          number|把光標移到遞number列上
          命令模式下在行間移動的子命令:     
          +或Enter   把光標移至下一行第一個非空白字符
          -   把光標移至上一行第一個非空白字符 
          0   把光標移到當前行的第一個字符處
          $   把光標移到當前行的最后一個字符處
          H   把光標移到屏幕最頂端一行
          L   把光標移到屏幕最底端一行
          M  把光標移到屏幕中間
          :number 光標移動到第number行
          :$  光標移動到最后以行
          屏幕翻滾類命令
          Ctrl+u   向文件首翻半屏
          Ctrl+d   向文件尾翻半屏
          Ctrl+f   向文件尾翻一屏
          Ctrl+b  向文件首翻一屏
          nz     將第n行滾至屏幕頂部,不指定n時將當前行滾至屏幕頂部
          插入文本
          I   在光標前
          I   在當前行首
          a   光標后
          A   在當前行尾
          o   在當前行之下新開一行
          O  在當前行之上新開一行
          r   替換當前字符
          R   替換當前字符及其后的字符,直至按ESC鍵
          s   從當前光標位置處開始,以輸入的文本替代指定數目的字符
          S   刪除指定數目的行,并以所輸入文本代替之
          ncw或nCW  修改n個單詞
          nCC修改指定數目的行
          刪除
          x       刪除光標所指的一個字母
          X      刪除光標左邊的一個字母
          dd     刪除光標所在的一行文字,同時本行文字會放到緩存中
          d0     刪至行首
          d$     刪至行尾
          D      刪除本行光標右邊的所有文字,包括光標位置的字母
          d$     刪除本行光標右邊的所有文字,包括光標位置的字母
          dw     刪除光標右邊的一個單詞
          ndw    刪除n個單詞
          d1G       刪除光標所在行以上的所有行
          dG     刪除光標所在行及光標以下所有行
          復制
          yy          復制本行文字到緩存中
          number yy   復制number行到緩存中
          粘貼
          p      把緩存中的行粘貼到光標所在的下一行,
          P      把緩存中的行粘貼到光標所在的上一行
          替換
          :s/pattern1/pattern2/g    把光標當前行的pattern1替換為pattern2
          :%s/pattern1/pattern2/g   把所有行的pattern1替換為pattern2
          :g/parttern1/s//parttern2  把所有行的pattern1替換為pattern2
          :num1,num2 s/pattern1/pattern2/g     把num1到num2的partten1替換為partten2
          被替換的文字用^表示行首,$表示行尾,如:%s/^/111/g就表示在每一行的行首插入111
          文件
          :r filename   把文件filename的內容粘貼在光標以下行
          :w         保存當前編輯的文件名
          :w filename  當filename不存在時,把修改后的文件存為文件filename ,當文件filename
          存在時,報錯。
          !w filename  如果文件filename存在時,把修改后的文件保存為文件filename
          :q         退出vi ,若文件被修改,系統不會讓用戶使用q命令退出
          q!         不保存退出
          x          保存退出
          wq         保存退出
          在多個文件之間切換
          :n開始編輯vi激活的文件列表中的下一個文件
          :n filenames 指定將被編輯的新的文件列表
          在當前文件和另外一個文件間切換:
          :e filename  使用filename激活vi(在vi中裝入另一個文件filename)
          e!         重新裝入當前文件,若當前文件有改動,則丟棄以前的改動
          :e+filename  使用filename激活vi ,并從文件尾部開始編輯
          :e+number filename  使用filename激活vi ,并在第number行開始編輯
          :e#        開始編輯另外一個文件
          查找
          /pattern     向后尋找指定的pattern ,若遇到文件尾,則從頭再開始。
          ?pattern   向前尋找指定的pattern ,若遇到文件頭,則從尾再開始。
          n          在上次指定的方向上,再次執行上次定義的查找。
          N         在上次指定的方向的相反方向上,再次執行上次定義的查找。
          /pattern/+number    將光標停在包含pattern的行后面第number行上。
          /pattern/-number     將光標停在包含pattern的行前面第number行上。
          %                移到匹配的"()"或"{}"上。
          選項設置
          all         列出所有選項設置情況
          term        設置終端類型
          ignorance   在搜索中忽略大小寫
          list         顯示制表位(Ctrl+I)和行尾標志($)
          number    顯示行號
          report       顯示由面向行的命令修改過的數目
          terse       顯示簡短的警告信息
          warn        在轉到別的文件時若沒保存當前文件則顯示NO write信息
          nomagic     允許在搜索模式中,使用前面不帶“\”的特殊字符
          nowrapscan 禁止vi在搜索到達文件兩端時,又從另一端開始
          mesg       允許vi顯示其他用戶用write寫到自己終端上的信息
          、在vi中使用的查找替換方法
          利用 :s 命令可以實現字符串的替換。具體的用法包括:
          :s/str1/str2/ 用字符串 str2 替換行中首次出現的字符串str1
          :s/str1/str2/g 用字符串 str2 替換行中所有出現的字符串str1
          :.,$ s/str1/str2/g 用字符串 str2 替換正文當前行到末尾所有出現的字符串str1
          :1,$ s/str1/str2/g 用字符串 str2 替換正文中所有出現的字符串str1
          :g/str1/s//str2/g 功能同上從上述替換命令可以看到:g 放在命令末尾,表示對搜索字符串的每次出現進行替換;不加 g,表示只對搜索字符串的首次出現進行替換;g 放在命令開頭,表示對正文中所有包含搜索字符串的行進行替換操作。

          2、在shell中使用find結合grep進行文件的替換
          # find ./ -exec grep str1 ‘{}’ \; -exec sed -i.bak s/str1/str2/g ‘{}’ \;
          上面命令可以在當前目錄下(包括子目錄)查找包含str1的文件,自動替換成str2,并且生成源文件的bak文件。

           
          posted on 2011-06-17 15:39 哈哈的日子 閱讀(237) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 新野县| 韩城市| 华宁县| 抚宁县| 龙井市| 山西省| 庄河市| 万盛区| 林口县| 马关县| 晋中市| 莆田市| 夏邑县| 常宁市| 平顶山市| 永昌县| 广南县| 威远县| 上饶县| 扎赉特旗| 武安市| 萨嘎县| 福安市| 岢岚县| 琼海市| 建宁县| 湾仔区| 白银市| 新干县| 大埔区| 阿城市| 枣阳市| 五家渠市| 本溪| 固阳县| 新建县| 信阳市| 贺州市| 江口县| 尼木县| 遂溪县|