秋のvim祭り rubyを添えて
DESCRIPTION
vimの基礎から各種プラグインの紹介をします。 atcoderの簡単な問題をrubyで解きながらvimの使い方に慣れようというものですTRANSCRIPT
![Page 1: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/1.jpg)
2014/10/07 ogura01@nop
![Page 2: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/2.jpg)
ogura01@nopper
Vimmer / Rubist / C++er / 黒魔術師
嫁は電ちゃんです
![Page 3: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/3.jpg)
VimとRubyに触れてもらって中毒にさせる
たまにC++もでてくる
![Page 5: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/5.jpg)
Ruby をインストール (2.0系がいいかも)
Windows http://www.artonx.org/data/asr/
Linux yum とか apt-get でおk
![Page 6: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/6.jpg)
kaoriya (windows)http://www.kaoriya.net/
ogura-vim-builder (linux)https://raw.githubusercontent.com/nop7/problems/master/settings/ogura01/viminstaller.sh wget ↑ chmod +x viminstaller.sh && ./viminstaller.sh
![Page 7: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/7.jpg)
この設定ファイルを使います丸ごとコピーするのではなく、解説があるたびに自分のvimrcに移してください
https://github.com/nop7/problems/blob/master/settings/ogura01/_1011_vimrc
![Page 8: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/8.jpg)
インストールお願いします。
話を聞きながら進めちゃってくださいね
あ!忘れてました、Gitも入れといてください
![Page 9: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/9.jpg)
プラグインいっぱい入れるぜ、ひゃっほー
・・・の前に
プラグインを管理するプラグインを召喚!
![Page 10: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/10.jpg)
GitHubと連携してプラグイン管理できる!!設定ファイルにリポジトリを書くだけ!!
アップデートもコマンド一発
![Page 11: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/11.jpg)
作業だよ!
Windowsの場合 C:/Users/ユーザ名/vimfiles/bundle/ ↑ に neobundleを解凍したやつを置く
Linuxの場合 neobundleのgithubを見たほうがいいよ
![Page 12: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/12.jpg)
Vimの設定ファイルがvimrcです! Linuxなら ~/.vimrc
Windowsなら C:/Users/ユーザ名/_vimrc
そう、これが闇への入り口だったのです
![Page 13: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/13.jpg)
![Page 14: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/14.jpg)
とりあずcolorschemeだけ
![Page 15: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/15.jpg)
最後のこれも入れておくよ!
![Page 16: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/16.jpg)
windowsはgvim使うといいと思いますgvimのGUI関係は別途設定が必要なんです
![Page 17: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/17.jpg)
hybridプラグインが自動でインストールされて背景が黒くなりましたか?
windowsの人はgvimrcにあるcolorschememorningをコメントアウトしようね
![Page 18: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/18.jpg)
![Page 19: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/19.jpg)
![Page 20: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/20.jpg)
いっぱい移動するときはSHIFTを押しながら
いちいちgtするのはめんどいので
![Page 21: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/21.jpg)
Vimを起動したらチュートリアルをやりましょう
:Tutorial と打ちましょう
![Page 22: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/22.jpg)
ファイルの種類ごとに設定分けできるんです vimfiles/ftplugin/ruby.vim
![Page 23: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/23.jpg)
ここからの設定は・・・スライドに載せません
ogura01のvimrc見てね
https://github.com/nop7/problems/blob/master/settings/ogura01/_1011_vimrc
https://github.com/nop7/problems/blob/master/settings/ogura01/_1011_gvimrc
![Page 24: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/24.jpg)
NeoBundle “thica/vim-quickrun” filetypeに応じて、バッファをビルド & 実行
NeoBundle “osyo/shabadou.vim” quickrunの色んなところに処理を挟めるやつ
実行中はSAN値!ピンチ!するなど
![Page 25: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/25.jpg)
![Page 26: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/26.jpg)
入出力 STDIN.gets # 1行とってくる puts :hogehoge # 1行出力 :hogehogeはシンボルと呼ぶ. “hogehoge”のハッシュ値みたいなもん
配列を作る[ 1, 2, 3, 4] とか [1, “hoge”, :hello] とか
![Page 27: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/27.jpg)
型変換 ‘123’.to_i # 整数値型に変換 123.to_s # 文字列型に変換
破壊的メソッド内部的に値が書き換わるメソッド String#chomp … 非破壊的メソッド String#chomp! … 破壊的メソッド
![Page 28: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/28.jpg)
RUBYで解こう!
STDIN.getsで1行取れます
QuickRunで入力ファイルを指定するには? :QuickRun –input “ファイル名”
ちなみにQuickRunは \r で実行できるよ
![Page 29: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/29.jpg)
puts STDIN.gets.capitalize
![Page 30: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/30.jpg)
補完プラグイン
NeoBundle 'Shougo/neocomplete.vim'
![Page 31: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/31.jpg)
定型文挿入だよ!
NeoBundle ‘Shougo/neosnippet.vim’ “ スニペット補完
NeoBundle 'Shougo/neosnippet-snippets' " スニペット集
cpp.snipとかftごとにオリジナルの定型文を作れるよ
![Page 32: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/32.jpg)
これが
こうじゃ
![Page 33: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/33.jpg)
リファレンス参照だよ!
NeoBundle 'thinca/vim-ref ‘
rubyのリファレンス > gem install refe2
> bitclust setup
![Page 34: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/34.jpg)
![Page 35: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/35.jpg)
:Ref refe Array#combination #=> メソッドに直行
:Ref refe Array#c #=> メソッド一覧がでる
:Ref refe Array #=> クラスの説明がみられる
Rubyのコード上でカーソルを合わせて+ を押す!
![Page 36: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/36.jpg)
NeoBundle ‘itchyny/lightline.vim’
![Page 37: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/37.jpg)
NeoBundle ‘osyo-manga/vim-watchdogs’
静的解析ツール保存する度に非同期で実行してくれる
![Page 38: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/38.jpg)
rubyの静的解析ツール一般的なコーディング規約に沿ってるかチェック
gem install rubocop
![Page 39: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/39.jpg)
![Page 40: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/40.jpg)
n = STDIN.gets.to_i
times = n.times.map { STDIN.gets.to_i }
![Page 41: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/41.jpg)
http://arc029.contest.atcoder.jp/submissions/247114
肉焼き器1 = select { i番目のビットが立ってる }
肉焼き器2 = reject { i番目のビットが立ってる }
![Page 42: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/42.jpg)
関数型的配列操作 select … マッチした要素だけでNew配列を作る reject … マッチした要素を外してNew配列 reduce … 配列を操作する reduce(&:+) reduce {|a, b| a+b }
![Page 43: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/43.jpg)
vim界のgoogle検索 Unite file_mru … 最近開いたファイル
Unite buffer … 今開いているファイル Unite everything !?
![Page 44: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/44.jpg)
![Page 45: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/45.jpg)
Everythingをインストールしてみよ es.exeも別途ダウンロードしてパス通そうね
ogura01では “,a” で発動するよ!
![Page 46: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/46.jpg)
![Page 47: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/47.jpg)
![Page 48: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/48.jpg)
補完とも連携できるんです!
![Page 49: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/49.jpg)
![Page 50: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/50.jpg)
ヒント: UnionFind
スニペットに登録しておこう
![Page 51: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/51.jpg)
![Page 52: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/52.jpg)
木DP
![Page 53: 秋のVim祭り Rubyを添えて](https://reader034.vdocuments.site/reader034/viewer/2022042512/559436021a28ab8a1a8b47ba/html5/thumbnails/53.jpg)