SlideShare a Scribd company logo
1 of 56
Download to read offline
Vimで開発するならこれだけはいれとけ
        2012Q1



      京都Vim勉強会#1
       2012-03-24
お前誰よ
●
    稲田 尚也 (@naoina)
●
    Pythonista
●
    Arch Linux
アジェンダ
●
    2012Q1このプラグインが便利ランキング第1位
●
    2012Q1このプラグインが便利ランキング第2位
●
    2012Q1このプラグインが便利ランキング第3位
●
    2012Q1このプラグインが便利ランキング第4位
●
    2012Q1このプラグインが便利ランキング第5位
2012Q1このプラグインが便利ランキング第1位
2012Q1このプラグインが便利ランキング第1位




    syntastic
syntastic
●
    構文チェッカー
●
    表示がナウい!
●
    とにかく対応しているファイルタイプが多い!
syntastic




表示がナウい!
syntastic
syntastic



 とにかく対応している
ファイルタイプが多い!
syntastic
対応しているファイルタイプ一覧
●
    AppleScript         ●
                            haXe         ●
                                             Rust
●
    C                   ●
                            HTML         ●
                                             Sass/SCSS
●
    CoffeeScript        ●
                            JavaScript   ●
                                             Scala
●
    C++                 ●
                            JSON         ●
                                             shell
●
    CSS                 ●
                            LESS         ●
                                             Tcl
●
    Cucumber            ●
                            Lua          ●
                                             Tex
●
    CUDA                ●
                            Matlab       ●
                                             Vala
●
    Docbk               ●
                            Nasm         ●
                                             XHTML
●
    Erlang              ●
                            OCaml        ●
                                             XML
●
    eRuby               ●
                            Perl         ●
                                             XSLT
●
    Fortran             ●
                            PHP          ●
                                             YAML
●
    Gentoo Metadata     ●
                            Puppet       ●
                                             Z80
●
    Go                  ●
                            Python       ●
                                             ZPT
●
    Haml                ●
                            reST
●
    Haskell             ●
                            Ruby
使い方




インストールして
使い方




ファイルを保存すると
使い方


 ファイルタイプに
応じた適切なチェック
  が自動で走る
使い方




すごく簡単!
使い方


      ただし、ファイルタイプごとに
        外部のチェッカーが必要

   e. g.
     Cならgcc、PHPならphpインタプリタなど
使い方


 どの外部チェッカーが必要かは
今のところソースを見るしかない

syntastic/syntax_checkers/*.vim
使い方




デモ
syntastic




https://github.com/scrooloose/syntastic
2012Q1このプラグインが便利ランキング第2位
2012Q1このプラグインが便利ランキング第2位




neocomplcache-snippets-complete
neocomplcache-snippets-complete
●
    コードスニペットプラグイン
●
    スニペット名がNeocomplcacheで補完できる
●
    要Neocomplcache
使い方
1. .vimrcの設定

.vimrc
 imap <C-k> <Plug>(neocomplcache_snippets_expand)
使い方
2. ファイルの編集でキーワードを入力してC-k

% vim a.c

a.c
main ←ここまで入力してC-kをタイプすると

  ↓ こう展開される

int main(int argc, char const* argv[])
{
    ${0}
    return 0;
}
使い方




デモ
使い方




:help neocomplcache-snippets-complete-snippet-completion
neocomplcache-snippets-complete



https://github.com/Shougo/neocomplcache-
            snippets-complete
2012Q1このプラグインが便利ランキング第3位
2012Q1このプラグインが便利ランキング第3位




 template.vim
template.vim
●
    テンプレートファイルの自動読み込み
●
    読み込みする際に任意のコマンドが実行できる
    –   キーワードでの置換などができる
使い方
1. テンプレートファイルの作成

 % mkdir -p ~/.vim/template
 % vim ~/.vim/template/template.py


template.py

 # -*- coding: utf-8 -*-

 def main():
     pass

 if __name__ == '__main__':
     main()
使い方
2. 新しいファイルか空のファイルの編集

% vim foo.py
使い方
3. 新しいファイルか空のファイルの編集

% vim foo.py


     ↓
# -*- coding: utf-8 -*-

def main():
    pass

if __name__ == '__main__':
    main()
ちょっと解説
●
    デフォルトのテンプレートファイルのベースディ
    レクトリ
    –   &runtimepath (~/.vimなど)
●
    デフォルトのテンプレートファイルのパターン
    –   template/**
●
    デフォルトのテンプレートファイルのファイル名
    でワイルドカードとして扱う部分
    –   template
ちょっと解説



ベースディレクトリ
~/.vim
ちょっと解説



テンプレートファイルのパターン
~/.vim/template/**


 ↓
~/.vim/template/template.py
ちょっと解説
ファイル名のワイルドカードとして扱う部分

~/.vim/template/template.py

↓
template/template.py


↓
*/*.py
ちょっと解説
ファイル名とのマッチング
% vim foo.py   # /home/naoina/foo.py




           *               /
                                 *     .py

   /home/naoina /              foo     .py
