VimConf 2016 お出かけメモ

2016.11.05 (Sat) に実施されたVimConf2016に参加してきました。

VimConf

VimConfは、Vimのユーザーやプラグイン開発者、本体のコア部分の開発貢献者など
Vimに関わるすべての人のための、国際会議です。
http://vimconf.vim-jp.org/2016/

年々参加者が増え、今回は100名近く集まったようです。
さらに、今回は欠席者が少なめとの噂。良い事ですね。

vim-jp » Vimのユーザーと開発者を結ぶコミュニティサイトのメンバーを中心に様々な協力者の方々ともに運営されています。
会場は毎度おなじみの 株式会社ミクシィ さんが提供してくださいました。

運営、発表、そして興味を持ってくださる皆様に感謝。
また来年も無事開催されますように!

ざっくり

  • みなさん素晴らしい発表だった。
  • t9mdさんの円を使った操作の説明が特に印象に残った。
  • golang関連の発表多かった。
  • 時間配分難しい
  • #vimconf2016 hashtag on Twitterトレンド入りするぐらい大盛況!
  • 録画もあるので見逃した方もぜひどうぞ https://www.youtube.com/watch?v=5CnewLJi0b0
  • 自分用適当メモをベースなので正確さとか怪しい......

発表

Introduction to Vim 8.0

k-takataさん

vimvim-jpの歴史的なお話。
日本の方々の貢献力がどんどん伸びてる!

Q: 投げた中で一番面白かったパッチは?
A: DirectWrite, スペルチェックから日本語除外

Vim as the MAIN text editor

bird_nitrynさん

VSコードからVimへ移行なお話。
とにかく使う!

Q: Vimへ移行のモチベーションは何?
A: 開発環境的な都合があって

Q: 移行するとき避けた方が良いバットプラクティスは?
A: レベルが違いすぎるvimrcではなく同じレベル位のvimrc読むと良い?

Q: 移行して一番テンションがあがった機能/プラグインは?
A: vimfiler, hjklで直感的にフォルダ移動が出来る

Denite.nvim ~The next generation of unite~

Shougoさん

uniteの進化系のお話。
python3化で速度大幅アップ!

Q: Vim8以降対応の理由は新機能の非同期I/Oを使っているから?
A:ノー。もう少し前のwindowid辺りがあれば動く?機能の安定具合とキリの良さで8にした。

Q: プラグインで大量のメモリ使うと重くなるって本当? (重くなるのでpythonに移行して早くした的な話に対して)
A: Vimで本来想定していないようなの規模でメモリ使った。Vim scriptでやるには複雑になりすぎた。処理をVimの外に移して改善したので取りあえずあまり気にしない?

Go、C、Pythonのためのdeoplete.nvimのソースの紹介と、Neovim専用にpure Goでvim-goをスクラッチした話

zcheeさん

自分で作成したdeopleteソースとgolangvim-go作っているお話。
好評とのこと。
40秒で質問しな! (時間がないので休憩時間に個別にどうぞ的な)

Q: vim-go動いているプロセスにアタッチする機能ある?
A: まだない。帰ったらやります。

エディタの壁を越えるGoの開発ツールの文化と作成法

tenntennさん

vimgolang相性良いよ的なお話。
golangの開発ツール群便利!

Q: (完全にgolangな質問だけど)vim-goに欲しい機能とか、よく使っているコマンド教えてほしい。
A: xxx(良くわからなかった...)が遅い
A-A: 使ってもらえるなら半年位でxxxより早くします!
A: gofmt(ごーふむと と読むらしい)の -s(ソースコード簡略化) を goimportに欲しい
A-A: ありがとうございます、参考にします。

Q: golangと他所とのやり取りのフォーマットって何か良いものある?取りあえずはjsonはあるけれど...
A: 個人的にはjsonで良いかなと。

vim-mode-plus for Atom editor

t9mdさん

vim-modeをフォークして自分用に進化させていったお話。
vimは小指に優しい。
7stepチュートリアルと入力が完了しているか、というお話がとても分かりやすい。
カーソル移動しないテキストオブジェクト良いなあ。

Vimの日本語ドキュメント

MURAOKA Taroさん

