VimConf2017 に参加しました

f:id:maxmellon:20171107004616j:plain

全体的な感想

いろんな界隈で活躍している,多種多様なスタイルなVimエンジニアを目にすることができて, 大変うれしかった.ある人は,Vimデフォルトを愛し,ある人は,Vimプラグインを載せてある人は,NeoVimを利用し...

様々なスタイルのユーザーを受け入れている,うつわの大きなエディタ Vimだからこそ,Vim界隈の方々は器が大きいのだろうかと思った.

とにかく刺激になったし,これから頑張っていきたいという気持ちになった.

Vim, Me and Community @haya14busa さん

人生とVimみたいな話の内容だった.

聞いていて非常に良かったのは,Vimとの出会いから今までという,ドラマ性があり技術的な内容に限らず,話として面白いと感じることができた. また,そこまで大きく年が離れていない人でも,ここまで大きな成果,貢献を残しているという事に刺激を受けた.

特に感動的だった部分は,incsearch.vim というプラグインの機能を Vim本体に導入した話だった.

おもろかった箇所といえば,

f:id:maxmellon:20171106224245p:plain

ここだと思う.このスライド本当に好きで,Vimコミュニティの幅広さをわかりやすく1ページで示していると感じた.

話の内容から,関わってきた人たへの感謝や,アイデアもとへの感謝だったりと 良い人感 がすごかった. そして,Vimに出会ってのたった数年間で,ここまでのことを成し遂げる,成し遂げ力 みたいなパワーを感じた.

The Past and Future of Vim-go @feith さん

つい go 言語を 5日前に始めた 僕にとってもわかりやすい内容で,vim-go を入れているけど, そのうちの機能の10%も使っていない僕にとって,非常にありがたい発表だった.

この発表も,go と vim-go の関係性や,vim-goの誕生までの裏話(もともとは,go言語のリポジトリで管理されていた)など, ドラマがあった.

また,donate に対する考え方や,プラグインの安定駆動のための工夫も,自分にとって新鮮なものでよかった.

「バナー重要だよね! 」 というのが発表中にあったが,自分もバナー大好き人間で, ちょくちょく入れているので わかりみ があった.

この発表を,僕でも楽しめたのは,英 -> 日 同時通訳 があったからだと思う. その通訳してくれている方も,Vimmer (@ujm さん) で,Vimmer のための Vimmer にしかできない 他のカンファレンスにはない VimConf の良さだった. めちゃくちゃありがとうございます.

余談だが,発表中に紹介された,:GoInstallBinaries は早速使った. :GoDef も良くて,標準ライブラリがどのように実装されているか気軽に参考にでき, 初心者の僕にとっては,コードの参考にもなるし,何よりお手軽にジャンプできるのが嬉しい.

昼食

https://pbs.twimg.com/media/DNwgezzUQAAalmf.jpg:large

めっっっっっちゃくっっっちゃうまかった!!!!!

お弁当なのに,半熟卵が入っているのめっちゃいいし,専用のタレと卵と肉を絡めてご飯にのっけると,もう最高. お肉だけじゃなくて,地味にこんにゃくが美味しかった.

ご飯とおかずの量もちょうどよかった.ネギもやらかくなるまで煮込んであって,おいしかった.

おいしかったのと,お弁当が余っていたので2つ頂きました. m( )m

学生なので,美味しい思いをして,社会人になったらこの恩を還元していきたい.

Vim 鼎談 (Round Table Discussion) @mattn さん @k-takata さん @kaoriya さん

Vimに関するあれこれを,まったりと話していくタイプの発表

自分は,登壇形式(この発表も厳密には登壇していて,その上にテーブルと椅子を並べて...みたいな感じ)のものしか聞いたことがなかったので,すごく新鮮だった.

なんというか,Vim界のアイドル? 感 がすごくて,めっちゃよかった.

トークショー中に 「Vimは 5.0 ぐらいから使ってますねー」 という発言から,「じゃあ結構最近なんだね〜」 という返しが あって,7.4 から使っている僕にとっては 「???」 な世界で面白かった.

