vimとneovim、とりあえずどちらか一方の環境を整えようということで、いろいろとプラグインを調べていると、neovimを前提としたものに開発がシフトしているような感じもしたのですが、ブログ記事を書くくらいだったら、導入や設定がよりシンプルで済みそうなvimを使っていくことにしました。使い方に慣れてきたら、neovimに移行するかもしれません。
更新履歴
(更新:2018/09/14) ステータス行のブランチ表示は、set statusline
でおこなうことにしました。
参考:VimのステータスラインにGitのブランチ名を表示する(右側に) - アインシュタインの電話番号
python3環境
vimのプラグインを検討していると、最新のNeovimもしくはVim8 with Python3が必要とされるプラグインがちらほら見かけます。今後のためにもvimのpython3環境を整えておくかと、構築方法について調べたのですが、なぜかMac環境でのお話ばかり見つかります。Gemini PDAじゃbrewとか使えないし、と拗ねていたら、Termuxのapp list
にvimの他にvim-pythonというパッケージを見つけたのでインストールしてみると、vimとpython3環境がまとめてインストールされました。
vim --version
で+python3
を確認するか、vimで:echo has("python3")
して1
が返ってくればpython3環境は整ってます。
機能拡張(プラグイン導入)
機能拡張ツールとして、dein.vim を考えていたのですが、vim-plugの方が設定方法が分かりやすかったので、こちらを使ってみることにしました。
公式サイト:junegunn/vim-plug: Minimalist Vim Plugin Manager
vim-plugのインストールとプラグインの指定
公式サイトに書いてあるtipsにインストールされてなければ、自動でインストールするためのコードが紹介されてます。
下記コードを.vimrc
のplug#begin()
より前に記述していれば、未インストールの場合、vim-plugがインストールされます。初めて試した際は、curl
が未インストールで、エラーになったので、あらかじめpkg install curl
しておきましょう。
if empty(glob('~/.vim/autoload/plug.vim'))
silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif
これに続けて、call plug#begin()
とcall plug#end()
の間に追加するプラグインを下記要領で記述していきます。
call plug#begin('~/.vim/plugged')
Plug '《プラグイン》'
Plug '《プラグイン》'
call plug#end()
.vimrc
を保存したら、再起動したvimで下記コマンドを実行すれば、プラグインのインストールが始まります。
:PlugInstall
インストールしたプラグイン
Unite.vim
vimで履歴一覧やバッファ一覧を表示。
Shougo/unite.vim: Unite and create user interfaces
下記オプションを指定。
let g:unite_enable_start_insert = 1 " 起動時にインサートモードで開始
nnoremap <silent> <C-h> :<C-u>Unite file_mru<CR> " ノーマル:<C-h>で履歴一覧
inoremap <silent> <C-h> <ESC>:<C-u>Unite file_mru<CR> " インサート:<C-h>で履歴一覧
nnoremap <silent> <C-b> :<C-u>Unite buffer<CR> " ノーマル:<C-b>でバッファ一覧
inoremap <silent> <C-b> <ESC>:<C-u>Unite buffer<CR> " インサート:<C-b>でバッファ一覧
autocmd FileType unite call s:unite_my_settings() " unite.vim上でのキーマッピング
function! s:unite_my_settings()
nmap <silent><buffer> <ESC><ESC> q " ノーマル:ESCキー2回押しで終了
imap <silent><buffer> <ESC><ESC> <ESC>q " インサート:ESCキー2回押しで終了
endfunction
参考:VimのUniteプラグインでファイル、バッファ、ブックマーク管理 | karakaram-blog
NERDTree
vimでディレクトリツリーを表示。
scrooloose/nerdtree: A tree explorer plugin for vim.
下記オプションで、Ctrl + d
でディレクトリツリーの表示非表示をトグル。
map <C-d> :NERDTreeToggle<CR>
Indent Guides
vimでインデントレベルを交互に色で表示。
nathanaelkane/vim-indent-guides: A Vim plugin for visually displaying indent levels in code
下記オプションで、自動でIndent Guidesが有効になります。
let g:indent_guides_enable_on_vim_startup = 1
smartchr
キーを押す回数によって挿入する文字列をトグルできる。
kana/vim-smartchr: Vim plugin: Insert several candidates with a single key
例えば、下記行を.vimrc
に追加すると、=
キーを連続して押すごとに、=
の前後のスペース有り無しがトグル。
inoremap <buffer> <expr> = smartchr#loop(' = ', '=')
fugitive.vim
vim上でGit操作をおこなうことができる。
tpope/vim-fugitive: fugitive.vim: A Git wrapper so awesome, it should be illegal
下記行を.vimrc
に追加すると、ステータス行に現在のgitブランチを表示する
if isdirectory(expand('~/.vim/bundle/vim-fugitive'))
set statusline+=%{fugitive#statusline()}
endif
**(更新:2018/09/14)**ステータス行のブランチ表示は、set statusline
でおこなうことにしました。
参考:VimのステータスラインにGitのブランチ名を表示する(右側に) - アインシュタインの電話番号
deoplete.nvim(いったん外しました)
入力補完をおこなってくれる。
Shougo/deoplete.nvim: Dark powered asynchronous completion framework for neovim/Vim8
その他プラグイン(いったん外しました)
deoplete.nvimに関連するプラグインして、下記も導入。
Plug 'roxma/nvim-yarp' " vim8でdeoplete.nvimを使うのに必要
Plug 'roxma/vim-hug-neovim-rpc' " vim8でdeoplete.nvimを使うのに必要
Plug 'Shougo/neco-syntax' " deoplete.nvim用ソースプラグイン
.vimrcファイル
プラグインの他にも、いろいろと設定を記述した.vimrc
を置いておきます。いろんなところを参考にさせていただいたのですが、ほとんどメモるのを忘れてました。先人に感謝。
おしまい
コメント
コメントなどありましたら、GitHubのディスカッションへお願いします。(書き込みには、GitHubのアカウントが必要です)