日本語ドキュメントの管理の歴史的なお話。
手と目が足りない!さらに言えば知恵も(整形済みのテキストのうまい翻訳管理)
ぜひ貢献を!
vim-jpちょっと怖い人もいるけれど話すといい人が多いよ
宣伝: C91 木曜 29み ququ. 何か出す (エプロンという案もあったらしい)

Q: rubyの翻訳がクラウドでどうこう
A: 考えたけど諦めた。ドキュメントに何らかのマークアップほしい...

Q: Chalice うんぬん (vim2chブラウザ)
A: 起動時間かれこれ2年越えた。限られた環境であれこれの訓練にはなった。

Vim script parser written in Go

haya14busaさん

Vim script のパーサをgolangへ移植したお話。
早い! Vim script 48sec -> golang 0.25sec

僕の友達を紹介するよ

aiya000さん

おすすめプラグイン紹介のお話。
IDEは便利ツールとしてバックグラウンド待機!
aref-web.vim使ってみてね!

Best practices for building Vim plugins

thincaさん

プラグイン作成のベストプラクティスのお話。
残念ながら最後の発表です、それでは聞いてください
名前やキーバインド、共用スペースは気をつけて使おう!
そこはおまえのものじゃない!

アイトラッキッキングする子を購入してみた

2年ぐらい放置してしまっているけど、気にせず再利用。資源?は大切にしないとね。

到着までどんな感じだったかというメモのみ。今回は動かないよー

The EyeTribe

http://theeyetribe.com/
お手軽な価格で入手できる設置型のアイトラッキング装置です。
簡単な特徴

  • 距離65cmで40cm x 30cmの空間を30Hzでトラッキング
  • C++ / C# / Java のいずれかから利用できる
  • USB 3.0 必須
  • 対応環境は Win/Mac (Androidも後々対応、ただusb3.0必須なので対応出来るハードは少ない感じ...)

お値段

全体で$114.00, 14,000円ほど。

  • 本体 $99
  • 送料 $15

到着まで

安い方の Priority Delivery: $15.00を指定して注文したら2週間ぐらいで到着。
輸送期間より、発送までの時間が長かった。

  • 3/25(水) 注文
  • 4/1(水) 発送したよーとのメール、以下郵便局のトラッキング
  • 4/2(木) 国際交換局から発送
  • 4/4(土) 国際交換局に到着、国内に到着!
  • 4/4(土) 通関手続中、土曜日って関税通るのかなあ...
  • 4/5(日) 国際交換局から発送、問題なかったらしい
  • 4/6(月) 到着!

中身

  • 本体
  • 三脚
  • 短いUSBケーブル
  • 長いUSBケーブル

(カードはサイズ比較用)

SDKのダウンロード


商品の発送後、注文リストのページよりSDKがダウンロード出来るようになった。
発送されるまでは、ダウンロードのリンクをクリックすると注文リストのページに飛ばされるけれど何も無い...
Win/Macsdkそれぞれがダウンロードできます。
ハードは同じらしいので?Android版のSDKダウンロードもここに生えるのかもしれない
購入のところにAndroidかWin/macの選択があるのがあやしーところ。

プチトラブル

町名書き忘れた...
郵便番号と番地は書いてあったので無事到達。
なんで番地は書いたのに町名忘れたのだろう...
ともかく書き忘れ/間違いが無いようにもっと気をつけないと、と感じた瞬間でした

久々に書いたので結構適当。久々でなくても適当だけれども...

CentOS6.3でchef-soloを試してみた

こんな感じになりました

sudo yum install git -y

mkdir workspace
cd workspace

git clone git://github.com/wiredool/chef-repo.git
cd chef-repo
git submodule init
git submodule update

sudo sh run-chef-solo.sh

実行するとApacheとかインストールされます。
よくわかっていないので、おかしなところがあるかも知れなません。
実際に利用してみる時は、もっと良さげなところを参考にしましょう。

思ったより簡単にできた

Ruby準備面倒そうだ、とか思っていました。
が、shなインストールスクリプト1つでバイナリ降ってきたのであっさり完了。便利なものですね。
途中の変なところでハマって、案外時間を取られたのが悲しかったです。

作業内容

実行したい作業のかたまりをこの辺の書く。

repo/site-cookbooks/hoge/recipes/default.rb

あるいは、誰かが作ったものを貰ってくる。

