続・vimの挿入モードで一行消し
考えてみた。
まずは下調べ
- 通勤電車でVim完全バイブルの27章「式と関数」を読んだ
- :h functions
VIM::Buffer.current.line =
と同等の関数を発見。
setline()
戻り値が『数値』。処理正常時には0が返ってくるので、空文字列に変換する必要がありそうな感じ。
そこで、ヘルプの組み込み関数を全部確認した。Stringで返して使えそうなものを4点ほど。
べたすぎる発想です。置換して空文字
substitute(setline('.',''),"0","","")
全部消して、0を0回出力すると空文字
repeat(setline('.',''),0)
0をASCIIコードに変換すると空文字
nr2char(repeat(setline('.',''),0))
モードで0をマッピングさせている人はいないでしょうw
maparg(setline('.',''),"")
解説
- 最初に思いついたのは置換する方法です。驚き最小限ですw
- repeatで文字を出力する方法なんて、全く発想になかったです。前日のid:ns9tksさんコメントも参照
- nr2charの使い方用途と全く違い、危険な方法だったりするかも。
- 逆転の発想。0をマッピングさせている人がいたらすごい。
vim完全バイブルの27章は、全関数網羅はされていない感じでしたが、Tipsとか載っていてとても参考になりました。
vimのヘルプもいい感じ。サンプルコードも一緒に記載されています。
List型とDict型はvim7からの新機能らしいのですが、List/Dict関連する関数も増えていてるせいか、やけに関数の
数が多かったです。別のエントリーで関数の差分に関して結果を書きます。
結論
- vimヘルプ重要
- 採用は2のrepeatで。文字列出力は利用方法として合っている感じがするから
Fuctionとか参考書みてたら、vim7scriptでfizzbuzz問題をやってみたくなった。
週末やってみよう。
- 作者: Steve Oualline,高橋 則利
- 出版社/メーカー: 技術評論社
- 発売日: 2004/05
- メディア: 単行本
- 購入: 5人 クリック: 417回
- この商品を含むブログ (57件) を見る