momonga.vim#2に参加しました

遅くなってしまいましたが、10/13(日)に武蔵境で開催されたmomonga.vim#2に参加したので、感想レポートをば

昼食

会場ともなった武蔵境プレイスで、参加者5名でお昼食をご一緒しました。 武蔵境プレイスが想像以上にお洒落空間でちょっと場違い感を感じつつも、カフェで優雅にランチ。 ランチの場ではVimmer特有のシャイフィールドを作りつつも小粋なVimトークで花をさかせつつ?美味しいランチを頂きました。

TokyoVimに参加して人生が変わりました! - daisuzu's notesを書かれたdaisuzuさんが隣にいらっしゃったので少しだけ 転職の話を少しお聞きするなどして有意義な時間を過ごすことができました。

もくもく会

以下簡単にもくもく会の成果をば

やったことは以下3点

  1. 鳩サブレ
  2. capslock.vimにpull request
  3. Sticky Shiftを改良(capslockも可能に)

鳩サブレ

おやつに鳩サブレ持って行きました。

人数分なくて食べれなかった方すいません。。。

capslock.vimにpull requestを送る

最近Sticky Shiftを使おうと色々調べてる過程で知ったcapslock.vim にpull requestを送りました。

capslock.vimVim Hacksでも紹介があったのでご存じの方もいるかと思います。

Vim-users.jp - Hack #47: 大文字を連続で入力する

capslock.vimVim上で仮想的にcapslock機能を提供するVim pluginです。

key mappingしてcapslockをenable,disable,toggleしたりできます。

ただ、現状のcapslock.vimでは、 切り替えられるのはa-zA-Zだけで、0-9や記号などをcapslockで切り替える ことができません。

このため、1-9や記号などもcapslockで切り替えられるように修正して pull requestを送りました。 (10/19 15:40時点 未取込)

修正はグローバル変数でcapslockで切り替えるキーをカスタマイズ出来るように したことです。 以下の様な設定をvimrcに書いておけば、数字や記号も capslockで切り替えることができます。

" capslock for US keyboard
let g:capslock_key_mapping = {
  \ '1': '!',
  \ '2': '@',
  \ '3': '#',
  \ '4': '$',
  \ '5': '%',
  \ '6': '^',
  \ '7': '&',
  \ '8': '*',
  \ '9': '(',
  \ '0': ')',
  \ '`': '~',
  \ '-': '_',
  \ '=': '+',
  \ '[': '{',
  \ ']': '}',
  \ '\': '|',
  \ ';': ':',
  \ '''': '"',
  \ ',': '<',
  \ '.': '>',
  \ '/': '?',
  \ }

上記グローバル変数の辞書で設定しておけば、capslock切替時に keyvalueに変換することができます。

Sticky Shiftを改良(capslockも可能に)

上記capslock.vimは実は本題ではなく 本題はこちらでした(pull req送ったものの、結局自分では使う予定ない。。。)。

Sticky Shiftでちょっと使いづらいところがあったので改良しました。 (Sticky Shiftの改良と言うよりは、併用して使うcapslock追加と言ったほうが正しいかな)

VimでSticky Shift使う方法はVim Hacksでも紹介されており、自分も最近この設定をしてSticky Shiftを使用しています。

Vim-users.jp - Hack #54: VimでSticky Shiftを実現する

基本的には上記設定で十分なのですが、たまにSticky Shiftではなくcapslock的な操作をしたいことがあり、 その際はSticky Shiftだと、毎回;x;x;x;xのような操作をしなければならず 普通にShiftを使うより打ちづらくなってしまいます。

このため、capslockしたい場合にはcapslockするように設定を追加しました。

設定の追加は上記でpull reqしたcapslock.vim ではなく、みんな大好きsubmode.vimで実現することにしました。

設定は以下です。 ;<Tab>でcapslockに切り替えられるようにしています。

" capslock for US keyboard
let s:capslock_key_set = {
  \ '1': '!',
  \ '2': '@',
  \ '3': '#',
  \ '4': '$',
  \ '5': '%',
  \ '6': '^',
  \ '7': '&',
  \ '8': '*',
  \ '9': '(',
  \ '0': ')',
  \ '-': '_',
  \ '=': '+',
  \ '[': '{',
  \ ']': '}',
  \ ';': ':',
  \ '''': '"',
  \ ',': '<',
  \ '.': '>',
  \ '/': '?',
  \ '`': '~',
  \ ' ': ';',
  \ }
call submode#enter_with('capslock', 'cis', '', ';<Tab>', '<Nop>')
call submode#leave_with('capslock', 'cis', '', '<Tab>')
for s:char in range(char2nr('a'), char2nr('z'))
  call submode#map('capslock', 'cis', '', nr2char(s:char), nr2char(s:char-32))
endfor
unlet s:char
for [s:lhs, s:rhs] in items(s:capslock_key_set)
  call submode#map('capslock', 'cis', '', s:lhs, s:rhs)
endfor
unlet s:lhs
unlet s:rhs

submode.vimでinsert modeのmappingを するとなぜかカーソル位置で)が表示されるのが玉に瑕ですが、 実害はないので気にしないことにしました。 (わかりやすいように表示してるのかな?)

雑多な感想

  • unmoremasterさんがいつもの?アノニマス仮面を会議室の外からかぶってきてとてもシュールだったw
  • メンバーが濃ゆかった(名だたるVimmerが勢ぞろい)
  • puyo.vimがすごいことになってた
  • スペシャルゲストがShougoさんだったなんて全然気づかなかったわー(棒)
  • Shougoさんがまさかあんな格好で写真を撮られるとは。。。
  • MBP 15inch Retina欲しい。。。
  • 二次会でdaisuzuさんの転職話もっとお聞きしたかった
  • 二次会でVim談義もっと(ry

終わりに

家族の集まりがあったため、二次会以降参加できなかったのが唯一の心残りでしたが Lingrでの三次会の会話にも若干混ざったりもして、一日楽しい時間を過ごすことが出来ました。

主催のsupermomongaさん、参加者の皆さん、ありがとうございました。

また、momonga.vimもしくはxxx.vim(直近ではVimConfかな?)でお会いしましょう。

Happy Vim Life!