SlideShare a Scribd company logo
1 of 71
おすすめVimプラグイン紹介
@横田研Vim勉強会
横田理央研究室 修士2年 岩瀬 駿
1
自己紹介
• 氏名
• 岩瀬 駿 (いわせ しゅん)
• 所属
• 横田理央研究室 修士2年
• コンピュータビジョン関連の研究をしてます
• 趣味
• Vimでコーディング
• Vimプラグイン探し
• Vimの布教活動
2
自己紹介
3http://i.imgur.com/OJ9i8le.jpg
Vimプラグインとは?
4
Vimプラグインとは?
Vim Scriptによって書かれたVimの拡張機能
(NeovimだとPythonでも書ける)
5
Vimプラグインとは?
Vimをちゃんと使いこなせていますか?
自分のVimに満足できてますか?
6
Vimプラグインとは?
Vimプラグインを使えば,
自分だけの快適な編集環境を作れる!
7
Vimプラグインとは?
設定めんどうくさくないの?
ゼロから書かないといけないの?
プラグイン全部調べなきゃいけない?
AtomやVisual Studioの方がいいじゃん?
そうはいうけど…
8
Vimプラグインとは?
vimrcに設定を書くだけで,
どこでも同じ環境を簡単に再現可能!
vimrcの一例
Githubには先人のノウハウが詰まった
すごいvimrcがたくさん落ちてる😆
9
Vimプラグインで何ができるの?
•ファイル・文字列の検索
•シンタックスハイライト
•Linter機能
•ファイラー(ファイル管理ツール)
•補完機能
•他にもいろいろたくさん…
10
Vimプラグインとは?
IDEでできることはほぼ全部できる!!!!
全部ターミナルで作業が完結!!最高!!
11
プラグイン管理
12
プラグイン管理
13
• dein.vim
• NeoBundle
• Vundle
プラグインを管理するためのプラグイン
• vim-pathogen
• vim-plug
など
プラグイン管理
日本だと暗黒美夢王(Shougo)の開発したdein.vimを使ってる人が多い
最も高速に動作するのは, dein.vim
14
ファイル・文字列の検索
15
ファイル・文字列の検索
とりあえず, FZFとRipgrepを入れよ
う
16
ファイル・文字列の検索
• FZFは絞り込み検索のためのライブラリ
• Ripgrepは最も高速に動作するgrep(文字列の検索のためのコマンド)
" fzf.vim
if dein#tap('fzf.vim')
command! -bang -nargs=* Rg
 call fzf#vim#grep(
 ‘rg --column --line-number --no-heading --color=always