@mattn さんは,家庭を持ち,家族のためのサービスをしているにもかかわらず,あの量の貢献を成し遂げていると知って, 「やばい すごすぎる」 って思った.

とにかく手が早いということだったので,僕でも見習える点として,「思いついたらすぐ実行」 を積極的に真似出来たらいいなと思った.

アイドルの良さは現地でしかわからない!(知らんけど(関西人風味))(アイドルのライブ行ったことないし,アイドルの曲普段聞かないけどw)

Vim ユーザー としてファンです.

Creating your lovely color scheme @cocopon さん

colorscheme についての発表.

人生の 33% は color scheme を見ている,つまり 人生の 33% は color scheme である(みたいな) という発言が印象深かった.

この発表は,vim を超えて便利な話だった.(例えば,web site の色合いを考えるときなど)

まず,好きなものでもなんでもいいからテーマを決め,それにそったベースカラーを決める. そして,RGB を使わず HSV でWeb ページのカラーパレットを作る.

これは,本当に明日から使える Tips で今作っている研究システムのデザインとかを改善したいという気持ちにしてくれた.

あと,デザインに関して発表しているだけあって,スライドのデザインがとてもよかった. 見た目がいいだけじゃなく,わかりやすいというのも良かった.

color scheme は,Vim script 力が無い僕でも作れそうなので,作ってもいいかもと思わせるぐらいの説得力があった.

vim-mode-plus: The most ambitious vim emulator in the world @t9md さん

vim-mode-plus (vmp) についての発表.

前半は,vim の operator という機能を抽象化して説明,後半はデモベースだった.

vim の operator というのがどのように動いているかの説明が,僕でもわかりやすくて助かった. それを,atomの上でも実現してしまう 力 に すごいと感じた.

それだけではなく,ユーザーにとってのわかりやすさ,使いやすさについても非常に研究されていて, 例えば,vip としたとき,対象と取った区間flash させるなどのアイデアを見せていただいた. (これはデモの本質ではないけど,この機能のおかげでデモが非常に分かりやすかった)

あとは,vimには無い,motionだったり,カーソルを保持するのであったりと...

最後の方で言っていた, Vimをエミュレートするのではなく,Vimの要素を取り入れて自分が考える便利なエディタを作る (厳密には違うかも) という発言が本当にかっこよかった.

僕は,よく本質を忘れてしまうタイプ人間なので,何か作るときには,こういったテーマを大切にしていきたい. (テーマを大切にするというのは,@cocopon さんもおっしゃっていたし,すごい人は,テーマを決めてそれを一貫して通すのがうまいように感じた)

vmpを参考にしたプラグインとか,いくつかすでにある *1 ので,こういう刺激を受けたときに.すぐに手を動かせるようになりたいと思ったので,手を動かした.

Vim and Compatibility @senopen さん

自分はよく知らなかったのだけど POSIX主義 というのを大切にしている人. なんだか調べていると,ショッカーみたいな人たちがいっぱいいて,怪しい...!

発表者も,なんだか怪しい格好をしている...!!! (これだけでもう面白い)

怪しいのに,POSIX主義の考え方の説明はわかりやすい... プログラミング言語を使っているときに,「後方互換があの言語はないから...」 とか 話を聞いていたので,ユーザとしては,あるのが普通なのかなー程度の認識だったのですが, 後方互換の裏側には,絶え間ない努力がなされているということを知ることができたのが非常に良かった.

あと,どこまでをサポートするかのラインを決めるときの考え方が,Vimに関係なく参考になった. (何かを制限したり,選択するときの考え方として)

あと,vimrc の本来あるべき姿(ポータビリティ) を思い出す良いきっかけだった. いつでも,どこでも,どんな環境でも,文句を言わずテキストエディットできるってなんかプロっぽい!かっこいい.

neosnippet.vim + deoppet.nvim @ShougoMatsu さん

暗黒美夢王 さん による発表.最近は,暗黒美無王 さん?

