以前、Microsoftが「Cascadia Code」というフォントを公開したこと、Cascadia CodeはWindows Terminalで使用できること、そして公開されたフォントにはPowerLineに対応したファミリーフォントが含まれており、VimでPowerLineを利用することができること、などを取り上げた。関連記事は以下の通りだ。


さらに、前回まででVimで設定ファイルやプラグインを使う方法を紹介した。そこで今回は、以前PowerLineを紹介した際には省略した「VimでPowerLineを設定する方法」について説明しよう。

まず、「Vim Awesome」でPowerLineを実現するVimのプラグインを検索する。今回紹介するプラグインは「vim-airline」だ。このプラグインを利用する際には「vim-airline-themes」も必要とする。どちらもVim Awesomeで検索できる。

vim-airline - Vim Awesome

vim-airline-themes - Vim Awesome

これらのプラグインをインストールして使っていこう。

vim-airlineを使うための設定

これまで本連載で解説してきた通りに設定ファイルを作っているのなら、現在の~/.vimrcは次のようになっているはずだ。

"dein Scripts-----------------------------
if &compatible
  set nocompatible               " Be iMproved
endif

" Required:
set runtimepath+=/home/daichi/.cache/dein/./repos/github.com/Shougo/dein.vim

" Required:
if dein#load_state('/home/daichi/.cache/dein/.')
  call dein#begin('/home/daichi/.cache/dein/.')

  " Let dein manage dein
  " Required:
  call dein#add('/home/daichi/.cache/dein/./repos/github.com/Shougo/dein.vim')

  " Add or remove your plugins here
  call dein#add('junegunn/seoul256.vim')

  " Required:
  call dein#end()
  call dein#save_state()
endif

" Required:
filetype plugin indent on
syntax enable

" If you want to install not installed plugins on startup.
if dein#check_install()
  call dein#install()
endif

" seoul256
let g:seoul256_background = 233
colo seoul256

"End dein Scripts-------------------------

set number
syntax on
set whichwrap=b,s,[,],<,>,~,h,l
set cursorline
set incsearch
set hlsearch
set ignorecase

ここにvim-airlineとvim-airline-themesプラグインの設定を追加する。まず、現在次のようになっている行を探してほしい。

  " Add or remove your plugins here
  call dein#add('junegunn/seoul256.vim')

上記の行に、次のようにvim-airlineとvim-airline-themesを使用する設定を追加する。

  " Add or remove your plugins here
  call dein#add('junegunn/seoul256.vim')
  call dein#add('vim-airline/vim-airline')
  call dein#add('vim-airline/vim-airline-themes')

次に、複数あるPowerLineのステータスラインのカラーテーマのうち、どのテーマを使うのかを指定する。例えば、前回追加したseoul256の設定は以下のようになっているはずだ。

" seoul256
let g:seoul256_background = 233
colo seoul256

これを次のように変更し、PowerLineのテーマとして「molokai」というテーマを使う設定にしてみよう。

" seoul256
let g:seoul256_background = 233
colo seoul256

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

ほかにも指定できるテーマには、次のようなものがある。molokaiが合わなかったら別のテーマを試してみてほしい。

vim-airline-themes
テーマ alduin、angr、atomic、ayu_light、ayu_mirage、ayu_dark、badcat、badwolf、base16、base16_vim、base16_shell、base16_3024、base16_adwaita、base16_apathy、base16_ashes、base16_atelierdune、base16_atelierforest、base16_atelierheath、base16_atelierlakeside、base16_atelierseaside、base16_bespin、base16_brewer、base16_bright、base16_chalk、base16_classic、base16_codeschool、base16_colors、base16_default、base16_eighties、base16_embers、base16_flat、base16_google、base16_grayscale、base16_greenscreen、base16_gruvbox_dark_hard、base16_harmonic16、base16_hopscotch、base16_isotope、base16_londontube、base16_marrakesh、base16_mocha、base16_monokai、base16_nord、base16_ocean、base16_oceanicnext、base16_paraiso、base16_pop、base16_railscasts、base16_seti、base16_shapeshifter、base16_solarized、base16_spacemacs、base16_summerfruit、base16_tomorrow、base16_twilight、base16_vim、base16color、behelit、biogoo、bubblegum、cobalt2、cool、dark、dark_minimal、desertink、deus、distinguished、durant、faryfloss、fruit_punch、hybrid、hybridline、jay、jellybeans、jet、kalisi、kolor、laederon、light、lucius、luna、minimalist、molokai、monochrome、murmur、night_owl、onedark、ouo、papercolor、peaksea、powerlineish、qwq、raven、ravenpower、seagull、serene、sierra、silver、simple、soda、sol、solarized、solarized_flood、term、term_light、tomorrow、ubaryd、understated、violet、wombat、xtermlight、zenburn

