Mono Works

チラシのすきま

Termux上のvim環境設定

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 listvimの他に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にインストールされてなければ、自動でインストールするためのコードが紹介されてます。

下記コードを.vimrcplug#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を置いておきます。いろんなところを参考にさせていただいたのですが、ほとんどメモるのを忘れてました。先人に感謝。

dotfiles/.vimrc · pporoch

おしまい

コメント

コメントなどありましたら、GitHubのディスカッションへお願いします。(書き込みには、GitHubのアカウントが必要です)
執筆者
"ぽぽろんち" @pporoch
pporoch120
Mono Worksの中の人。好きなことをつらつらと書き留めてます。
ギターを始めてから 練習動画をYouTubeにアップしてます。ご笑納ください。
"DQX@ぬここ(UD487-754)、コツメ(NO078-818)"
採用案内