'.shellescape(<q-args>), 0,
 fzf#vim#with_preview(
 {'options': '--exact --delimiter : --nth 3.. --preview
"rougify {2..-1} | head -'.&lines.'"'}, 'right:50%'))
nnoremap <silent> <C-t> :call Fzf_dev()<CR>
nnoremap <silent> ,g :Rg<CR>
endif “Ctrl + t” でファイル検索, “,g”で文字列検索ができるようにするための設定例
17
ファイル・文字列の検索
18
シンタックスハイライト
19
シンタックスハイライト
• 可読性が向上する
• 言語ごとに異なるプラグインが提供されてる (“言語名 highlight vim”で検索)
• Df とすれば初期設定でもある程度ハイライトされる
• あえて有効化しないという猛者もいるらしい?
• 詳しくは次の発表で!!
Before After
20
シンタックスハイライト
Python
• vim-python/python-syntax
• numirias/semshi (Semantic highlight for Neovim)
C++
• octol/vim-cpp-enhanced-highlight
• bfrg/vim-cpp-modern
21
シンタックスハイライト
Javascript
• pangloss/vim-javascript
• mxw/vim-jsx (For JSX)
Golang
• fatih/vim-go
22
Linter
23
Linterとは?
• タイポでおかしな変数名に代入してる
• if文の最後にコロンを忘れがち (Python)
• 動的型付け言語に汚染されると型定義忘れがち (C, C++, Golang)
• 定数変数に代入しようとしてる (Javascript等)
文法のチェックをしてくれる機能
24
Linterとは?
Linterがあるだけで, 開発速度が全然変わる
(人間は小さなミスになかなか気づけない…)
25
Linter
昔はSyntasticというLintエンジンが
よく使われていた
26
Linterとは?
27
Syntasticはファイル保存時に
同期的にLintを行う
Linterとは?
28
Lintの実行中は他の操作ができない
Linterとは?
29
でも今はALEがある!
(Asynchronous Lint Engine)
30
ALEとは?
非同期でLintを実行してくれる
Vimプラグイン
31
ALEとは?
32
ALEとは?
• C++: cppcheck, clang-tidy, clang++ (コンパイラに含まれている)
• Javascript: JSLint, JSHint, ESLint
• Python: pycodestyle(pep8), flake8, pylint
• Golang: gofmt (Golangについてくる)
それぞれの言語ごとのLinterは各自インストール
ファイラー
33
ファイラー
基本的なファイル操作を
行うためのツール
34
35
ファイラーでできること
• 一覧を表示
• 開く
• 作成
• 削除
• 移動
• コピー
• 名前の変更
• 検索
ファイル・ディレクトリの
など
ファイラー
36
けれども, サードパーティのファイラーは,
機能が豊富かつカスタマイズ性が高い!
ファイラー
37
ファイラー
38
Netrwというデフォルトのファイラーが
実はかなり便利…
ファイラー
39
サードパーティは,
NERDTreeとvimfilerの一騎打ち状態だっ
た
ファイラー
40
Vimfilerは開発が終了し,
defx.nvimへ移行中…
ファイラー
41
個人的には,
defx.nvim一択
ファイラー
42
netrw
NERDTree
Vimfiler
defx.nvim
10000ファイルのディレクトリを開くためにかかる時間の比較
15秒
15秒
計測不能
3秒
ファイラー
43
ファイラー
44
defx.nvimはまだ情報があまりないので,
初心者向けではないかも(2019/04現在)
ファイラー
45
それでも試したい方は, github.com/sh8/vimrcを
参考にしてみてください!
補完機能
46
補完機能
Vimはデフォルトで,
Ctrl+x, Ctrl+pを使った補完機能がある
47
補完機能
あくまで定義済みの
変数名や特定の行の補完のみ…
48
補完機能
いろいろな言語で
関数名やその引数まで補完したい!!
49
補完機能
• deoplete.nvim (非同期補完のためのプラグイン)
• vim-lsp (VimのLanguage Server Protocol実装)
を使えば簡単に実現できる!!
50
補完機能
つまりどんなことができるの? (Python編)
51
補完機能
52
補完機能
つまりどんなことができるの? (C++編)
53
補完機能
54
LSP (Language Server Protocol) とは?
Microsoftが2016年6月に公開
(結構最近!!)
55
LSP (Language Server Protocol) とは?
ソースコードを解析して, 型や変数の自動補完や,
Linter, エラー解析・修正などを行う機能を持つ
56
LSP (Language Server Protocol) とは?
様々なエディターで共通して利用できるプロトコルなので,
言語 x エディターの組み合わせごとに,
補完エンジンやLinterを開発する必要がなくなった!!
https://code.visualstudio.com/api/language-extensions/language-server-extension-
guide
57
LSP (Language Server Protocol) とは?
どのエディターを用いても,
同じ補完エンジン・Linterを使える!
58
LSP (Language Server Protocol) とは?
言語毎にLSPの実装があるが,
どれも機能が充実していて質が高い!
59
補完機能
• deoplete.nvim (非同期補完のためのプラグイン)
• deoplete-lsp (deopleteとvim-lspをつなげてくれるプラグイン)
• vim-lsp (Vimにおける, Language Server Protocol実装)
• echodoc (Vimの下部分に関数に関する情報を表示)
を使えば再現できるのでgithub.com/sh8/vimrcを参考に(ry
60
その他の便利プラグイン
61
その他の便利プラグイン
• vim-scripts/YankRing.vim
• ヤンクした履歴を保持してくれる
• Ctrl + pをすると過去のヤンクしたバッファに遡れる
• rhysd/accelerated-jk
• 縦のjk移動がすごく速くなる
• tomtom/tcomment_vim
• コメントアウトをショートカット
62
その他の便利プラグイン
• vim-airline/vim-airline
• ステータスバーがかっこよくなる
• airblade/vim-gitgutter
• Git管理されてるファイルの差分を表示
• lervag/vimtex
• VimでTex, 書いちゃう?
63
(番外編) カレンダーの表示
64
(番外編) カレンダーの表示
Vimでカレンダー管理したい!
Vimからもう離れたくない!
65
(番外編) カレンダーの表示
calendar.vim を使えば,
GoogleカレンダーをVimから管理できる!
66
(番外編) カレンダーの表示
67
(番外編) カレンダーの表示
68
:help コマンドで
プラグインの使い方を知ることができる
最後に
69
Vim沼は深いので気をつけましょう
最後に
70
vimrcは公開してます
https://github.com/sh8/vimrc/
最後に
71

More Related Content

What's hot

tf,tf2完全理解
tf,tf2完全理解tf,tf2完全理解
tf,tf2完全理解Koji Terada
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門大樹 小倉
 
WebRTC SFU Mediasoup Sample update
WebRTC SFU Mediasoup Sample updateWebRTC SFU Mediasoup Sample update
WebRTC SFU Mediasoup Sample updatemganeko
 
30分で分かる!OSの作り方
30分で分かる!OSの作り方30分で分かる!OSの作り方
30分で分かる!OSの作り方uchan_nos
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織Takafumi ONAKA
 
第1回 配信講義 計算科学技術特論A (2021)
第1回 配信講義 計算科学技術特論A (2021)第1回 配信講義 計算科学技術特論A (2021)
第1回 配信講義 計算科学技術特論A (2021)RCCSRENKEI
 
ユーザーサイド情報検索システム
ユーザーサイド情報検索システムユーザーサイド情報検索システム
ユーザーサイド情報検索システムjoisino
 
研究発表のためのプレゼンテーション技術
研究発表のためのプレゼンテーション技術研究発表のためのプレゼンテーション技術
研究発表のためのプレゼンテーション技術Shinnosuke Takamichi
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門泰 増田
 
研究発表のためのパワーポイント資料作成の基本
研究発表のためのパワーポイント資料作成の基本研究発表のためのパワーポイント資料作成の基本
研究発表のためのパワーポイント資料作成の基本Hisashi Ishihara
 
落合流先生流の論文要旨フォーマット
落合流先生流の論文要旨フォーマット落合流先生流の論文要旨フォーマット
落合流先生流の論文要旨フォーマット森 哲也
 
Constexpr 中3女子テクニック
Constexpr 中3女子テクニックConstexpr 中3女子テクニック
Constexpr 中3女子テクニックGenya Murakami
 
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないことNorishige Fukushima
 
レベルを上げて物理で殴れ、Fuzzing入門 #pyfes
レベルを上げて物理で殴れ、Fuzzing入門 #pyfesレベルを上げて物理で殴れ、Fuzzing入門 #pyfes
レベルを上げて物理で殴れ、Fuzzing入門 #pyfesTokoroten Nakayama
 
最適化超入門
最適化超入門最適化超入門
最適化超入門Takami Sato
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すTakaya Saeki
 
1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門NVIDIA Japan
 

What's hot (20)

Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 
tf,tf2完全理解
tf,tf2完全理解tf,tf2完全理解
tf,tf2完全理解
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
WebRTC SFU Mediasoup Sample update
WebRTC SFU Mediasoup Sample updateWebRTC SFU Mediasoup Sample update
WebRTC SFU Mediasoup Sample update
 
30分で分かる!OSの作り方
30分で分かる!OSの作り方30分で分かる!OSの作り方
30分で分かる!OSの作り方
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
第1回 配信講義 計算科学技術特論A (2021)
第1回 配信講義 計算科学技術特論A (2021)第1回 配信講義 計算科学技術特論A (2021)
第1回 配信講義 計算科学技術特論A (2021)
 
ユーザーサイド情報検索システム
ユーザーサイド情報検索システムユーザーサイド情報検索システム
ユーザーサイド情報検索システム
 
Lucas kanade法について
Lucas kanade法についてLucas kanade法について
Lucas kanade法について
 
研究発表のためのプレゼンテーション技術
研究発表のためのプレゼンテーション技術研究発表のためのプレゼンテーション技術
研究発表のためのプレゼンテーション技術
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
研究発表のためのパワーポイント資料作成の基本
研究発表のためのパワーポイント資料作成の基本研究発表のためのパワーポイント資料作成の基本
研究発表のためのパワーポイント資料作成の基本
 
落合流先生流の論文要旨フォーマット
落合流先生流の論文要旨フォーマット落合流先生流の論文要旨フォーマット
落合流先生流の論文要旨フォーマット
 
Constexpr 中3女子テクニック
Constexpr 中3女子テクニックConstexpr 中3女子テクニック
Constexpr 中3女子テクニック
 
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
 
レベルを上げて物理で殴れ、Fuzzing入門 #pyfes
レベルを上げて物理で殴れ、Fuzzing入門 #pyfesレベルを上げて物理で殴れ、Fuzzing入門 #pyfes
レベルを上げて物理で殴れ、Fuzzing入門 #pyfes
 
研究効率化Tips Ver.2
研究効率化Tips Ver.2研究効率化Tips Ver.2
研究効率化Tips Ver.2
 
最適化超入門
最適化超入門最適化超入門
最適化超入門
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
 
1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門
 

Similar to おすすめVimプラグインまとめ

Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識alwei
 
初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発Daisuke Kikuchi
 
Vim衆のつどい
Vim衆のつどいVim衆のつどい
Vim衆のつどいYuki Kokubun
 
Vimから見たemacs
Vimから見たemacsVimから見たemacs
Vimから見たemacsShougo
 
プラグインだけじゃない!そのままでもすごいvim
プラグインだけじゃない!そのままでもすごいvimプラグインだけじゃない!そのままでもすごいvim
プラグインだけじゃない!そのままでもすごいvimKeisuke Izumiya
 
Vimプラグインを使おう
Vimプラグインを使おうVimプラグインを使おう
Vimプラグインを使おうHideaki Miyake
 
Ruby on vim yokohama.vim発表資料
Ruby on vim yokohama.vim発表資料Ruby on vim yokohama.vim発表資料
Ruby on vim yokohama.vim発表資料Shohei Kobayashi
 
Shougoの開発環境
Shougoの開発環境Shougoの開発環境
Shougoの開発環境Shougo
 
2014 12-06 ngk2014-b_2014年のvim
2014 12-06 ngk2014-b_2014年のvim2014 12-06 ngk2014-b_2014年のvim
2014 12-06 ngk2014-b_2014年のvimcohama
 
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
我が evil-mode を嫌いな理由 〜evil-mode の闇〜我が evil-mode を嫌いな理由 〜evil-mode の闇〜
我が evil-mode を嫌いな理由 〜evil-mode の闇〜Shougo
 
こわくないSymfony2 - 業務で使って気づいた7つの良いところ
こわくないSymfony2 - 業務で使って気づいた7つの良いところこわくないSymfony2 - 業務で使って気づいた7つの良いところ
こわくないSymfony2 - 業務で使って気づいた7つの良いところGo Nakanishi
 
Vimの基本の基本
Vimの基本の基本Vimの基本の基本
Vimの基本の基本晋 小沼
 
自己紹介という名のVimのススメ
自己紹介という名のVimのススメ自己紹介という名のVimのススメ
自己紹介という名のVimのススメhaya14busa
 
そろそろSublime Text 2を熱く語ろうと思う
そろそろSublime Text 2を熱く語ろうと思うそろそろSublime Text 2を熱く語ろうと思う
そろそろSublime Text 2を熱く語ろうと思うTadayuki Onishi
 

Similar to おすすめVimプラグインまとめ (20)

Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識
 
初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発初心者Vimmerによるvim+rails開発
初心者Vimmerによるvim+rails開発
 
Vim衆のつどい
Vim衆のつどいVim衆のつどい
Vim衆のつどい
 
Vimから見たemacs
Vimから見たemacsVimから見たemacs
Vimから見たemacs
 
プラグインだけじゃない!そのままでもすごいvim
プラグインだけじゃない!そのままでもすごいvimプラグインだけじゃない!そのままでもすごいvim
プラグインだけじゃない!そのままでもすごいvim
 
kyoto vim#1
kyoto vim#1kyoto vim#1
kyoto vim#1
 
rucs_vim LT
rucs_vim LTrucs_vim LT
rucs_vim LT
 
Vimプラグインを使おう
Vimプラグインを使おうVimプラグインを使おう
Vimプラグインを使おう
 
Ruby on vim yokohama.vim発表資料
Ruby on vim yokohama.vim発表資料Ruby on vim yokohama.vim発表資料
Ruby on vim yokohama.vim発表資料
 
Shougoの開発環境
Shougoの開発環境Shougoの開発環境
Shougoの開発環境
 
My dev env
My dev envMy dev env
My dev env
 
2014 12-06 ngk2014-b_2014年のvim
2014 12-06 ngk2014-b_2014年のvim2014 12-06 ngk2014-b_2014年のvim
2014 12-06 ngk2014-b_2014年のvim
 
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
我が evil-mode を嫌いな理由 〜evil-mode の闇〜我が evil-mode を嫌いな理由 〜evil-mode の闇〜
我が evil-mode を嫌いな理由 〜evil-mode の闇〜
 
Vimperator abc
Vimperator abcVimperator abc
Vimperator abc
 
anyframeを使おう
anyframeを使おうanyframeを使おう
anyframeを使おう
 
Tdd vim
Tdd vimTdd vim
Tdd vim
 
こわくないSymfony2 - 業務で使って気づいた7つの良いところ
こわくないSymfony2 - 業務で使って気づいた7つの良いところこわくないSymfony2 - 業務で使って気づいた7つの良いところ
こわくないSymfony2 - 業務で使って気づいた7つの良いところ
 
Vimの基本の基本
Vimの基本の基本Vimの基本の基本
Vimの基本の基本
 
自己紹介という名のVimのススメ
自己紹介という名のVimのススメ自己紹介という名のVimのススメ
自己紹介という名のVimのススメ
 
そろそろSublime Text 2を熱く語ろうと思う
そろそろSublime Text 2を熱く語ろうと思うそろそろSublime Text 2を熱く語ろうと思う
そろそろSublime Text 2を熱く語ろうと思う
 

おすすめVimプラグインまとめ