[submodule "cookbooks/man"]
	path = cookbooks/man
	url = git://github.com/opscode-cookbooks/man.git

準備した中で実行したいものの一覧をjsonに書く。

{
	"run_list": [
		"hoge",
		"man"
	]
}

あとは実行するだけ。

sudo chef-solo -c 設定ファイル -j jsonファイル

試した環境とか

AzureのCentOS6.3なVMにて。
利用したファイルはこのあたり。
https://github.com/wiredool/chef-repo

参考サイト

chef-soloとgitでCentOSの環境構築をらくらく自動化
http://kohkimakimoto.hatenablog.com/entry/2013/02/15/121741
chef-soloを使ってサーバ設定を自動化して楽をしよう! 〜chef-soloの使い方〜
http://blog.engineer.adways.net/archives/17808773.html

ハマった内容

sudo curl -L https://www.opscode.com/chef/install.sh | bash

で、権限がないよ的な。

正しくはこう。
権限が必要なのは「拾う」部分ではなくて「インストール」ですものね……

curl -L https://www.opscode.com/chef/install.sh | sudo bash

vimでスペルを確認する

Vim Advent Calendar 2012の12日目の記事です。
昨日は@ujmさんによるvimshellとujihisa.vim#3でした。

今回はスペルの確認に便利な機能を少しだけ紹介します。

spell

入力済みのアルファベット列を確認する場合は、vimスペルチェックの仕組みを利用してみます。
使い方は簡単で、boolな設定をonにするだけでコードが色付きます(間違いがある場合)

:setlocal spell

停止する場合は

:setlocal nospell

です。

gVimでは波線が付いたりします。

表示が気に入らない場合は

:hi SpellBad ctermbg=9

のような感じで変更できます。

