SlideShare una empresa de Scribd logo
1 de 34
初心者Vimmerによる
Vim + Rails開発
開発Gr. 菊池大輔
@d_hero
この勉強会の内容
• Vimってどんなエディタ?
• Vimで便利なPlugin(主にRailsで)
このテーマのきっかけ その1
• 弊社のデザイナー I さん
「菊池さん、そのエディタ、
使いづらそっすね!」
そう思ってた時期が僕にもありました。。。
でもちょっと待ってくれ!
このテーマのきっかけ その2
• パートナー I 社のFさん
菊池
「コマンドで、ぱぱっと開けるんですよー」
Fさん
「・・・ファッ!!?」
Vimとは
• 「Vi」から派生したテキストエディタ
– Vi:VIsual editor、Visual Interface
• マウスを使わない!
• カーソルキーを使わない!
• コマンドによってテキスト編集を行う
– Vim
• 最初は「Vi IMitation(Viの模倣)」
• 後に「Vi IMproved(Viの改良)」
ViとVimの違い
設定ファイルを編集して自分好みに!
• 「~/.vimrc」に書きこむ
– 各種Pluginを導入可能!
– キーマップの指定が可能!
– 文字色を変更可能!
• 「カラースキーマ」の導入
Vimを使うには
• UNIX系OS
– 「vi 」か「vim」コマンドを打つだけ。
• Windows
– 仮想マシンでUNIX系OSを使う(僕はこれ)
• vagrantを使ってちゃちゃっと用意
– GVim
• GUI用のVim
Vimの画面
文字色を変えると・・・
Vimの「モード」
コマンドモード
(起動時はここ)
挿入モード ビジュアルモード
ESCESC
i, a, o等 v, V等I等
行ごとのコピー
削除等
切り取り、コピー普通の入力
テキストを書き始めるには
• コマンドモードで、以下のコマンド
(挿入モードに移動)
– i: カーソル位置から入力開始
– a:カーソル位置の後から入力開始
– o:1行挿入して、その行から入力開始
– R:上書き開始
• 挿入モードからコマンドモードに戻る
– ESCキー
カット、コピー、ペースト
コマンドモードで
• x: 入力位置の1文字切り取り
• dd: 1行切り取り
• yy:1行コピー
• D:入力位置以降の切り取り
• p:貼り付け
[数字]x, [数字]dd, [数字]yyで、
複数文字、行で編集可能
コマンドモードで出来ること
• u:アンドゥ
• Ctrl+R:リドゥ
• 文字列検索
– 「/(スラッシュ)文字列」で
• 保存、vimの終了
– 「:w」で保存
– 「:q」で終了(「:q!」で保存せず強制終了)
– 「:wq」で保存して終了(ZZでも可)
カーソルの移動
• コマンドモード、ビジュアルモード
• カーソルキーも使える、けど・・・
上:k
下:j
右:l(エル)左:h
右手のホームポジションから
動かさなくてよい!
[数字]+[コマンド]で
その数だけ移動
「^」、「$」:行頭、行末
ビジュアルモード
マウスのドラッグで選択するのと同じ機能
• v:領域選択
• V:行選択
• Ctrl-V:矩形選択
選択した後
• d:切り取り
• y:コピー
他に・・・
• :new ファイル名
– 新しいウィンドウを開く!(水平方向)
• :vnew ファイル名
– 新しいウィンドウを開く!(垂直方向)
• Ctrl-wの後にk,j,h,l(エル)のいずれか
– 上下左右のウィンドウへの移動
• 他のファイルを見ながらの編集が可能
ウィンドウを開いた画面
Ctrl+wの後に
j(下)入力
タブ機能
• :tabnew ファイル名
– 新しいタブでファイルを編集する
• [数字]gtで、指定した番号のタブに移動
タブの画面
1gtで移動
2gtで移動
メリットとデメリット
• メリット
– キーボードだけで編集が完結する
– 慣れると編集が速くなる・・・かも。
• デメリット
– 他のエディタで操作を間違う危険性
• 編集が終わってESCキーを押す
(Excelのセルの修正が飛ぶ)
• 保存しようとして「:w」と入力、など
Railsによる開発をするために
• VimにPluginを導入する!
– ディレクトリツリーを表示
– 特定のモデルを指定して表示
• Pluginを管理するPlugin
– vundler
vundlerのインストール
• gitでcloneするだけ
git clone 
https://gitbub.com/gmarik/vundle.git 
~/.vim/vundle.git
設定ファイルの編集
• 「~/.vimrc」に記述
filetype off
set rtp+=~/.vim/vundle.git/
call vundle#rc()
Bundle 'gmarik/vundle'
Bundle 'tpope/vim-rails‘
filetype plugin indent on
vundler
初期化
インストール
するPlugin
Bundleコマンド
• Bundle 'tpope/vim-rails‘
– Github上のリポジトリから取得
• Bundle ‘dbext.vim’
– vim-scripts上のリポジトリから取得
• Bundle ‘git://repository_url’
– それ以外のgitリポジトリから取得
Pluginのインストール
• インストール
– Vimを開いて「:BundleInstall」コマンド実行
• 再インストール
– 「:BundleInstall!」コマンド実行
Rails開発で使えるPlugin
• rails.vim
– MVC間を簡単に行き来する
• unite-rails
– 一覧表示をさせる
• The-NERD-tree
– ソースツリーを表示
rails.vim
• .vimrcで「Bundle ‘tpope/vim-rails’」
• vimでrails開発をする、といったらコレ!
• controllerのアクションの場所で「:R」
– 関連するビューを開く
• 「:Rmodel [モデル名]」
• 「:Rview [ビューのパス]」
• 「:Rcontroller [コントローラ名]」
unite-rails
• ファイルを一覧表示&絞り込みしてくれる
• 「:Unite rails/model」
• 「:Unite rails/controller」
• 「:Unite rails/view」
などなど
unite-railsの画面
The-NERD-tree
• 「:NERDTree」コマンド
– ソースツリーを表示
キーマップを変えておく
• 「:Rmodel」 → 「:Rm」
• 「:NERDTree」 → 「:Rt」
• 「:Unite rails/model」 → Ctrl-Hを2回入力
良く使うコマンドを簡単にしておくことで、
更に効率が高まる!
その他にも
• Vim上でGitと連携
– 「git status」や「git-blame」を見やすく
– Vimからコミットもできる!
• 入力補完
– 入力途中に候補を出す
まとめ
• Vimのコマンドを覚えるのはちょっと大変
– 作業効率面では良いのでは
– 自分好みにカスタムしよう!!
• Railsでの開発のための機能
– Pluginを入れる毎に新しい世界が。。。
ご静聴ありがとうございました。