VimConf 2017 は,(おそらく)30% ぐらいが,NeoVim ユーザーでNeoVimユーザーが「クックック・・・」 という感じだった.

mattn 「貴様!まさか!?」 Shougo「そのまさかだ!フハハハハハハハ…」 を ちょっと見れるのかもって期待してた

スニペットプラグインの歴史についても触れられており,対抗馬としてある,SirVer/ultisnips についても紹介された.

Snippetプラグインだけじゃなく,プラグインマネージャを始めとした様々なプラグインを開発されているので,素直にすごいと感じた.

Snippet プラグイン特有の難しさ(conceal や mark) などについても触れられました.

実は,Snippet と言うものをあまり積極的に活用したことがなくて,便利なのかどうかがまだ知らないので, これをきっかけに触ってみて,便利であれば使い続けても良いかもしれないと思った.

How ordinary Vim user contributed to Vim @dice_zu さん

どうすれば, Vim にコントリビュートできるかという話だった.

パッチを送っている人たちかっこいい とか, かっこいいから,僕もパッチをおくりたい みたいなモチベーションをもっと大切にしたいと思える発表だった. パッチを送っているという時点でとてもすごい方なのに,発表中の謙虚な姿勢はかっこよかった.

あと,同僚をコントリビュートさせようとした話もよかった.行動力を見習っていきたい.

プレゼン中に,パッチ職人として活躍されている方々の名前が上がっているのが印象的だった.

みんな,感謝の表現がうまいなーって思った.

The new syntax highlighter for Vim @p_ck_さん

ASTを使って,highlight を 正確にしよう という話だった.

自分は,vim-jsx-pretty という React.js 用の syntax highlight plugin を作っていて,ひじょーーーーーーに困っていたので,夢が広がった. この発想を活かせば,acron-jsx もしくは,babylon? を使って完ペキに React.js 用の highlight できるかもしれない.

vim-shiny (VimConf の感極まり駆動開発しているやつ) にマンゾック したら これにチャレンジしたい.

話を聞いていて,気になった点は, 入力中のハイライトが可能かどうかは,パーサーに依存するんじゃないかなーと思ったとこ. (パースエラーを返して,AST を返してくれなかったらハイライトできない.)

AST を使って, syntax highlight をすると,初心者にも嬉しくて,文法ミスをハイライトの時点で気がつけるということ. もし,syntax highlight がおかしいけど,コードとして問題がない状態があると,初心者にとっては非常にコンヒュージングだと思った.

You've been Super Viman. After this talk, you could say you are Super Viman 2 -- Life with gina.vim @lambdalisue さん

git を Vim の中からするための,プラグインを開発している話.

最初に,どんなVimユーザーが対象かを説明してくれていて,その説明はわかりやすいし,おもしろいし,話の目的も理解しやすくて.めっちゃよかった. 英語が noob な僕でも,聞き取りやすい雰囲気を感じれるくらいハキハキとした発表でよかった.

忘れやすい人でも Tab キーを押せば使えるようになる,証拠は自分という話が面白かった.

自分の困っていることを,開発力で解決しちゃうという考え方は,真似していきたいし, そこに対するこだわりが,プラグインの品質へ直結しているなーと感じた.

Vim の blame のカラーラベルとか,「どうすれば,ユーザーにとってわかりやすいか」 を熟考されている良い例だと思った. 自分もこれからは,もっと「ユーザーに取って嬉しいことは何か」 という点ついて考えていきたい.

それを始める上で一番最初は,自分を満足させるには,どうすればいいかだと思う. (自分すら使わないものは,誰も使わない)

まとめ

VimConf2017 は,個人的に得たものが多くて,特に,自分にとってかっこいい人の考え方みたいなのを知る良いきっかけになった.

この感極まりを,今日だけのものに留めず,これからの人生で意識して行きたい.

具体的には,思いついたらすぐに行動するとか, 感謝を忘れないとか, まずは,自分を満足させるものを作るとか.

VimConf は人生だった・・・?

人類はもっともっとVim本来の機能を使うべきだった

人類はもっともっとVim本来の機能を使うべきだった

