始まる前に
格好いい開発環境を作るのは、仕事に集中するためにテーブルの上を綺麗に整理することと同様です。
私はshell、tmux、vimを主に使っていますが、これらを格好良くするため、Powerlineを使います。
Powerlineについてはあちこちに情報が多いし、多様なので、どんな方法を選べばいいのか躊躇してしまいます。
過去、私もそうでした。
ある程度、頭の中が整理されたので、記事を作成しました。
背景知識
Powerlineはpythonで作られたライブラリです。
Powerlineを使うためにはpythonとそのパッケージ管理ツールであるpipをインストールする必要があります。
そして、Powerline用のフォントをサーバーとそのサーバーに接続するターミナルにも適用しなければなりません。
Powerline用のフォントをインストールする方法はosごとに異なります。
そして、ターミナルごとにPowerline用のフォントの設定方法も異なります。
これだけではありません。
Powerlineは様々なshell、vim、tmux環境に使えますが、その設定方法が異なります。
女性が化粧することと同じく綺麗に見せるためには色々と時間が掛かります。
しかし、vimを使う人には他の道もあります。
vim-airlineというプラグインを使うことで、Powerlineと同じ効果を演出できます。
vim-airlineは、vim scriptで作成されたので、pythonやpipでPowerlineをインストールしなくても大丈夫です。
これは大きなメリットですね。
Powerlineの場合はPowerlineのdaemonをバックグラウンドで実行させる必要がありますが、vim-airlineの場合は要りません。
しかし、vim-airlineもPowerline用のフォントを使うため、フォントのインストールとターミナルへの適用は必要になります。
ここではvim-airlineを使う方法について説明します。
vim-airlineをインストール
vimのパッケージ管理ツールとしてvim-plugを使っています。
vim-plugについての詳細は「NeoBundleからvim-plugへ」をご参照ください。
vim-plugでvim-airlineとvim-airline-themesをインストールします。
.vimrcファイルを次のように修正して.vimrcをリロードした後、「:PlugInstall!」を実行してください。
call plug#begin('~/.vim/plugged')
...snip...
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'call plug#end()
次は、vim-airlineのオススメの設定です。
" Powerline系フォントを利用するsetlaststatus=2letg:airline_powerline_fonts =1letg:airline#extensions#tabline#enabled =1letg:airline#extensions#tabline#buffer_idx_mode =1letg:airline#extensions#whitespace#mixed_indent_algo =1letg:airline_theme ='tomorrow'if!exists('g:airline_symbols')letg:airline_symbols = {}endif" unicode symbolsletg:airline_left_sep ='»'letg:airline_left_sep ='▶'letg:airline_right_sep ='«'letg:airline_right_sep ='◀'letg:airline_symbols.crypt ='🔒'letg:airline_symbols.linenr ='☰'letg:airline_symbols.linenr ='␊'letg:airline_symbols.linenr =''letg:airline_symbols.linenr ='¶'letg:airline_symbols.maxlinenr =''letg:airline_symbols.maxlinenr ='㏑'letg:airline_symbols.branch ='⎇'letg:airline_symbols.paste='ρ'letg:airline_symbols.paste='Þ'letg:airline_symbols.paste='∥'letg:airline_symbols.spell='Ꞩ'letg:airline_symbols.notexists ='∄'letg:airline_symbols.whitespace ='Ξ'" powerline symbolsletg:airline_left_sep =''letg:airline_left_alt_sep =''letg:airline_right_sep =''letg:airline_right_alt_sep =''letg:airline_symbols.branch =''letg:airline_symbols.readonly=''letg:airline_symbols.linenr ='☰'letg:airline_symbols.maxlinenr =''
vim-airlineは色んなthemeを提供しています。
スクリーンショットがありますから好みのthemeを探してみましょう。
https://github.com/vim-airline/vim-airline/wiki/Screenshots
私はmacOSの環境でtomorrowのthemeを使っています。
letg:airline_theme ='tomorrow'
Powerline fontsをインストール
https://github.com/powerline/fonts
ここでQuick installationのところを確認してください。
インストール手順が詳細に書かれています。
# clone
git clone https://github.com/powerline/fonts.git --depth=1# installcd fonts
./install.sh# clean-up a bitcd ..
rm -rf fonts
要は、install.shを実行することです。
install.shの中身を確認してみましょう。
<F28>#!/bin/bash# Set source and target directoriespowerline_fonts_dir=$(cd"$( dirname "$0")"&&pwd)# if an argument is given it is used to select which fonts to installprefix="$1"find_command="find \"$powerline_fonts_dir\" \( -name '$prefix*.[o,t]tf' -or -name '$prefix*.pcf.gz' \) -type f -print0"if[[`uname`=='Darwin']];then# MacOSfont_dir="$HOME/Library/Fonts"else# Linuxfont_dir="$HOME/.local/share/fonts"
mkdir -p $font_dirfi# Copy all fonts to user fonts directoryecho"Copying fonts..."eval$find_command| xargs -0 -n1 -I % cp "%""$font_dir/"# Reset font cache on Linuxifcommand -v fc-cache @>/dev/null ;thenecho"Resetting font cache, this may take a moment..."
fc-cache -f $font_dirfiecho"Powerline fonts installed to $font_dir"<F29>
unameでosを判別してホームディレクトリの配下にPowerline用のフォントをコピーします。
そして、macOSやLinuxシステムではfc-cacheを実行してcacheをリセットすることでコピーしたフォントを使えます。
私の場合、macOSは一人で使うため、ホームディレクトリの配下にコピーしても良いですが、Linuxは開発サーバーとして複数人が使うことを想定しています。
Powerline用のフォントファイルは意外とファイルサイズが大きいので、人々が共通的に使える場所にコピーした方がいいと思います。
Linuxの場合はinstall.shを使わずに、下記のコマンドを使います。
install.shを参考にして作りました。
root権限で実行してください。
(Linuxでも一人で使うことであれば、Quick installationの手順通りinstall.shを実行してください。)
# mkdir -p /usr/share/fonts/powerline# find /tmp/fonts \( -name '*.[o,t]tf' -or -name '*.pcf.gz' \) -type f -exec cp {} /usr/share/fonts/powerline \;# fc-cache -vf
fc-cacheやfc-listなど、フォンド関連コマンドを使うためにはfontconfigが必要です。
インストールされていない場合は、インストールしてください。
- Linux
% sudo yum install -y fontconfig
- macOS
% brew install fontconfig
Rictyを使いたい場合
macOSの場合は、次の記事を参照してください。
Linuxの場合だと少し面倒です。
まずRictyフォントを作ってPowerline用のフォントに変換しなければなりません。
しかし、心優しいエンジニアさんがすでに作っておいたものがありました。
https://github.com/mzyy94/RictyDiminished-for-Powerline
これを使えばフォントを作りPowerline用のフォントに変換する面倒な作業を省けます。
vim-powerline-fontpatchedの配下にあるフォントを/usr/share/fonts/powerlineの配下にコピーしてfc-cacheを実行すれば完了です。
ターミナルでPowerline用のフォントを設定
- iterm2
Preferences > Profiles > Text 順に選択します。
FontとNon-ASCII Fontにて「Change Font」ボタンをクリックして〜for Powerlineというフォントを選択します。
ここではRictyをPowerlineに対応したフォントを選びました。
Image may be NSFW.
Clik here to view.
- macOSのターミナル
プロファイル > テキスト 順に選択します。
フォントにて「変更」ボタンをクリックして〜for Powerlineというフォントを選択します。
ここではRoboto Mono for Powerlineを選びました。
powerline/fontsの中に含まれているフォントです。
Image may be NSFW.
Clik here to view.
- rlogin
設定 > フォント 順に選択します。
フォントセットからUNICODEを選択し「編集」ボタンをクリックしてください。
Image may be NSFW.
Clik here to view.
IConv Character Setには「UTF-16」を、フォント設定のWindows Character Setには「ANSI」を選択します。
そして、「Font」ボタンをクリックします。
Image may be NSFW.
Clik here to view.
〜for Powerlineというフォントを選択し「OK」ボタンをクリックします。
ここではRoboto Mono for Powerlineを選びました。
Image may be NSFW.
Clik here to view.
因みに、WindowsではFontのインストールの手順がmacOSやLinuxと異なります。
Windows 7ですと、ダウンロードしたフォントからマウス右クリックして「インストール」をクリックすれば完了です。
Image may be NSFW.
Clik here to view.
詳細は下記のリンクをご参照ください。
フォントのインストール(Windows 10/8/7/Vista)
tmuxがステータスラインの情報を更新するたびにステータスラインが増えて行く場合
Ambiguous charactersはダメ!
半角文字は半角で、全角文字は全角で処理しなさいと言うことですが、ターミナルでこの設定が有効になっているとPowerlineのステータスラインが更新するたびに増加してしまいます。
私が使っているターミナルの設定方法をご紹介します。
- iterm2
「Treat ambiguous-width characters as double-width」のチェックを外してください。
Image may be NSFW.
Clik here to view.
- macOSのターミナル
「詳細」タブにて「Unicode 東アジアA(曖昧)の文字幅をW(広)にする」のチェックを外してください。
Image may be NSFW.
Clik here to view.
- rlogin
設定 > スクリーン > ターミナル 順に選択します。
エスケープシーケンスにて「?8428」にチェックを入れて「適用」ボタンをクリックしてください。
Image may be NSFW.
Clik here to view.
tmuxの設定について
今まで行った作業でvimでは綺麗なPowerlineのステータスラインが表示されるはずです。
tmuxを使っている場合、vimと同じくステータスラインを表示させることが可能です。
tmuxでもvim pluginを使うことでPowerlineのステータスラインを生成することが可能です。
詳細は次の記事をご参照ください。