設定ファイルを変更する前のVimの見た目は次のようになっている。

vim-airlineを使用する前のVim

設定ファイルを変更すると、PowerLineが有効になる(最初の起動時にはgitを使ってプラグインのダウンロードが行われるのでしばらく時間がかかる)。

vim-airlineを使用した状態のVim

vim-airlineとvim-airline-themesのインストールが完了するとPowerLineが機能するようになる。しかし、よく見るとわかるのだが、肝心のPowerLineフォントの部分が化けてしまっている。

Cascadia Mono PLをインストールして設定を変更する

執筆時点で筆者が使っているWindows Terminalのバージョンは0.11.1333.0だ。このバージョンはバージョン1.0とそれほど違いはないと考えられる。そのデフォルトフォントは、PowerLineフォントが含まれていない「Cascadia Mono」だ。表示が化けるのは当然だろう。

Windows Terminalのデフォルトフォントは「Cascadia Mono」

そして、Windows Terminalをインストールすることで同時にインストールされるフォントは次のように「Cascadia Code」と「Cascadia Mono」だ。PowerLineフォントは含まれていない。

Windows Terminalに同梱されるフォントは「Cascadia Code」と「Cascadia Mono」

PowerLineを機能させるにはPowerLineフォントを含んだCascadiaフォントをインストールする必要がある。「microsoft/cascadia-code」にアクセスし、リリースから最新のCascadiaフォントをダウンロードする。

Github.com - microsoft/cascadia-codeから最新のCascadiaフォントをダウンロードする

ダウンロードしてきたアーカイブを展開すると、次のように「Cascadia Mono PLフォント」の存在を確認できる。

Cascadia Mono PLが含まれていることを確認

フォントのインストールは設定アプリケーションを使ってもよいし、フォントファイルをダブルクリックしてビューアからインストールしてもよい。

フォントファイルをダブルクリックしてからインストール

「Cascadia Mono PL」と、ついでに「Cascadia Code PL」もインストールすると、次のようになる。

Cascadiaフォントのすべてのファミリーをインストール済みの状態

「Cascadia Mono PL」をインストールしたら、次のようにWindows Terminalに「Cascadia Mono PL」を使用する設定を追加する。

Windows TerminalからUbuntu-18.04使用時のフォントを「Cascadia Mono PL」に変更

これで準備完了だ。

PowerLineが機能しているVim

「Cascadia Mono PL」のインストールと「Windows Terminalのフォント設定」が完了すれば、Vimの表示は次のように期待通りになる。

PowerLineが期待通りに機能しているVim

ステータスバーの表示がPowerLine対応になったからといって作業効率が著しく向上するといったことはない。ただ単に「かっこいい」という側面が強い。しかし、毎日使うのだ。かっこいいに越したことはないだろう。

最後に、今回の設定を反映させた~/.vimrcファイルを掲載しておく。利用する際の参考にしてもらえれば幸いだ。

"dein Scripts-----------------------------
if &compatible
  set nocompatible               " Be iMproved
endif

" Required:
set runtimepath+=/home/daichi/.cache/dein/./repos/github.com/Shougo/dein.vim

" Required:
if dein#load_state('/home/daichi/.cache/dein/.')
  call dein#begin('/home/daichi/.cache/dein/.')

  " Let dein manage dein
  " Required:
  call dein#add('/home/daichi/.cache/dein/./repos/github.com/Shougo/dein.vim')

  " Add or remove your plugins here
  call dein#add('junegunn/seoul256.vim')
  call dein#add('vim-airline/vim-airline')
  call dein#add('vim-airline/vim-airline-themes')

  " Required:
  call dein#end()
  call dein#save_state()
endif

" Required:
filetype plugin indent on
syntax enable

" If you want to install not installed plugins on startup.
if dein#check_install()
  call dein#install()
endif

" seoul256
let g:seoul256_background = 233
colo seoul256

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

"End dein Scripts-------------------------

set number
syntax on
set whichwrap=b,s,[,],<,>,~,h,l
set cursorline
set incsearch
set hlsearch
set ignorecase