Más contenido relacionado

La actualidad más candente

neobundle.vimについて+おまけ
neobundle.vimについて+おまけneobundle.vimについて+おまけ
neobundle.vimについて+おまけShougo
 
Unite vim
Unite vim Unite vim
Unite vim Shougo
 
うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?Masahiro Sano
 
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)deris0126
 
Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識alwei
 
Vim = VM
Vim = VMVim = VM
Vim = VMShougo
 
すごいVimでhaskellを書こう@なごやまつり
すごいVimでhaskellを書こう@なごやまつりすごいVimでhaskellを書こう@なごやまつり
すごいVimでhaskellを書こう@なごやまつりcohama
 
VimとRubyのアツい関係
VimとRubyのアツい関係VimとRubyのアツい関係
VimとRubyのアツい関係Misao X
 
Vim の開発環境
Vim の開発環境Vim の開発環境
Vim の開発環境eagletmt
 
2021 01-25 lt sho kato
2021 01-25 lt sho kato2021 01-25 lt sho kato
2021 01-25 lt sho katokatosho1
 
Flash Playerの作り方
Flash Playerの作り方Flash Playerの作り方
Flash Playerの作り方Yu Kobayashi
 
「とても小さいVim」vim tiny
「とても小さいVim」vim tiny「とても小さいVim」vim tiny
「とても小さいVim」vim tinygu4
 

La actualidad más candente (20)

neobundle.vimについて+おまけ
neobundle.vimについて+おまけneobundle.vimについて+おまけ
neobundle.vimについて+おまけ
 
Unite vim
Unite vim Unite vim
Unite vim
 
うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?
 
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
 
Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識
 
Vim = VM
Vim = VMVim = VM
Vim = VM
 
エディタ戦争
エディタ戦争エディタ戦争
エディタ戦争
 
すごいVimでhaskellを書こう@なごやまつり
すごいVimでhaskellを書こう@なごやまつりすごいVimでhaskellを書こう@なごやまつり
すごいVimでhaskellを書こう@なごやまつり
 
VimとRubyのアツい関係
VimとRubyのアツい関係VimとRubyのアツい関係
VimとRubyのアツい関係
 
Vimはこわくない
VimはこわくないVimはこわくない
Vimはこわくない
 
Vim の開発環境
Vim の開発環境Vim の開発環境
Vim の開発環境
 
anyframeを使おう
anyframeを使おうanyframeを使おう
anyframeを使おう
 
Tdd vim
Tdd vimTdd vim
Tdd vim
 
anyframeを使おう
anyframeを使おうanyframeを使おう
anyframeを使おう
 
rucs_vim LT
rucs_vim LTrucs_vim LT
rucs_vim LT
 
Vimの魔術
Vimの魔術Vimの魔術
Vimの魔術
 
2021 01-25 lt sho kato
2021 01-25 lt sho kato2021 01-25 lt sho kato
2021 01-25 lt sho kato
 
em-dosbox
em-dosboxem-dosbox
em-dosbox
 
Flash Playerの作り方
Flash Playerの作り方Flash Playerの作り方
Flash Playerの作り方
 
「とても小さいVim」vim tiny
「とても小さいVim」vim tiny「とても小さいVim」vim tiny
「とても小さいVim」vim tiny
 

Destacado

Railsチュートリアルの歩き方 (第4版)
Railsチュートリアルの歩き方 (第4版)Railsチュートリアルの歩き方 (第4版)
Railsチュートリアルの歩き方 (第4版)Yohei Yasukawa
 
Railsチュートリアルの歩き方 (第3版)
Railsチュートリアルの歩き方 (第3版)Railsチュートリアルの歩き方 (第3版)
Railsチュートリアルの歩き方 (第3版)Yohei Yasukawa
 
Fluentd勉強会 (導入編 TreasureData活用)
Fluentd勉強会 (導入編 TreasureData活用)Fluentd勉強会 (導入編 TreasureData活用)
Fluentd勉強会 (導入編 TreasureData活用)takeuchi-tk
 
リーダブルコード 1.0'
リーダブルコード 1.0'リーダブルコード 1.0'
リーダブルコード 1.0'Yamamura Takashi
 
仮想マシンとVagrant + Vagrant 1.5
仮想マシンとVagrant + Vagrant 1.5仮想マシンとVagrant + Vagrant 1.5
仮想マシンとVagrant + Vagrant 1.5Daisuke Kikuchi
 
Ipros techmeetup 20131218_scala_handson
Ipros techmeetup 20131218_scala_handsonIpros techmeetup 20131218_scala_handson
Ipros techmeetup 20131218_scala_handsonhonda-y
 
戦国時代を生きた「黒田官兵衛」とWeb時代を生きる「エンジニア」
戦国時代を生きた「黒田官兵衛」とWeb時代を生きる「エンジニア」戦国時代を生きた「黒田官兵衛」とWeb時代を生きる「エンジニア」
戦国時代を生きた「黒田官兵衛」とWeb時代を生きる「エンジニア」Junya Yamaguchi
 
インフラエンジニアLv1がWordPressまわりに色々してみた話
インフラエンジニアLv1がWordPressまわりに色々してみた話インフラエンジニアLv1がWordPressまわりに色々してみた話
インフラエンジニアLv1がWordPressまわりに色々してみた話Daisuke Kikuchi
 
CSS Nite LP38に行ってきた
CSS Nite LP38に行ってきたCSS Nite LP38に行ってきた
CSS Nite LP38に行ってきたYasuyuki Fujikawa
 
Hubotを使ってbotをつくろう!
Hubotを使ってbotをつくろう!Hubotを使ってbotをつくろう!
Hubotを使ってbotをつくろう!Daisuke Kikuchi
 
