【Vim】よく使うプラグイン【自分のPCで使用しているソフトウェア,設定の紹介 #12】
前回はVimの基本設定について紹介しましたが,今回はVimで使っているプラグインの説明をしていきたいと思います。
Vimプラグインの管理の仕方ですが,前までは何も考えずにNeoBundleを使っていたのですが,最近ではvim-plugを使っています。
b4b4r07さんの影響力っておおきい...
そしてビジュアルって大事ですね。
設定ファイル全体は以下にあげてありますので,詳しく見てみたい方は参照してください。
dotfiles/plug.vim at master · ssh0/dotfiles · GitHub
ざっと数えてみると現在30個ほどのプラグインを使用しているみたいです。
以下ではこの中からよく使っているものに関してまとめてみたいと思います。
surround.vim
昔からあるので,言わずと知れたプラグイン。
s
で"surround"に関する操作が追加されます。
foo hoge bar_info korekore
とあったとき,bar_info
の上でysiW"
と押すことで
foo hoge "bar_info" korekore
のようにしたり,cs"'
と押すことで
foo hoge 'bar_info' korekore
のように"
を'
に変えたりと,いろいろ便利です。
tpope/vim-commentary
コメントアウトのトグルを行うコマンドgc
を追加します。
gcl
でその行をコメントアウト。範囲指定してからgc
というのもわかりやすくていいですね。
markdownなど,コメントの書式が設定されていないものはcommentstring
を自分で設定してやると,より便利です。
例えば
autocmd FileType markdown set commentstring=<\!--\ %s\ -->
Shougo/vimproc
暗黒美無王ことShougoさんの,非同期処理のためのライブラリです。 内部まできちんと見たことがないのでアレですが,thincaさんのvim-quickrunと組み合わせたときにその恩恵を受けていると感じます。
ctrlpvim/ctrlp.vim
ファイルやバッファなどをあいまい検索して開くことのできるプラグインです。
オリジナルはkien/ctrlp.vim: Fuzzy file, buffer, mru, tag, etc finder.ですが,READMEに
This project is unmaintained
You should use this fork instead.
とあるので,メンテナンスされているctrlpvim/ctrlp.vimの方を使っています。
高速にファイル内検索を行えるag
(The Silver Searcher)を使うようにし,いくつかキーバインディングを設定しています。
if executable('ag') let g:ctrlp_user_command='ag %s -i --nocolor --nogroup -g ""' endif nnoremap <Leader>oo :CtrlP<CR> nnoremap <Leader>om :CtrlPMixed<CR> nnoremap <Leader>or :CtrlPMRUFiles<CR>vim
ervandew/supertab
補完等をTab
キーを押すだけで出来るように。
カーソル前が空白のときには通常のTabを押した時と同じ操作になります。
kshenoy/vim-signature
kshenoy/vim-signatureのREADMEにあるGifで大体分かると思いますが,marksを可視化し行番号の左に表示してくれるプラグインです。
このプラグインのおかげでmarksが活用できるようになりました。
LeafCage/foldCC
折り畳み嫌いの男が一夜でFolding freakにまでなった話 - LeafCage備忘録
に開発の経緯やスクリーンショットなどものっているので,参考にしてみてください。
set foldtext=FoldCCtext()
とすることで設定を有効にしています。それ以外の機能は特にいじっていません。
このプラグインのおかげで僕もfoldingしまくり野郎になりました。 コードの構造が視覚的に分かるようになり,ファイルサイズが大きくなるにつれて自分が何やってるかわからなくなるあの現象がかなり抑えられていると思います。
デフォルトのカラースキームでは色が見にくかったけれど,それも自作のカラースキームにしてからは何も問題なくなって最高です。
lilydjwg/colorizer
lilydjwg/colorizer: A Vim plugin to colorize all text in the form #rrggbb or #rgb.
これもREADMEを見て欲しいのですが,設定ファイルで文字色をよく変更する人にとってこのプラグインは控えめにいって福音です。
#666666
のような文字列があったら,Vimのなかでハイライトされて表示されるのです。
itchyny/lightline.vim
カスタマイサブルなステータスライン,タブラインを提供します。
lightline.vim作りました - プラグインの直交性について - プログラムモグモグ itchyny/lightline.vim: A light and configurable statusline/tabline for Vim
自分もその見た目のかっこよさからvim-powerlineを使っていたのですが,いろいろ変えたいところがあっても変えられる気がしていなかったところに,このプラグインの存在は大きかったです。
自由度が高い ということはその分設定量が多い,ということにつながってしまうかと思うのですが,作者さんによる設定の仕方に関するブログ記事もあるので,そちらを見ながらちょっとずつ色を変えたりして変更していけばいいと思います。
設定はここに張ると長くなってしまうので,該当行へのリンクだけにしておきます。
thinca/vim-quickrun
こちらも割と有名かと思いますが,任意のコマンドをファイルタイプごとに設定しておくことで,テストの実行,自動コンパイルなどを行わせることができるようになるものです。
これもその自由度ゆえに設定できることが多すぎてはじめは戸惑うかもしれませんが,最初は他の人の設定例を検索してみるなどして見てみて,それから自分なりにアレンジしていけばいいと思います。
シェルスクリプトとvim-quickrunさえあれば,組み合わせ次第で何でもできます。
plasticboy/vim-markdown
markdown編集用のプラグインです。 適切なハイライトが行えるのでこちらを使っています。
適切なハイライト,というのは"```"で囲ったときに言語を指定できますが,そのときの言語にあわせてシンタックスハイライトを行ったり,$
で囲まれたところを数式とみなしてLaTeXの数式と同じようにハイライトしたりできる,ということです。
という組み合わせでも近いことができます(し,こちらのほうがかなり軽いです)が,数式ハイライトができなかったというのもあって,plasticboyさんのプラグインを使っています。
設定は
let g:vim_markdown_math = 1 let g:vim_markdown_frontmatter = 1 let g:vim_markdown_toc_autofit = 1 let g:vim_markdown_folding_style_pythonic = 1
としています。
davidhalter/jedi-vim
davidhalter/jedi-vim: Using the jedi autocompletion library for VIM.
May The Force Be With You.
重かったり,若干意図しない動作があったりしますが,ライブラリの関数などを自動で補完してくれるので,記憶力のない僕はすごく助かっています。
関数呼び出しの際の引数もポップアップで表示されるので,いちいち定義に戻ったりする必要もなくていい感じです。
let g:jedi#popup_on_dot = 1 let g:jedi#popup_select_first = 1
tmhedberg/SimpylFold
Pythonファイルでのフォールディング規則を定めたプラグインです。 このプラグインで定義されたフォールディングは見やすいので使わせてもらっています。
moznion/hateblo.vim
moznion/hateblo.vim: This plugin provides some functions of Hatena-Blog by using AtomPub API.
はてなブログAPIを用いて投稿等をできるようにしたプラグインです。
:HatebloCreate
とコマンドを打つだけで投稿できてしまい,とても良いです。
まとめ
自分で書けるならそれが一番かもしれませんが,他の人がつくったものをうまく組み合わせて活用するというのも大事なことかなと思っています。
自分でつくったのは以下のカラースキーム系だけです。(完全に自分用で,gvimは想定していないのであしからず)
作者さんたちに感謝を表明しつつ,今回はこれくらいにしたいと思います。
さて,次回はfirefox,とくにvimperator関連の話ができればいいかなと思います。