vim置換コマンド

7187 ワード

  (substitute)

    :[range]s/pattern/string/[c,e,g,i]5.1 

 

range 	     ,1,7          ,1,$           ,       ,    %   。    ? %         ,#          。
pattern 	          ,    regexp    。
string 	  pattern   string    。
c 	confirm,        。
e 	    error。
g 	globe,   ,    。
i 	ignore      。

 

g        ,                 。      ,  cgi,       ,    ,          。 

vi/vim       :s         。               ,             (vi      ,        ),      ,      。

:s/vivian/sky/          vivian   sky

:s/vivian/sky/g         vivian   sky

:n,$s/vivian/sky/     n                  vivian   sky

:n,$s/vivian/sky/g     n                vivian   sky

n    ,  n   .,             

:%s/vivian/sky/(    :g/vivian/s//sky/)           vivian   sky

:%s/vivian/sky/g(    :g/vivian/s//sky/g)          vivian   sky

     #      ,        /        

:s#vivian/#sky/#          vivian/   sky/

:%s+/oradata/apras/+/user01/apras1+ (  +      / ): /oradata/apras/   /user01/apras1/

1.:s/vivian/sky/          vivian   sky

:s/vivian/sky/g         vivian   sky

2. :n,$s/vivian/sky/     n                  vivian   sky

:n,$s/vivian/sky/g     n                vivian   sky

(n    ,  n   .,             )

3. :%s/vivian/sky/(    :g/vivian/s//sky/)           vivian   sky

:%s/vivian/sky/g(    :g/vivian/s//sky/g)          vivian   sky

4.      #      ,        /        

:s#vivian/#sky/#          vivian/   sky/

5.       ^M

    :    ,window      (0A0D)   ,Linux    (0A)   。  , window      Unix   ,    ^M.     unix    windows      (0D) shell c  。

·     :cat filename1 | tr -d “^V^M” > newfile;

·     :sed -e “s/^V^M//” filename > outputfilename。       1、2     ,^V ^M   Ctrl+V Ctrl+M。          ,     。

·  vi   :    vi    ,   ESC ,      :%s/^V^M//。

· :%s/^M$//g

        ,         :

· tr -d “/r” < src >dest

· tr -d “/015″ dest

· strings A>B

6.   

   :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       ,                       。

    C      ,   ,            :
#define BIT_MASK_1      (1 << 0)
#define BIT_MASK_2      (1 << 1)
#define BIT_MASK_3      (1 << 2)
#define BIT_MASK_4      (1 << 3)
#define BIT_MASK_5      (1 << 4)
#define BIT_MASK_6      (1 << 5)
#define BIT_MASK_7      (1 << 6)
#define BIT_MASK_8      (1 << 7)
#define BIT_MASK_9      (1 << 8)
#define BIT_MASK_10      (1 << 9)
#define BIT_MASK_11      (1 << 10)
#define BIT_MASK_12      (1 << 11)
#define BIT_MASK_13      (1 << 12)
#define BIT_MASK_14      (1 << 13)
#define BIT_MASK_15      (1 << 14)
#define BIT_MASK_16      (1 << 15)
#define BIT_MASK_17      (1 << 16)
#define BIT_MASK_18      (1 << 17)
#define BIT_MASK_19      (1 << 18)
#define BIT_MASK_20      (1 << 19)
#define BIT_MASK_21      (1 << 20)
#define BIT_MASK_22      (1 << 21)
#define BIT_MASK_23      (1 << 22)
#define BIT_MASK_24      (1 << 23)
#define BIT_MASK_25      (1 << 24)
#define BIT_MASK_26      (1 << 25)
#define BIT_MASK_27      (1 << 26)
#define BIT_MASK_28      (1 << 27)
#define BIT_MASK_29      (1 << 28)
#define BIT_MASK_30      (1 << 29)
#define BIT_MASK_31      (1 << 30)
#define BIT_MASK_32      (1 << 31)



            ,         ,  :
#define BIT_MASK_1      (1 << 0)


  ,    Normal  ,       “Y31p",    ,    31 。  ,      32      。
    "V31j"     32 ,          :
:'<,'>s/BIT_MASK_/zs/d*/ze//=line(".") - line("'<") + 1
:'<,'>s//zs/d*/ze)$//=line(".")-line("'<")


  ,             。
                  ,              。                            ,                。

  ,       VIM    ,             。

        ,             :
:'<,'>s/BIT_MASK_/zs/d*/ze//=line(".") - line("'<") + 1

                 ,   “BIT_MASK_”  ,             ,           ,                         。
               :
'<,'>                 (:help '<,:help '> )
s                        (:help :s )
/zs                   (:help //zs )
/d*                    (:help //d )
/ze                   (:help //ze )
/=                      (:help :s/= )
line(".")               (:help line() )
line("'<")                 (:help line() )


“'<” “'>”      “v”,“V”      visual   ,VIM     ,      visual        。
“BIT_MASK_/zs/d*/ze”        ,     “BIT_MASK_”  ,             。  “/zs”、“/ze”              ,         “BIT_MASK_0”    ,                 。
                        ,                       。 “:s”          “/=”   ,                  。          “line(".") - line("'<") + 1”,  “line()”        ,           ,       (mark)     。“line(“.”)”              ,“line(“’<”)”     “'<”        。         1         。

  ,    VIM     ,         。           ,       。

      :

               ,    0           ,  :
     UniqueID2       = lview.focusedItem.subItems.opIndex(0).text;
     Parent          = lview.focusedItem.subItems.opIndex(1).text;
     Children        = lview.focusedItem.subItems.opIndex(2).text;
     ……

      ,           ,         :
:let n=0 | g/opIndex(/zs/d/+/s///=n/|let n+=1

               ,     VIM         ,                   ,       ”line()”            ,             。
                  :
let                (:help let )
|                      (:help :bar )
g                           ex   (:help :g )
/zs                   (:help //zs )
/d/+           1       (:help //d )
s                      (:help :s )
/=                      (:help :s/= )

  ,          :
1.       n   0;
2.        ” opIndex(/zs/d/+”,    n            ;
3.       n 1;

      ”|”,          。
  , substitute   ,           ,                ,       ”global”     ”opIndex(/zs/d/+”。

          ,    VIM        、     、 ,             :
http://vim.sourceforge.net/scripts/script.php?script_id=670