表示だけでなく、修正を補助する仕組みも持っています。

]s でスペルチェックにかかった次へ単語へ
[s で前の単語へ移動できます。

単語の上で z= とすると、正しい単語の候補を教えてくれます。

表示できるだけ候補を出してくれるので、vimの縦幅が大きいと選択肢が増えます。(が、おそらく上のいくつかで十分です)

spellまわりの機能について、詳しくはヘルプの spell を参照してみてください。

さて、これで入力済みのアルファベット列はきれいになりました。

Excitetranslate

次は、英語でどんな単語だっけ?、と困ったときに便利な翻訳プラグインの紹介です。

今回は、mattnさんが作成したexcitetranslate-vimを利用してみます。
https://github.com/mattn/excitetranslate-vim

neobundleなどの管理系のプラグインを使っているならvimrcに

NeoBundle 'mattn/excitetranslate-vim'

を追加して、

:NeoBundleInstall

を実行すると使えるようになります。

windowsの場合はcurlのバイナリを拾ってきて実行ファイルをPATHに追加する必要があるかもしれません。

let $CURLPATH = '\path\to\curl-7.28.1-ssl-sspi-zlib-static-bin-w32' . ';'
let $PATH = expand($CURLPATH) . $PATH

あとは確認したい単語を入力して

:ExciteTranslate

を実行するだけです。

ヴィジュアルモード等で範囲を指定しての翻訳や、日本語から英語だけでなく、英語から日本語に翻訳することもできます。
さらに、英語/日本語を自動で認識してくれるためとても便利です。

次回は

まだまだ便利な機能がある様な気もしますが今回はここまでです。
次回のVim Advent Calendar 2012の13日目は @ne_sachirou さんです。
楽しみですね。

PR

今回spell機能にお世話になるきっかけとなった vimrc読書会 というものが、毎週土曜日 23:00ごろからオンライン上で行われています。
途中参加/途中離脱も自由ですので興味を持たれましたら是非覗いてみてください。

TokyoVim#10 参加メモ

ないよう

もくもくとvimに関する作業をする会
おとなりがやけに賑やかで、集まりによってこうも違うのだなあと。

やったこと

最近さぼり気味だったプラグインの更新など。
Unite経由のNeoBundleInstallで日本語化けたー、と呟いたところ、作者のShougoさんからさくっと修正のご連絡が飛んで来た。相変わらず早い!
小さな部分は自分で修正して貢献できるようになりたい。

やろうと思っていたこと

ぷちプラグインというかキーマップ作り。
^V のキーで '' という文字列が入力できるのと似たかたちで、簡単に''などを入力できるようにするもの。探せばありそうな気もする。
他の作業で終ってしまったため、手をつけず。いつか挑戦するかもしれない。

ピザ

x4 多い!といいつつも、もくもくと食してあっという間に消滅。みんなはやい。

ハトクラ

気になっていたボードゲーム系なカードゲーム。ドミニオン系統らしい。ドミニオンも名前だけしか知らないけれど。
詳しくは http://hatokura.flipflops.jp/about

2回ほど参加させて貰ってルールは理解したつもり。
まだまだ分からないことも多いけれど楽しかった。かーどげーむばんざい。

曖昧な記憶によるサプライ
  • 1回目
    • 願いの泉 早馬 斥候 交易船 都市開発 御用商人 冒険者 錬金術 図書館 港町
  • 2回目
    • 願いの泉 早馬 城壁 斥候 交易船 破城槌 都市開発 歩兵大隊 図書館 錬金術

最後に

何らかの形で関わっていた皆様、お疲れ様でした&ありがとうございました!

vim の:filetype は ややこしい

:filetype関連の話題を見かけたので自分的な理解をめもめもしてみます。
おかしな所がありましたら見なかったことにしたり、あるいはご指摘いただけると助かります。

とりあえず困ったときは次のようにすると良いかなーと思っています。

" .vimrc 始めの辺りに書く
" 一旦ファイルタイプ関連を無効化する
filetype off
filetype plugin indent off

" いろいろ

" .vimrc 最後の辺りに書く
" ファイルタイプ関連を有効にする
filetype plugin indent on

特に

filetype off

を書き忘れてしまうと、システムのvimrcやexample_vimrc経由で意図せず :filetype on されていた場合に、ファイルタイプの検出がうまく動作しません。

on/offの書き方が少し違うのでややこしいなあと感じます。
それと、多重読み込み防止*1はありがたいのですが、そのおかげで必要なものが読み込まれないというのは悲しいなと感じています。

以下ファイルタイプ関連のコマンドとか

現状の確認

:filetype

ファイルタイプの自動検出、ファイルタイプ用の プラグインとインデント設定 を自動読み込みそれぞれの on/off を表示する。

:verbose :setlocal filetype?

現在開いているバッファのファイルタイプを表示する。
:verbose を付けなくてもファイルタイプを確認できますが、付けた場合は どこで設定されたのか も分かるので便利です。

有効にする

:filetype on

ファイルを開いたとき、ファイルタイプを自動検出するようになる。
最初に実行した時点で登録済みの検出方法が有効になる*2
実行後に登録された検出方法は利用されない。
また、on になっている場合はもう一度 :filetype on しても何も起こらない

:filetype plugin on

ファイルタイプが変更されたとき、ファイルタイプ用のプラグインを自動読み込みするようになる。

:filetype indent on

ファイルタイプが変更されたとき、ファイルタイプ用のインデント設定を自動読み込みするようになる。
このとき :filetype on も適用される。

:filetype plugin indent on

:filetype plugin on:filetype indent on を行った状態になる。
ファイルタイプの自動検出、ファイルタイプ用の プラグインとインデント設定 を自動読み込みするようになる。

無効にする

:filetype off

ファイルタイプの自動検出をしないようになる。
有効になっていた検出方法は無効化される。

:filetype plugin off

ファイルタイプ用のプラグインを自動読み込みしないようになる。

:filetype indent off

ファイルタイプ用のインデント設定を自動読み込みしないようになる。

:filetype plugin indent off

:filetype plugin off:filetype indent off を行った状態になる。
ファイルタイプ用の プラグインとインデント設定 を自動読み込みしないようになる。
ファイルタイプの自動検出についての設定は変化しない

そのほか

:filetype detect

現在開いているバッファのファイルタイプを自動検出する。

:setlocal filetype=SET_FILE_TYPE

現在開いているバッファのファイルタイプをSET_FILE_TYPEに設定する。

:setfiletype SET_FILE_TYPE

現在開いているバッファのファイルタイプをSET_FILE_TYPEに設定する。
このコマンドの内部では:setlocal filetype=SET_FILE_TYPE+色々をしている。
補完も利用できるので、こちらを使った方が良いのかもしれない。

関連ファイルとか

filetype.vim

ファイル名によるファイルタイプの決定方法を登録するスクリプト
$VIMRUNTIME 辺りに入っている。
:filetype onしたときに呼ばれる(はず)。

scripts.vim

ファイルの内容によるファイルタイプの決定方法を登録するスクリプト*3
$VIMRUNTIME 辺りに入っている。
filetype.vimの中で読み込まれる。

ftdetect/

ファイルタイプの自動検出するスクリプトを置く場所。
filetype.vimの中で読み込まれる。

ftplugin.vim, ftplugin/, ftoff.vim, ftplugof.vim

略。
スクリプト$VIMRUNTIME 辺りに入っている。

*1:登録処理は重い & autocmdの多重追加はよろしくない ので大切な処理だと思います

*2:実行時点で &rtp 内にあるもののみが登録される、と言うほうが正確か、でも雰囲気は伝わるはず

*3:名前が分かりにくいなあと。おそらく歴史的な?ものなのかと。詳しくは知らない

yokohama.vim #3 の旅

第4回目(最初は#0)の yokohama.vim に行って来ました。
http://atnd.org/events/28602
なんらかのかたちで関わった皆様、お疲れ様でした&ありがとうございました。

quickrun.vim の詳解

最初は id:thinca さんによる発表
拡張性が重視されており、設定を書くことで色々出来るとのこと。
設定が無い部分はfiletypとかを見て汎用的なものを使ってくれるので便利です。
最近調整中のhook機能は割り込み箇所全体で1つの設定を持っていて、hook間での連携がしやすいようになっているようです。

発表の際に利用したスクリプトは、当日のうちに vim-showtime としてgithubで公開されました。
gentooなる世界でプロジェクタを利用するのは何やら大変な模様です。

vi(m)を教える仕事をした話

次は id:guyon さんによる発表
viを教えることになり、vimを教えるように交渉したとのこと。
まずは素のvimを利用して貰い、こんな方法もあるよ、と少しずつ誘導?したそうです。
利用者の中にはvimを気に入ってくれた方がいたりと好評だったそうです。
教えた方々には vimmer ということを公表はしてないのだとか。

すいーつたいむ

カステラは節電うんぬんで販売自体お休みだったそうです。
代わりにドーナツをコンプリートしてきたとか。

ネタLT もてる方法

マルチユーザなLinux環境を活用して インテリジェント遠隔予測入力 をするというも
の。要root権限。
利用者はキーを押さなくても入力が完了するという。

さくせいたいむ

まずは.vimrcを整理しよう、と思ったら文字コードでハマった。
scriptencoding utf-8 な cp932 ファイルになっていて、pathの日本語が化けてました。
thincaさんに教えて貰いつつ、scriptencodingを止めて解決。ありがとうございました。
expand('hoge/ほげ') って展開失敗すると空になるのですね……

スクリプトのお手本として id:osyo-manga さんの unite-moo が紹介されていました。

残念ながら完成まで進めた方はいませんでした。

けんてい

検定のvimrc行数基準だと

  • 上級者(1,000行以上) 3名
  • 中級者(1,000行未満) 2名
  • 初心者(500行以下) のこり(9名?)

という構成でした。

問題の解説付きで進行し、

  • 表示行 と 論理行 は定義が無いので逆に取られることもある
  • mac標準のvimは has('mac') などが0を返すため、識別は unameDarwin かどうかで調べないとダメ

というお話を聞けました。
いくつかの上級問題は vim 直接関係ない……。
また、次の問題へ進むときに、回答終りますか?、的な表示が出てしまうことがいくらかありました。長押し説がありましたが原因は謎です。

懇親会

ピザやキムチ、羽の生える飲み物などを囲んでわいわい、
ソフトドリンクはあまり消費しないのだなあと。

そのほか

  • 補完関係で widemenu のお話
  • 連番とかで のお話
  • Atcoder 参加希望者が少なく断念
  • 脅威の静寂率
  • やっぱりmac率高い
  • はるばる仙台から来た方も

などなど。

windowsで(も)vimを利用しているという方が結構いたので、encodingはどうしているのか聞けばよかった、と後から思い出すのでした。
弄らない方がよさそうだけど、環境間で設定を流用するときはutf-8の方が便利かなと、行ったりきたり。

次回の開催も楽しみにしています。