Linuxディストリビューションでは「Vim」がデフォルトのエディタに設定されていることが多い。コマンド名は「vim」だったり、「vi」だったりするが、いずれにせよ実体はVimだ。本連載で取り上げているUbuntu 18.04 LTSでも、Vimがviで実行される仕組みになっている。

Ubuntu 18.04 LTSのデフォルトVimの挙動

Vimでは下部のステータスラインを結構アグレッシブにカスタマイズできるのだが、この部分はPowerlineで”クール”に設定可能だ。Cascadia Code PLフォントやCascadia Mono PLフォントが使えるようになったので、VimでもPowerlineを使ってみよう。

設定ファイル~/.vimrc

Vimの設定ファイルは~/.vimrcだ。Vimはさまざまな設定ができるし、この部分はユーザーや開発者の好みが大きく出る部分なので、説明し始めるときりがない。ここではそうした設定ファイルのサンプルの1つとして、~/.vimrcを掲載しておく。~/.vimrcに何も設定をしていないのなら、以下のサンプルをそのままコピー&ペーストしてもらえればと思う。

" evim.vim will already have done these configuration.
if v:progname == "evim"
  finish
endif

" ----------------------------------------------------------------------
" Dein plug-ins management
" ----------------------------------------------------------------------
if &compatible
    set nocompatible
endif

set runtimepath+=~/.cache/dein/repos/github.com/Shougo/dein.vim
if dein#load_state('~/.cache/dein')
    call dein#begin('~/.cache/dein/')
    call dein#add('Shougo/dein.vim')
    call dein#add('Shougo/unite.vim')
    call dein#add('junegunn/seoul256.vim')
    call dein#add('vim-airline/vim-airline')
    call dein#add('vim-airline/vim-airline-themes')
    call dein#end()
    call dein#save_state()
endif

filetype plugin indent on

if dein#check_install()
    call dein#install()
endif

" unite
nnoremap <silent> <C-o> :<C-u>Unite file buffer<CR>
autocmd FileType unite nmap <silent><buffer> <ESC><ESC> q

" seoul256
let g:seoul256_background = 233
colo seoul256

" vim-airline
let g:airline_powerline_fonts = 1
let g:airline_theme = 'minimalist'
let g:airline_theme = 'tomorrow'
let g:airline_theme = 'molokai'

" ----------------------------------------------------------------------
" How to install Dein:
"   mkdir -p ~/.cache/dein
"   cd ~/.cache/dein/
"   curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
"   sh ./installer.sh .
"   rm ./installer.sh
" ----------------------------------------------------------------------

" allow [Backspace] over insert mode to remove charactors
"  start - allow all charactors to remove
"  eol - allow to remove eol and join lines
"  indent - allow to remove indent in autoindent mode
set backspace=start,eol,indent

" allow some keys to move the cursor left/right to move to
" the previous/next line when the cursor is on the first/last
" character in the line.
"  b - [Backspace]  normal visual
"  s - [Space]      normal visual
"  < - [Left]       normal visual
"  > - [Right]      normal visual
"  [ - [Left]       insert replace
"  ] - [Right]      insert replace
"  ~ - ~            normal
set whichwrap=b,s,[,],<,>,~,h,l

" mouse feature off
set mouse=

" syntax highlight on
syntax on
set nohlsearch " non-highlight for search keyword
set cursorline " use cursorline indicator

" line numbers on
set number

" status line on
set laststatus=2 " always displaying status line
set statusline=%F%r%h%= " statusline format

" incremental search and not case-sensitive on
set incsearch
set ignorecase

" use extended menu complementation feature
set wildmenu wildmode=list:full

" use decimal instead of octal
set nrformats=

" set tab indent depth
autocmd Filetype xml set tabstop=1 shiftwidth=1 softtabstop=1
autocmd Filetype html set tabstop=1 shiftwidth=1 softtabstop=1

" displayed line movement gj/gk as default instead of j/k
nnoremap k gk
nnoremap gk k
nnoremap j gj
nnoremap gj j

" for useful argdo mutli-files replaces
set hidden

" autoload configurations files
set runtimepath+=~/.vim/
runtime! userautoload/*.vim

" load user .vimrc configuration file
if filereadable(expand('~/.vimrc.mine'))
  source ~/.vimrc.mine
endif

この~/.vimrcは、Vimの基本的な設定とプラグイン管理機能のセットアップ、Powerline風ステータスラインを実現するためのプラグインの設定と、そのほかいくつかのプラグインを設定している。

プラグイン管理「Dein」と「vim-airline」

Vimはプラグインで機能を拡張することができる。Vimでは通常、手動でプラグイン管理を行うか、サードパーティ製のプラグイン管理機能を使用する。自分の慣れたプラグイン機能を使ってもらえればよいのだが、ここではDeinを使って管理を行っている。

Deinを使う場合、次のように最初にDeinをインストールする必要がある。

mkdir -p ~/.cache/dein
cd ~/.cache/dein/
curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
sh ./installer.sh .
rm ./installer.sh

パスは先程の~/.vimrcの内容と合わせてある。パスを変えるなら~/.vimrcの内容とこちらのコマンド内容の双方を変更していただきたい。

最初の起動でプラグインを自動インストール

~/.vimrcの内容はおいおい説明するとして、ここでは先に掲載した~/.vimrcとDeinを使う場合のセットアップ方法を紹介しておこう。まず、ここまで準備した状態でvimを実行すると、次のような感じでいつもとちょっと違う表示が行われる。

最初の起動でDeinがほかのプラグインをインストール中

キー入力しても、おかしな反応をするはずだ。実はこの段階で、Deinによってほかのプラグインのインストールが行われる。画面が変わるまでおとなしく待とう。

表示が次のように切り替われば、プラグインのインストール完了だ。

Deinによるプラグインインストール完了

これでPowerline風のステータスラインを実現するvim-airlineプラグインが動作するようになった。Cascadia Code PLフォントかCascadia Mono PLフォントがインストール済みで、Windows Terminalなどのターミナルアプリケーションがそのフォントを使うように設定してあれば、次のようにVimのステータスラインがPowerline風の表示になっていることを確認できる。

vim-airlineでPowerline風ステータスラインを実現した状態

vim-airlineではVimのモードに合わせて表示が切り替わる。慣れてくると、この動きもなかなか心地良い。

モードでステータスラインの表示が切り替わる

VimのステータスラインがPowerline風の表示になったから編集効率が上がるとか、開発効率がアップするとか、そういうことはあまりないかもしれないが、デフォルトのステータスラインより何となくカッコよくなった気はする。たまにはこうした設定で気分を変えてみるのも良いのではないだろうか。