はじめに

所属サークルにいるvimmerが使っていなさそうな機能に焦点を当てているので, 若干紹介している機能に偏りがある恐れがあります.

この記事は,SLP_KBITその2 Advent Calendar 2016の18日目の記事です。 また,人類はもっとvim本来の機能を使うべきだったの続きなのでここで紹介している機能は紹介しません.

特に,サークル生がvimを使う上で使っていなさそうな機能に焦点を当てて紹介を行います.

f:id:maxmellon:20161225164711p:plain

遅刻してすみませんでした.

目次

  • 外部ツール連携編

    • vimの中からgrep
    • markdownをいい感じにpreviewしながら書く
    • コマンドの結果をvimに流し込む
    • web上のファイルをそのまま開く
  • 移動編

    • {,} を使って移動
    • <C-^><C-6> でもよい
    • :ls で buffer 一覧を確認し,指定した buffer に移動する

外部ツール連携編

vimの中からgrep

vimは,標準で :grep というコマンドがあります.これは,外部のgrepを呼び出し その結果をQuickFixに流し込無事ができるというものです.

QuickFixというのは,make時のエラーや検索の結果の該当位置をリストで保持し, かんたんにジャンプするためのbufferです.

また,'grepprg' というオプションをセットすることで,外部grepに用いる, grepコマンドを選択することができます.具体的には,aggit grep などを vimの中から叩くことができ,さらにその結果をQuickFixに流し混むことが できるというものです.

ここでは,git grep を用いる例を紹介したいと思います.

set grepprg=git\ grep\ -I\ --line-number

f:id:maxmellon:20161225164752g:plain

デモアニメーションのように,vim内部から素早く git grep を叩くことができ, 更にそれをリストから自由自在に選択できます. コマンドライン上で,grepを叩いて頭で行番号を覚えることから脱却しましょう.

常に 'grepprg'git grep にしていると,git管理下ではないソースコードに対して grepをかけるときに不便です. そこで,私は,:grep をラッピングしたコマンドで運用しています.

function! s:gitgrep(query)
  let l:current_grep = &grepreg " 前回の設定値の保存
  setlocal grepprg=git\ grep\ -I\ --line-number
  execute 'silent grep! ' . a:query
  let &grepprg = l:current_grep
  redraw!
endfunction

command! -nargs=? Ggrep call s:gitgrep(<f-args>)

function! s:jvgrep(query)
  let l:current_grep = &grepprg
  setlocal grepprg=jvgrep
  execute 'silent grep! ' . a:query ' ./*'
  let &grepprg = l:current_grep
  redraw!
endfunction

command! -nargs=? Jvgrep call s:jvgrep(<f-args>)

augroup Vimrc
  autocmd!
  autocmd QuickFixCmdPost make,*grep* cwindow
augroup END

:grep の前に,:silent を挟むことで,Returnキーを押下することなくVimに戻ってくるので便利です.

f:id:maxmellon:20161225164839g:plain

markdownをいい感じにpreviewしながら書く

vimで結構めんどくさいのが,マークダウンを preview しながら書くことです. kannokanno/previm を利用すれば, 実現できるらしいですが,ここではもっとお手軽にプラグインなしで livepreviewを実現する方法を紹介したいと思います.

利用するツールは rhysd/Shiba です.

これは,markdownのlivepreviewに特化したアプリケーションで,ファイルの変更を監視し, 変化があったときに自動でリロードしてくれるというものです. このツールの良いところは,markdownのpreviewに機能を絞っている(エディタに依存がない) ので,様々なツールから扱うことができるということです. ここでは,vimとの組み合わせを紹介したいと思います.

shibaのインストールですが,npmを経由してインストールする場合は,nodeが必要です.

$ npm install -g shiba

