Edited at

setコマンドでエスケープすべき文字

More than 5 years have passed since last update.

この記事はVim Advent Calendar 2012 : ATND 114日目の記事になります。

setコマンドでエスケープすべき文字がどれなのかわからなかったので調べてみました。


エスケープすべき文字



  1. スペース


    vim

    set commentstring=\ %s
    
    set commentstring?
    " set commentstring= %s




  2. ダブルクォート


    vim

    set commentstring=\"%s
    
    set commentstring?
    " set commentstring="%s




  3. バーティカルバー


    vim

    set commentstring=\|%s
    
    set commentstring?
    " set commentstring=|%s




  4. 改行

    エスケープしなければエラーになっちゃいますけど、エスケープしても結果は<00>になってしまいます。


    vim

    set commentstring=\<0a>%s
    
    set commentstring?
    " set commentstring=<00>%s




  5. 水平タブ


    vim

    set commentstring=\<09>%s
    
    set commentstring?
    " set commentstring=<09>%s



基本的、setコマンドでエスケープすべき文字はこの5つだけでした。


同期(0x16)が面白い!


  • 同期

同期(0x16)がすごく例外的で、同期(0x16)が1文字だけだとなかったことになっちゃうですね。

同期(0x16)は\ではエスケープできなくて、同期は同期でエスケープするんですね



上手く使えばなにか役立ちそうですね。(棒)


vim

set commentstring=<16>%s

set commentstring?
" set commentstring=%s

set commentstring=\<16>%s
set commentstring?
" set commentstring=%s

set commentstring=%<16>s
set commentstring?
" set commentstring=%s

set commentstring=%<16><16>s
set commentstring?
" set commentstring=%<16>s



終わり

以上、「setコマンドでエスケープすべき文字」でした。

ここ最近、折紙でVimGirlを折っていてとりあえず第1作が出来ました v( ・ω・)m。


https://twitter.com/rbtnn/status/316206645917126657