任意のコマンドの実行
任意のコマンドの実行




:help template@ja
template.vim




https://github.com/thinca/vim-template
2012Q1このプラグインが便利ランキング第4位
2012Q1このプラグインが便利ランキング第4位




   Neobundle
Neobundle
●
    Vim plugin manager
●
    git、mercurial、subversionのリポジトリに
    あるプラギンをインストールできる
●
    vim.orgにしかないプラギンは対象ではないの
    で:GLVSとかで頑張る
使い方
1. NeoBundleのインストール

% mkdir -p ~/.vim/bundle
% cd ~/.vim/bundle
% git clone git://github.com/Shougo/neobundle.vim.git
使い方
2. .vimrcの設定

set nocompatible
filetype plugin indent off

if has('vim_starting')
  set runtimepath+=~/.vim/bundle/neobundle.vim/
  call neobundle#rc(expand('~/.vim/bundle/'))
endif
NeoBundle 'git://github.com/Shougo/neobundle.vim.git'
NeoBundle 'git://github.com/naoina/neocomplcache.git'
NeoBundle 'https://bitbucket.org/anyakichi/vim-csutil'
NeoBundle 'git://github.com/kana/vim-surround.git'

filetype plugin indent on
使い方
3. .vimrcを読み込み直して:NeoBundleInstall

:source ~/.vimrc


       ↓
:NeoBundleInstall
使い方
●
    runtimepathも良きに計らってくれるため、
    あとは何もしなくて良い
●
    :helptagsも実行してくれる
●
    アップデートは:NeoBundleInstall!
Neobundle




https://github.com/Shougo/neobundle.vim
Neobundle




https://github.com/Shougo/neobundle.vim
2012Q1このプラグインが便利ランキング第5位
2012Q1このプラグインが便利ランキング第5位




    quickrun
quickrun
●
    編集中のファイルの内容を実行できる
●
    ファイルを保存する必要がない
●
    直接インタプリタを実行するより便利
    –   補完とか補完とか補完が効くから
使い方



  インストールして
<Leader>rを叩けばいい
使い方




デモ
quickrun




https://github.com/thinca/vim-quickrun
まとめ



   プラグインを入れて
Vimをもっと便利にしよう

More Related Content

What's hot

Pub/Sub model, msm, and asio
Pub/Sub model, msm, and asioPub/Sub model, msm, and asio
Pub/Sub model, msm, and asioTakatoshi Kondo
 
