2013/12/06

Recent entries from same category

  1. clangd を使う時に便利なコマンド compiledb
  2. VimConf 2018 に行ってきた。
  3. Software Design 2018年7月号「Vim 絶対主義」の執筆に参加しました。
  4. Vim の :terminal の中から外の Vim を操る方法
  5. Vim と日本語入力の話。

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

2013年もあと少しです。今年も Vim に関する色んな話題が登場しました。
そして数多くの Vim plugin が今年も登場しました。
  • ステータスバーをスタイリッシュにするプラグイン
  • Markdownをプレビューするプラグイン
  • 正規表現をプレビューするプラグイン
  • ブラウザと通信するプラグイン
  • 補完プラグイン
  • 貴様!?まさか!
  • そのまさかだ!フハハハハハハ...
どれも凄い物ばかりでした。そして Vim 界においては日本人の活動が特に素晴らしかったと思っています。 k_takata さんの大活躍で多くのパッチが vim-jp より提出され取り込まれました。
何名かの方には Vim 7.4 のリリース後も動作検証に協力頂きましたし、Vim advent calendar 2012 は結局1年を通して記事をポストし続けてしまいましたし、vimrc読書会も毎週続けられ、Vim に関するイベントも多く開催されました。
個人的には9月に KoRoN さん、h_east さん、ytaniike さんとお好み焼きを食べに行った事も良い思い出になりました。ありがとうございました。

来年も Vim にとって良い年である事を切に願います。
さて、今年作られた Vim plugin、どれも良い物でしたが僕がいつも思う事はこんな事です。

Vim プラグインとは言え、作るからには人々の暮らしを豊かにしなければならないッ!
僕は Windows を良く使います。僕の Vim script 力で Windows ユーザを豊かにしたい、くじけそうになっている人を Vim で救いたい。モテたいと願っている青年達を Vim でモテモテにしたい。そう願って今年も新しいプラグインを作りました。
mattn/startmenu-vim - GitHub
https://github.com/mattn/startmenu-vim
StartMenu

CtrlPUnite で Windows のスタートメニューが扱えます。
これでいちいちマウスに手を伸ばしてスタートメニューをクリックし、ポチポチとツリーを展開したり検索語を入力していく必要もありません。

あえて日本語ロケールの名称で一覧していませんので、IME を使わず英名でマッチします(ショートカット名が日本語の場合は頑張って下さい)。これで Vim から Excel 等を簡単に起動出来る様になりました。
会社で Vim から Excel 起動したら、きっと同僚の眼差しも「センパイッ!すごい!」となるでしょう。
もっと豊かに、もっと豊かに...

そうだ...そうなんだ。僕のプラグインで便利になったのはプログラムの起動方法でしかないッ!Windows ユーザはそのランチャーから起動した Excel で設計書を閲覧するんだ!彼らの生活を豊かにする為には、Vim で Excel を開けなければならないんだァッ!!これはもう、Vim で Excel を見れる様にするしかない!!1
そう思って、もう一つプラグインを作りました。
mattn/excelview-vim - GitHub
https://github.com/mattn/excelview-vim
てっとりばやく言うと、Vim で Excel を閲覧出来ます。
:ExcelView Book1.xls
で表示出来ます。シート番号を指定して
:ExcelView Book1.xls 2
という開き方も出来ます(この辺は、今後もしかしたら変更するかもしれません)。
excelview1
こんな Excel ファイルであれば
excelview2
こう表示されます。
xlsx 形式(Excel 2007形式)のファイルしか読めないです。今後、もしかしたら CSV には対応するかもしれません。実行には webapi-vim が必要です。
ちなみに Pure Vim script の XML パーサでこんな事やってます。
let doc = webapi#xml#parse(xml)
let rows = doc.childNode("sheetData").childNodes("row")
let cells = map(range(1256)'map(range(1,256), "''''")')
let aa = char2nr('A')
for row in rows
  for col in row.childNodes("c")
    let r = col.attr["r"]
    let nv = col.childNode("v")
    let v = empty(nv) ? "" : nv.value()
    if has_key(col.attr, "t") && col.attr["t"== "s"
      let v = ss[v]
    endif
    let x = char2nr(r[0]) - aa
    let y = matchstr(r, '\d\+')
    let cells[y][x+1= v
  endfor
endfor
今の所、制限事項として 256x256 のデータしか表示出来ません。それ以上のデータを読み込むとエラーが発生します(改良の予定です)。

これでとても豊かになりました。ssh でサーバにログインしている開発者が Excel で仕様書を送りつけられても椅子を投げる事も無くなると信じています。

良い年末をお過ごし下さい。
実践Vim 思考のスピードで編集しよう! 実践Vim 思考のスピードで編集しよう!
Drew Neil
アスキー・メディアワークス / ¥ 14,116 (2013-08-29)
 
発送可能時間:

Vimテクニックバイブル ~作業効率をカイゼンする150の技 Vimテクニックバイブル ~作業効率をカイゼンする150の技
Vimサポーターズ
技術評論社 / ¥ 3,278 (2011-09-23)
 
発送可能時間:在庫あり。

Posted at by | Edit


blog comments powered by Disqus