Vagrant勉強会アップロード用
Vagrant勉強会アップロード用Vagrant勉強会アップロード用
Vagrant勉強会アップロード用takeuchi-tk
 
Fluentd+elasticsearch+kibana(fluentd編)
Fluentd+elasticsearch+kibana(fluentd編)Fluentd+elasticsearch+kibana(fluentd編)
Fluentd+elasticsearch+kibana(fluentd編)Daisuke Kikuchi
 
Fluentdで本番環境を再現
Fluentdで本番環境を再現Fluentdで本番環境を再現
Fluentdで本番環境を再現Hiroshi Toyama
 
Markdownでドキュメント作成
Markdownでドキュメント作成Markdownでドキュメント作成
Markdownでドキュメント作成Yasuyuki Fujikawa
 
Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例Taro L. Saito
 

Destacado (20)

Railsチュートリアルの歩き方 (第4版)
Railsチュートリアルの歩き方 (第4版)Railsチュートリアルの歩き方 (第4版)
Railsチュートリアルの歩き方 (第4版)
 
Railsチュートリアルの歩き方 (第3版)
Railsチュートリアルの歩き方 (第3版)Railsチュートリアルの歩き方 (第3版)
Railsチュートリアルの歩き方 (第3版)
 
Fluentd勉強会 (導入編 TreasureData活用)
Fluentd勉強会 (導入編 TreasureData活用)Fluentd勉強会 (導入編 TreasureData活用)
Fluentd勉強会 (導入編 TreasureData活用)
 
Fluentd
FluentdFluentd
Fluentd
 
リーダブルコード 1.0'
リーダブルコード 1.0'リーダブルコード 1.0'
リーダブルコード 1.0'
 
仮想マシンとVagrant + Vagrant 1.5
仮想マシンとVagrant + Vagrant 1.5仮想マシンとVagrant + Vagrant 1.5
仮想マシンとVagrant + Vagrant 1.5
 
Ipros techmeetup 20131218_scala_handson
Ipros techmeetup 20131218_scala_handsonIpros techmeetup 20131218_scala_handson
Ipros techmeetup 20131218_scala_handson
 
Vagrant
VagrantVagrant
Vagrant
 
Fluentd introduction at ipros
Fluentd introduction at iprosFluentd introduction at ipros
Fluentd introduction at ipros
 
戦国時代を生きた「黒田官兵衛」とWeb時代を生きる「エンジニア」
戦国時代を生きた「黒田官兵衛」とWeb時代を生きる「エンジニア」戦国時代を生きた「黒田官兵衛」とWeb時代を生きる「エンジニア」
戦国時代を生きた「黒田官兵衛」とWeb時代を生きる「エンジニア」
 
インフラエンジニアLv1がWordPressまわりに色々してみた話
インフラエンジニアLv1がWordPressまわりに色々してみた話インフラエンジニアLv1がWordPressまわりに色々してみた話
インフラエンジニアLv1がWordPressまわりに色々してみた話
 
CSS Nite LP38に行ってきた
CSS Nite LP38に行ってきたCSS Nite LP38に行ってきた
CSS Nite LP38に行ってきた
 
MBaaS - Parse
MBaaS - ParseMBaaS - Parse
MBaaS - Parse
 
Hubotを使ってbotをつくろう!
Hubotを使ってbotをつくろう!Hubotを使ってbotをつくろう!
Hubotを使ってbotをつくろう!
 
Vagrant勉強会アップロード用
Vagrant勉強会アップロード用Vagrant勉強会アップロード用
Vagrant勉強会アップロード用
 
Fluentd+elasticsearch+kibana(fluentd編)
Fluentd+elasticsearch+kibana(fluentd編)Fluentd+elasticsearch+kibana(fluentd編)
Fluentd+elasticsearch+kibana(fluentd編)
 
Fluentdで本番環境を再現
Fluentdで本番環境を再現Fluentdで本番環境を再現
Fluentdで本番環境を再現
 
Enjoy the Ansible
Enjoy the AnsibleEnjoy the Ansible
Enjoy the Ansible
 
Markdownでドキュメント作成
Markdownでドキュメント作成Markdownでドキュメント作成
Markdownでドキュメント作成
 
Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例
 

初心者Vimmerによるvim+rails開発