20130228 Goノススメ(BPStudy #66)
20130228 Goノススメ(BPStudy #66)20130228 Goノススメ(BPStudy #66)
20130228 Goノススメ(BPStudy #66)Yoshifumi Yamaguchi
 
CppCon2016 report and Boost.SML
CppCon2016 report and Boost.SMLCppCon2016 report and Boost.SML
CppCon2016 report and Boost.SMLTakatoshi Kondo
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミングPreferred Networks
 
Gws 20130315 gradle_handson
Gws 20130315 gradle_handsonGws 20130315 gradle_handson
Gws 20130315 gradle_handsonNobuhiro Sue
 
サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会slankdev
 
LibPGEN 1st Step Guide
LibPGEN 1st Step GuideLibPGEN 1st Step Guide
LibPGEN 1st Step Guideslankdev
 
Great Ideas in GraalVM
Great Ideas in GraalVMGreat Ideas in GraalVM
Great Ideas in GraalVMKoichi Sakata
 
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼうGraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼうKoichi Sakata
 
SmalltalkBoltでUFFI入門
SmalltalkBoltでUFFI入門SmalltalkBoltでUFFI入門
SmalltalkBoltでUFFI入門Masashi Umezawa
 
Seurity Camp Award 2016
Seurity Camp Award 2016 Seurity Camp Award 2016
Seurity Camp Award 2016 slankdev
 
OSC2016 Tokyo/Spring セミナー資料
OSC2016 Tokyo/Spring セミナー資料OSC2016 Tokyo/Spring セミナー資料
OSC2016 Tokyo/Spring セミナー資料slankdev
 
OSC 2016 Hokkaido セミナー資料
OSC 2016 Hokkaido セミナー資料OSC 2016 Hokkaido セミナー資料
OSC 2016 Hokkaido セミナー資料slankdev
 
Movable Type 6 Overview SPEC2
Movable Type 6 Overview SPEC2Movable Type 6 Overview SPEC2
Movable Type 6 Overview SPEC2Yuji Takayama
 
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月Takashi Someda
 
How do you like jhc?
How do you like jhc?How do you like jhc?
How do you like jhc?Kiwamu Okabe
 

What's hot (20)

Pub/Sub model, msm, and asio
Pub/Sub model, msm, and asioPub/Sub model, msm, and asio
Pub/Sub model, msm, and asio
 
20130228 Goノススメ(BPStudy #66)
20130228 Goノススメ(BPStudy #66)20130228 Goノススメ(BPStudy #66)
20130228 Goノススメ(BPStudy #66)
 
CppCon2016 report and Boost.SML
CppCon2016 report and Boost.SMLCppCon2016 report and Boost.SML
CppCon2016 report and Boost.SML
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミング
 
Gws 20130315 gradle_handson
Gws 20130315 gradle_handsonGws 20130315 gradle_handson
Gws 20130315 gradle_handson
 
サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会
 
LibPGEN 1st Step Guide
LibPGEN 1st Step GuideLibPGEN 1st Step Guide
LibPGEN 1st Step Guide
 
Great Ideas in GraalVM
Great Ideas in GraalVMGreat Ideas in GraalVM
Great Ideas in GraalVM
 
Groovyの紹介20130323
Groovyの紹介20130323Groovyの紹介20130323
Groovyの紹介20130323
 
Rust-DPDK
Rust-DPDKRust-DPDK
Rust-DPDK
 
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼうGraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
 
SmalltalkBoltでUFFI入門
SmalltalkBoltでUFFI入門SmalltalkBoltでUFFI入門
SmalltalkBoltでUFFI入門
 
Seurity Camp Award 2016
Seurity Camp Award 2016 Seurity Camp Award 2016
Seurity Camp Award 2016
 
TruffleSqueakの紹介
TruffleSqueakの紹介TruffleSqueakの紹介
TruffleSqueakの紹介
 
Go
GoGo
Go
 
OSC2016 Tokyo/Spring セミナー資料
OSC2016 Tokyo/Spring セミナー資料OSC2016 Tokyo/Spring セミナー資料
OSC2016 Tokyo/Spring セミナー資料
 
OSC 2016 Hokkaido セミナー資料
OSC 2016 Hokkaido セミナー資料OSC 2016 Hokkaido セミナー資料
OSC 2016 Hokkaido セミナー資料
 
Movable Type 6 Overview SPEC2
Movable Type 6 Overview SPEC2Movable Type 6 Overview SPEC2
Movable Type 6 Overview SPEC2
 
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
MessagePack RPC によるドキドキ非同期通信 @関ジャバ 2012年度8月
 
How do you like jhc?
How do you like jhc?How do you like jhc?
How do you like jhc?
 

Viewers also liked

Vimから見たemacs
Vimから見たemacsVimから見たemacs
Vimから見たemacsShougo
 
Python Kyoto study LT
Python Kyoto study LTPython Kyoto study LT
Python Kyoto study LTNaoya Inada
 
Python Kyoto study
Python Kyoto studyPython Kyoto study
Python Kyoto studyNaoya Inada
 
Emacsとキーボード
EmacsとキーボードEmacsとキーボード
EmacsとキーボードHiroaki Nagata
 
エディタ戦争のお話
エディタ戦争のお話エディタ戦争のお話
エディタ戦争のお話nasa9084
 
うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?Masahiro Sano
 
通常の3倍の速度で プログラミング!? 「 Emacsキーバインドのすすめ」
通常の3倍の速度でプログラミング!?「 Emacsキーバインドのすすめ」通常の3倍の速度でプログラミング!?「 Emacsキーバインドのすすめ」
通常の3倍の速度で プログラミング!? 「 Emacsキーバインドのすすめ」KinkumaDesign
 
Emacsいじめの現場
Emacsいじめの現場Emacsいじめの現場
Emacsいじめの現場Eric Sartre
 
エディタじゃない"Emacsの使い方
エディタじゃない"Emacsの使い方エディタじゃない"Emacsの使い方
エディタじゃない"Emacsの使い方Akihiko Horiuchi
 

Viewers also liked (12)

kyoto vim#1
kyoto vim#1kyoto vim#1
kyoto vim#1
 
Vimから見たemacs
Vimから見たemacsVimから見たemacs
Vimから見たemacs
 
dvcs-kyoto
dvcs-kyotodvcs-kyoto
dvcs-kyoto
 
Python Kyoto study LT
Python Kyoto study LTPython Kyoto study LT
Python Kyoto study LT
 
Python Kyoto study
Python Kyoto studyPython Kyoto study
Python Kyoto study
 
rucs_vim LT
rucs_vim LTrucs_vim LT
rucs_vim LT
 
Emacsとキーボード
EmacsとキーボードEmacsとキーボード
Emacsとキーボード
 
エディタ戦争のお話
エディタ戦争のお話エディタ戦争のお話
エディタ戦争のお話
 
うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?
 
通常の3倍の速度で プログラミング!? 「 Emacsキーバインドのすすめ」
通常の3倍の速度でプログラミング!?「 Emacsキーバインドのすすめ」通常の3倍の速度でプログラミング!?「 Emacsキーバインドのすすめ」
通常の3倍の速度で プログラミング!? 「 Emacsキーバインドのすすめ」
 
Emacsいじめの現場
Emacsいじめの現場Emacsいじめの現場
Emacsいじめの現場
 
エディタじゃない"Emacsの使い方
エディタじゃない"Emacsの使い方エディタじゃない"Emacsの使い方
エディタじゃない"Emacsの使い方
 

Similar to kyotovim#1

ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!Yohei Fushii
 
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Ransui Iso
 
ソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルドソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルドToru Tamaki
 
エコなWebサーバー
エコなWebサーバーエコなWebサーバー
エコなWebサーバーemasaka
 
Web技術勉強会23回目
Web技術勉強会23回目Web技術勉強会23回目
Web技術勉強会23回目龍一 田中
 
20130316 プログラミング言語Go
20130316 プログラミング言語Go20130316 プログラミング言語Go
20130316 プログラミング言語GoYoshifumi Yamaguchi
 
JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)l_b__
 
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計maebashi
 
もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…Yasumasa Suenaga
 
Programming camp 2008, Codereading
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, CodereadingHiro Yoshioka
 
Web技術勉強会 第31回
Web技術勉強会 第31回Web技術勉強会 第31回
Web技術勉強会 第31回龍一 田中
 
Php in ruby
Php in rubyPhp in ruby
Php in rubydo_aki
 
コミケの取りまとめをしたので
コミケの取りまとめをしたのでコミケの取りまとめをしたので
コミケの取りまとめをしたのでKenichiro MATOHARA
 
Javaで簡単にgpgpu aparapi
Javaで簡単にgpgpu aparapiJavaで簡単にgpgpu aparapi
Javaで簡単にgpgpu aparapiKen'ichi Sakiyama
 
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2tamtam180
 
Getting Started GraalVM (再アップロード)
Getting Started GraalVM (再アップロード)Getting Started GraalVM (再アップロード)
Getting Started GraalVM (再アップロード)tamtam180
 

Similar to kyotovim#1 (20)

ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!ホームディレクトリに埋もれた便利なコードをさがせ!
ホームディレクトリに埋もれた便利なコードをさがせ!
 
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6
 
ソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルドソフトウェア工学2023 14 ビルド
ソフトウェア工学2023 14 ビルド
 
エコなWebサーバー
エコなWebサーバーエコなWebサーバー
エコなWebサーバー
 
Golang tokyo #7 qtpm
Golang tokyo #7 qtpmGolang tokyo #7 qtpm
Golang tokyo #7 qtpm
 
Yesod on Heroku
Yesod on HerokuYesod on Heroku
Yesod on Heroku
 
Web技術勉強会23回目
Web技術勉強会23回目Web技術勉強会23回目
Web技術勉強会23回目
 
20130316 プログラミング言語Go
20130316 プログラミング言語Go20130316 プログラミング言語Go
20130316 プログラミング言語Go
 
JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)
 
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
 
もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…
 
Programming camp 2008, Codereading
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, Codereading
 
Web技術勉強会 第31回
Web技術勉強会 第31回Web技術勉強会 第31回
Web技術勉強会 第31回
 
Php in ruby
Php in rubyPhp in ruby
Php in ruby
 
コミケの取りまとめをしたので
コミケの取りまとめをしたのでコミケの取りまとめをしたので
コミケの取りまとめをしたので
 
Javaで簡単にgpgpu aparapi
Javaで簡単にgpgpu aparapiJavaで簡単にgpgpu aparapi
Javaで簡単にgpgpu aparapi
 
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
 
Getting Started GraalVM (再アップロード)
Getting Started GraalVM (再アップロード)Getting Started GraalVM (再アップロード)
Getting Started GraalVM (再アップロード)
 
Start-padrino
Start-padrinoStart-padrino
Start-padrino
 
Patch101
Patch101Patch101
Patch101
 

kyotovim#1