公開日:2020-08-17
Vin プラグイン
今回はみなさまに、プラグインの仕組みや導入の方法、そして筆者が普段使っている便利であるプラグインの方法を紹介していきます。
プラグインの仕組みと導入方法
プラグインの仕組み
プラグインの実態はVim scriptで書かれているスクリプトファイルです。Vim scriptは、Vimの上で使用することが出来るスクリプト言語で、vimrcに設定を記述するときにも使用しています。それらのファイルを読み込むことにより、プラグインが提供しているコマンドなどで使用することができます。
プラグインの導入方法
スクリプトファイルを:sourceまたは:runtimeコマンドで読み込むことができますが、Vimを起動してから使えるようにしたいという方がほとんどではないかと思います。そこで、Vimのpackages機能を使用します。
Vimの{packpath}/pack/{任意のディレクトリ名}/startの支配下にプラグインのディレクトリを配置することにより、Vimの起動時に読み込んでくれるのです。{packpath}の設定値は:set packpath?で確認することが可能です。
ちなみに、筆者の場合にはpackpathは次のようになっています。普段、プラグインを作るときに~/.vim/pack/plugins/start/の支配下にプラグインディレクトリを置いています。
packpath=~/.vim,/usr/local/share/vim/vimfiles,/usr/local/share/vim/vim81,/usr/local/share/vim/vimfiles/after,~/.vim/after
現在には、たくさんのプラグインがGitHub上で管理されているので、gitコマンドとpackages機能を使うことにより容易にプラグインを導入できるようになっております。とても便利な時代ですね。
プラグインの管理
導入するプラグインが多くなると、今度は管理が大変になってきます。
そこでプラグインの管理をするプラグインを使用していくと便利です。
管理のプラグインはたくさんありますが、私はdein.vimというプラグインを使用しています。dein.vimはtomlファイルを使用してプラグインを管理する事が可能です。tomlのファイルに記述して、プラグインをインストール、またtomlファイルから削除し、プラグインをアンイストールすることが可能なので便利です。しかし、インストールやアンイストールも自動で稼働するわけではないので、少しだけ手を加える必要があります。私の場合はvimrcに以下の設定をしています。
" dein.vim settings {{{
" install dir {{{
let s:dein_dir = expand('~/.cache/dein')
let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim'
" }}}
" dein installation check {{{
if &runtimepath !~# '/dein.vim'
if !isdirectory(s:dein_repo_dir)
execute '!git clone https://github.com/Shougo/dein.vim' s:dein_repo_dir
endif
execute 'set runtimepath^=' . s:dein_repo_dir
endif
" }}}
" begin settings {{{
if dein#load_state(s:dein_dir)
call dein#begin(s:dein_dir)
" .toml file
let s:rc_dir = expand('~/.vim')
if !isdirectory(s:rc_dir)
call mkdir(s:rc_dir, 'p')
endif
let s:toml = s:rc_dir . '/dein.toml'
" read toml and cache
call dein#load_toml(s:toml, {'lazy': 0})
" end settings
call dein#end()
call dein#save_state()
endif
" }}}
" plugin installation check {{{
if dein#check_install()
call dein#install()
endif
" }}}
" plugin remove check {{{
let s:removed_plugins = dein#check_clean()
if len(s:removed_plugins) > 0
call map(s:removed_plugins, "delete(v:val, 'rf')")
call dein#recache_runtimepath()
endif
" }}}
Vimの起動時にdein.vimがインストールされていなければ、まず初めにdein.vimをインストールして、その後にtomlファイルを読み込んで、未インストールのプラグインを全てインストールします。さらに、tomlファイルからプラグインが削除された場合には、プラグインの本体も削除するようにしています。tomlファイルは~/.vim/dein.tomlに配置しています。
プラグインの追加
基本的にはtomlファイルに repp = GitHubのユーザ名/リポジトリ名という形で追記してからVimを再起動するだけで可能です。これは簡単ですね。
おすすめのプラグイン
プラグインの導入方法についてわかったところで、私が普段良く使っている便利なプラグインを紹介していきます
ファイルなどのあいまい検索
fzf.vimはファイルを大体で検索して開くことが可能です。現在のディレクトリの配下のファイルの一覧から開きたいファイルを絞り込みます。そして複数ファイルを分割もしくはタブで開くことができます。ファイル以外にもバッファなども開けます。Go製のfzfというコマンドを使っているため、動作も軽いです。わたしにとっては欠かせないプラグインの1つになっています。
導入するには以下をtomlに追記します。
[[plugins]]
repo = 'junegunn/fzf'
build_on = '''
./install -all
'''
[[plugins]]
repo = 'junegunn/fzf.vim'
Markdownのプレビュー
私は普段、記事を書いたり、メモをとったりするときにはよくMarkdownの形式で書いています。ブラウザで書いた内容を表示したときにレイアウトが崩れていないかを確認したいときがあります。その時にpreview/preview.vimを使っています。ファイルを保存するたびブラウザ画面も更新されます。便利です。
導入するには、以下をtomlに追記します。
[[plugins]]
repo = 'previm/previm'
Markdownのテーブル作成
Markdown形式で書いているとテーブルを作りたくなることがあります。そのときに使用するのがmattn/vim-maketableです。セルにある単語を,(カンマ)で区切ったのち、:MakeTable!を実行するとサクッとテーブルを作ることが可能です
導入するには以下をtomlに追記することをオススメします。
[[plugins]]
repo = 'mattn/vim-maketable'
ヘルプの日本語化
Vimのヘルプはとても充実していますが、デフォルトは英語表記です。
なので英語が苦手な私は日本語化しています。ヘルプを日本語化するには、vim-jp/vimdoc-jaをtomlにまず追記します。
[[plugins]]
repo = 'vim-jp/vimdoc-ja'
そうしたら、vimrcに設定を追記します。
置換のプレビュー
Vimで文字列の置換をするときによく正規表現を使います。しかし私は正規の表現が苦手なので置換の結果をプレビューしたいことがたくさんあります。そういう場合はmarkonm/traces.vimを使用します。こちらのプラグインは、リアルタイムに置換の結果をプレビューしてくれます。想定通りに置換されるかどうかを確認するのにもとても便利です。
導入するためには以下をtomlに追記します。
[[plugins]]
repo = ‘markonm/traces.vim'
Google翻訳
普段はOSSのドキュメントを書いたり、コメントを読むなどをする際に翻訳したいことが多いのですが、ブラウザとVimを行き来するのが不便でした。なのでGoogle翻訳をVim上で使えるようにするためにtranslate.vimというプラグインを作りました。そしてビジュアルモードにて翻訳したい範囲を選択ます。そして:Translateすると翻訳されます。翻訳の元と翻訳先はvimrcに記述します。詳細はREADMEをぜひ参照してください。
導入するためには以下をtomlに追記します。
[[plugins]]
repo = ‘skanehira/translate.vim'
Docker操作
私は開発でDockerを使うことが多いです。しかしVim上でDockerを操作できたら便利と思いdocker.vimというプラグインを作りました。Vimの上でイメージをpullしてみたり、コンテナを立ち上げるなど、作成してattachしたりと、色々な機能があります。控えめに言って便利です。
導入するには以下をtomlに追記します。
[[plugins]]
repo = ‘skanehira/docker.vim'