パッケージ済みのものをインストールする場合は特に必要ありません. npm経由でアプリケーションを落とさなかった場合は,落としたアプリをコマンドラインから 呼べるように`PATH``を通しておくと便利です.

インストールが完了すれば,これをvimから立ち上げるコマンドを定義します.

command! Shiba :silent call system('shiba ' . expand('%') . ' &>/dev/null 2>&1 &') | redraw!

このコマンドを定義することによって vim の中から shibaを立ち上げることができ, 現在のbufferに対してlivepreviewしてくれます.

f:id:maxmellon:20161225164920g:plain

外部アプリケーションを使うことで,pluginを使わずmarkdownのlivepreviewができるようになりました.

コマンドの結果をvimに流し込む

vimの実行時に - オプションを付与することで,標準出力をvimに流し込む事ができます. curlなどを叩いて,jsonを整形&編集したいときなどで,便利です.

f:id:maxmellon:20161225165230g:plain

web上のファイルをそのまま開く

vimは,:edit に URLを渡すと,そのURLをダウンロードし開いてくれます. wget して エディタで開くという二手間が,vimの中から開くことで一手間に変わります.

f:id:maxmellon:20161225165301g:plain

移動編

{,} を使って移動する

意外と知られていない移動モーション,{,} を紹介します.

{,} は,それぞれ,前後の段落に対するモーションです.

前後の空行に移動すると思えば良いです.大きく上下に移動したいときや, 一つ上の関数定義などに飛びたいとき便利な場面が多いです.

f:id:maxmellon:20161225165336g:plain

他にも,(, ), [[, ]], [], ][] などの便利なモーションが存在します. 興味のある人は,:help を使って調べてみてください

<C-^><C-6> でもよい

<C-^> の便利さは,昨年紹介しました

<C-^> : 直前のバッファに移動する

人類はもっとvim本来の機能を使うべきだった - うどん よこみち

一つ前のbufferに戻るという便利な移動コマンド <C-^> ですが,JISキーボードでは そこそこ押しやすいですが,USキーボードではとても押しづらいです. (Shiftを押す必要があるため)

そんな,<C-^> ですが,実は<C-6> でも動きます.

f:id:maxmellon:20161225165421g:plain

:ls で buffer 一覧を確認し,指定した buffer に移動する

vim では,:ls コマンドで,開いたbuffer一覧を取得することができます. そして,:edit #[number] で,指定した buffer id を開くことができます.

:Unite buffer に当たることを,pluginなしで実現することができます. (Uniteが使えるのであれば使えばいいが,Uniteがないとbufferの移動ができないというのは良くない)

個人的には, :Unite buffer<CR> とタイプするコストと :ls<CR>:e #[number]<CR> をタイプするコストはそんなに変わらない

f:id:maxmellon:20161225165458g:plain

まとめ

vimはpluginもイケているが,素の機能もイケている. 自分の好みに合わせて選択すると良いだろう.

vimの素を知っておくと,拡張がない場面でも難なくテキスト編集できるのではないだろうか.

React.js の syntax ハイライトプラグインを作成した話

React.js の syntax ハイライトプラグインを作成した話

はじめに

この記事は,Vim (その2) advent calendar の 13日目の記事です.

自分の中で,今年一番がんばったVim活動を振り返り,それについて書き記していく. どちらかと言うと,pluginの紹介ではなく,作って良かった点,苦労した点などに焦点を当てる.

背景

自分は,よく React.js *1 を用いて開発を行っている. React.js で開発するときの多くは,javascriptソースコード中にHTMLのような マークアップを埋め込む糖化シンタックスである JSX を用いることが多い. (JSXは,マークアップそのものではなく,トランスパイル時にjavascript の 関数呼び出しに展開される)

そして,自分は普段 Vim を使って開発しており,vim-jsx *2 という, syntax ハイライトのためのプラグインを用いて開発していた.

このプラグインは,とても良いものだったが,バグや不具合が多く目立った. 具体的には,特定の文字列でハイライトが崩れてしまったり,オートインデントが 壊れてしまったりなどである.例えば次のようなものである.

ハイライトが崩れたり,インデントが自動でいい感じにならないのは,僕にとって ストレスが大きかった. そこで,これらの問題の解決を目指して, このpluginを手元で改変して扱うことにした.(最初は,特に fork も push もせず, 手元でのみ書き換えていた.理由としては,vim-jsxに,LICENSEが明記されておらず, forkしていいかどうか判断できなかったため.)

そうしている間に,元のコードがなくなってしまったので,pluginとして公開にあたった.

それが,vim-jsx-pretty である.

プラグインの概要

vim-jsx-pretty では,vim-jsx で抱えていた問題を幾つか解決した. それは,次のデモを見てもらえるとわかりやすいだろう.

vim-jsx-pretty mxw/vim-jsx
vim-jsx-pretty vim-jsx

他にも,オートインデントに対応した.

Auto indent

Pluginを作成する上で参考にしたのは,Vimのruntime以下の最初から入っている, syntaxの設定ファイルである xml.vim だ.

コメント文による例も非常にわかりやすく,Vimにおける,正規表現の 教材としても良いのでは,と感じた.

プラグインの宣伝記事ではないのでこのあたりでとどめておいて, プラグインを作成して感じたことを振り返って行きたいと思う.

良かった点

  • 苦手な正規表現と向かい合うことができた.

前よりは,正規表現に明るくなった気がしている.

  • Github/issues を通して,かんたんなディスカッションをすることができた.

自分のツールを,他人に使ってもらえる嬉しさをしれた. また,意見やバグ報告を対応する,大変さと喜びを少ししれた.

  • 開発中の不満を自分の力である程度解決することができた.

今までは,口を開けて問題を解決するまで待っていたが,今年は,Vimに限らず これまでに比べて,自力でバグを修正しようとすることができた. (具体的には,今年はじめて利用しているライブラリにPull Request送ったりすることができた)

このプラグインの場合,Pull Request ではないけど, 自分の力で(完全ではないかもしれないが)不満を解決できてよかった.

まだできていない点

  • 網羅的な動作チェック

現在,手でインデントや,シンタックスハイライトに問題がないかどうか確認しているが, すべてのシンタックス及びインデントで正常に動作するかがまだわからない.

  • テストの自動化

単純な,コマンドや関数の単体テストの方法は,知っているがシンタックスハイライトが できているかどうかをコードでテストする手段がわからなかった. あるいは,そういったツールがあるのかがわからなかった. もし,ないのであれば,特定のバッファに対して,指定したカーソル位置が 期待したハイライトグループかを検証する,アサーションなどを作ってみても良いかもしれない.

  • 英語記事

今年中に英語記事書きたい.何故かと言うと,きっと同じ問題でストレスを抱えている, ユーザーがいるはずだと思ったから.(英語記事書きたいと思ってから,30日近く経っていて, 非常に良くないので,今年中とここに宣言しておく.)

わからない点

  • LICENSE 的に問題ないのかどうかがわからない

このプラグインは,vim-jsx の焼き直しに近く,LICENSE的に問題あるのかないのかがわからない. (vim-jsxのソースコードを利用しているわけではない.) そもそも, vim-jsx にライセンスが存在しない.

このあたり詳しい人教えてほしいです.

まとめ

  • 自分にとってのストレスを解決するために,プラグインを作った(焼き直した)
  • 他人に,ツールを使ってもらう喜びを知った
  • Vimにかぎらず,自分にとっての問題やストレスは,自力で解決を試みてみるべき
    • もし一人で無理なら,適当なコミュニティで質問するのとかが良さそう
    • 解決のためにいろいろ調べたり,試行錯誤したりするので,得るものがたくさんある (たぶん)
    • 新たな挑戦のきっかけにもなる(まだできてないけど英語記事書きたいな〜とか)

hammerspoon を入れてみた.

この記事は SLP-KBIT アドベントカレンダー その2 の1日目です.

hammerspoon とは

Staggeringly powerful OS X desktop automation with Lua

らしい.どうやら lua を使って OSX に強力な自動化を提供してくれるデスクトップアプリケーションらしい. 今回はコイツを使って,Windows である Win + ← や Win + → に似た機能を実現しようと思う. といっても,自分で実装したのではなく,公式のサンプル集 から抜粋したものである.

hammerspoon をインストールする (for mac)

https://github.com/Hammerspoon/hammerspoon/releases/tag/0.9.50

まず,ここから zip を落として,回答したものを ~/Applications に設置する. その後,アプリケーションを実行する.

実行すると,次のような設定画面が出てくる.

f:id:maxmellon:20161130220343p:plain

アクセス権限を求めてくるので,許可する

f:id:maxmellon:20161130220424p:plain

表示が切り替わっていることを確認する

f:id:maxmellon:20161130220513p:plain

これでインストールは完了.

ホームディレクトリに

~/.hammerspoon/ という名のディレクトリが作られているはずなので,その中に設定ファイルを作成しておくこと.

$ touch ~/.hammerspoon/init.lua

設定ファイルは,すべて lua で記述するのが,このアプリケーションの特徴の一つだ.

Windowsのようにウィンドウ をガンガン動かすためのスクリプトを導入する

github.com

この方の,この設定ファイルを導入するだけで,自由にウィンドウを操作できるようになる.

上記ファイル(position.lua)をダウンロードし,~/.hammerspoon/ 以下に設置する. その後,init.lua に次のように追記する

dofile("position.lua")

f:id:maxmellon:20161130221026p:plain

そして,リロードすると,

Ctrl + Alt + Cmd + カーソルキー で ウィンドウを次のように動かせるようになります!!

キーバインドを変更する

Ctrl + Alt + Cmd というのは非常に押しにくいので,自分は変えました.

137c137
< hs.hotkey.bind(hyper, "up", function ()
---
> hs.hotkey.bind({"cmd"}, "up", function ()
139c139

こうすることで, "cmd" キーだけで操作できます,他のキーにしたければ自由にでしてみてください.

まとめ

マウスを使わずに ウィンドウをきれいにわることができる!!便利!!!!

vimconf2016 参加感想

2016/11/05 (土) にmixiで行われた,VimConf2016 へ参加しました. 今回が初の参加となります.

ここでは,自分にとって,すごく面白いと感じたプレゼンを2つに絞り, 感想を共有したいと思います.

本記事で紹介する以外のプレゼンも大変素晴らしく今後の展望が気になるものなど たくさんあり,非常に素晴らしかったです.

まえおき

本記事で,すべてのプレゼンに対して感想を書かない理由は,ある程度他の参加者と 共通している部分が多いのと,記事が長ったらしくなってしまうことを懸念しました. また,全部を見せるのではなく,チラ見せすることによって他の方の参加者の報告を見る きっかけになれば良いと考えました.

もし本記事で,VimConfに対して興味を持っていただけたのであれば, 他の発表者のプレゼンテーションや参加記録も合わせてチェックすることを おすすめします! :)

Introduction to Vim 8.0

発表者: Ken Takata さん

資料: http://www.slideshare.net/k-takata/introduction-to-vim-80

発表は,version8の新機能紹介と,vimの誕生から現在までの歴史, 日本人の貢献度などについて触れられた. :h version8 の流れと,前半の発表資料の流れが連携していて感動した.

この発表では,自分の知らないVimの歴史について知ることができた. 特に,自分にとって衝撃的だったことは,vimへパッチを 送っている日本人がこんなにも多いというだった. 自分は,パッチを当てている人たちを見ているだけの,ただのファンだったが, パッチを当てている日本人が多いということにすごく誇らしく感じた. 同時に,自分が大きな不自由なくvimを使えているという現状には, vim patch職人の方々の苦労があるということに気が付かされる機会となった. そして,今すぐには不可能かもしれないが,いずれかは今,前線で輝いているパッチ職人の 方々のように何らかの形でvimに貢献したい と強く考えさせられる発表だった.

vimを当たり前のように使えていることがすごいことであるということに気づくことができた発表だった.

vim-mode-plus for Atom editor vimconf-2016

発表者: t9md さん

資料: http://qiita.com/t9md/items/0bc7eaff726d099943eb

この発表は,Atomにおける,vim拡張をより使いやすく便利にしたというものであった. 面白いと感じた部分は,Atom上でvimをエミュレートするだけにとどまらず, Atomの機能とVimの機能をそれぞれ組み合わせて,今までにないような 斬新的な機能を作ったという部分である. また,使いやすさや,便利さに対する貪欲でひたむきな考え方は, 発表を聞いている人全員のこころをガッチリと掴み,そして,Atomを使うことによって Vimしか使っていなかったときよりもVimに 詳しくなったという発言が, 誰もが納得できるほどのクオリティの高さを感じた.

もちろんプラグイン自体の斬新な発想から実装された独自機能も面白かったが, それをよりわかりやすく聴衆に伝えるためのデモの旨さを発表後の振り返りで気が付かされた.

考え方や,エディタに対する理念がすごく筋が通っていてめちゃくちゃかっこよかった.

おわりに

VimConfは,発表者のレベルが高い以外にも良いところがあるということに, 実際に参加してみて気が付かれたので,最後にそれをシェアしたいと思います.

個人的に,VimConfで良かったもう一つのポイントは, 同年代のエンジニアとたくさん対話することができたことです. 特に,github上で大きな貢献を成し遂げているの @b4b4r07 さんと, @haya14busa さんと,比較的長い時間 対話することができたことです.

多くのユーザーが付いているツールのメンテナンスの苦労話や,自分のプロダクトに 対するこだわりなどを聞けることができ,非常によかったです.

VimConfは,技術レベルの高い話が聞けるだけでなく,新しいコネクションも作れるので ぜひ,興味は持っているが,行ったことがないという方は次の機会にでも参加してみることを おすすめしたいです.

最後に,発表直後のテンション高い状態で書いた記事で拙い文章でしたが, ここまで読んでくださりありがとうございました.

感無量です!

おまけ

Udon.vim やる

反省点,3日前に熱で寝込んでしまったのでもうちょっと季節の変わり目,気温差が激しい時期は体調管理に気をつけ,次は良い体調で参加できるようにする.

git branch を fzf で選択していい感じに一括削除

git branch を fzf で選択していい感じに一括削除

git の branch を fzf で選択して削除するというもの

git-remove-branch()
{
  local branchs q k results
  while out=$(
    git branch | sed -e 's/\*//g' -e 's/\ //g' \
               | sed -e 's/master//g' -e 's/develop//g' \
               | fzf --ansi --multi --no-sort --reverse --query="$q" \
                     --print-query --expect=ctrl-d); do
    q=$(head -1 <<< "$out")
    k=$(head -2 <<< "$out" | tail -1)
    branchs=$(sed '1,2d' <<< "$out" | awk '{print $1}')
    branchs=("${(@f)$(printf $branchs)}")
    [ -z "$branchs" ] && continue
    if [ "$k" = ctrl-d ]; then
      for branch in $branchs; do
        git branch -D $branch
        if [ $? -eq 0 ]; then
          results=($results $branch)
        fi
      done
      printf "\n\e[31m Deleted branchs:\e[0m\n"
      for result in $results; do
        printf "\t\e[32m $result\e[0m\n"
      done
      printf "\n"
      break
    fi
  done
}

Ctrl-i で 複数選択後,Ctrl-d で削除

f:id:maxmellon:20160925031448g:plain

React 用 の Slider UI plugin つくりました

react-simple-slider

github.com

趣味アプリ作ってる時に既存のものを利用しようと思ったのですが, 既存のものがビミョだったので,1から作りなおしました.

(具体的には,デザインを変えづらかった,DOM構造が複雑だった.個人的にもっとシンプルなのが欲しかった)

使い方

      <Slider
        height={20}
        width={300}
        default={150}
        max={300}
        onChange={onChange}
        backStyle={{ backgroundColor: 'black', }}
        frontStyle={{ backgroundColor: 'red' }}
      />

みたいな感じです.

なるべくシンプルになるようにしました.

ref を指定すると

const value = this.refs.slider.getValue();
this.refs.slider.setValue(value);

みたいな感じで setValuegetValue を利用することができます.