Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

PowerlineでVimとシェルを強化!カスタムステータスライン&プロンプトの導入ガイド

Powerlineは、Pythonで開発されたVimエディタ向けの高機能ステータスラインプラグインです。bashzsh、tmuxなど、さまざまなアプリケーションのステータスラインやプロンプトとしても活用できます。

エディタウィンドウの下部にカスタマイズ可能で情報量の多いステータスラインを表示することで、Vimの見た目と操作性を大幅に向上させます。表示できる情報には、現在のモード(ノーマル/挿入/ビジュアルなど)、ファイル名、パス、行番号・列番号、Gitブランチ、Python仮想環境などが含まれます。

PowerlineでVimとシェルを強化!カスタムステータスライン&プロンプトの導入ガイド

▲ Powerlineで表示されるVimステータスライン

主な特徴

  • Pythonで実装されているため、拡張性が高く機能も豊富。
  • 安定していてテスト済みのコードベースを持ち、Python 2.6以降およびPython 3で動作。
  • 複数のLinuxユーティリティやツールのプロンプト・ステータスラインに対応。
  • 設定や装飾カラーはJSONで記述されており、管理が簡単。
  • 高速かつ軽量で、デーモンサポートによりさらなる性能向上を実現。

本記事では、RHEL系およびDebian系ディストリビューションを例に、PowerlinePowerlineフォントのインストール方法、そしてBashVimでの使い方を解説します。

LinuxへのPowerlineのインストール方法

ほかの無関係なプロジェクトとの名前の重複を避けるため、PowerlineはPyPI(Python Package Index)ではpowerline-statusというパッケージ名で公開されています。

PyPIからパッケージをインストールするには、Pythonのパッケージ管理ツールpipが必要です。まずはお使いのLinuxシステムにpipをインストールしましょう。

$ sudo apt install python3-pip [Debian / Ubuntu / Mint の場合]
$ sudo yum install python3-pip [RHEL / CentOS / Fedora / Rocky Linux / AlmaLinux の場合]
$ sudo emerge -a dev-lang/pip [Gentoo Linux の場合]
$ sudo apk add py3-pip [Alpine Linux の場合]
$ sudo pacman -S python-pip [Arch Linux の場合]
$ sudo zypper install python3-pip [OpenSUSE の場合]

続いて、最新の開発版PowerlineをGitリポジトリから取得できるよう、Gitをインストールします。

$ sudo apt install git [Debian / Ubuntu / Mint の場合]
$ sudo yum install git [RHEL / CentOS / Fedora / Rocky Linux / AlmaLinux の場合]
$ sudo emerge -a git [Gentoo Linux の場合]
$ sudo apk add git [Alpine Linux の場合]
$ sudo pacman -S git [Arch Linux の場合]
$ sudo zypper install git [OpenSUSE の場合]

準備が整ったら、pipコマンドでPowerlineをインストールします。

$ pip install powerline-status

インストール時に「externally-managed-environment」というエラーが表示されることがあります。これは最近のLinuxディストリビューションにおいて、システム全体のPython環境をpipが直接変更することを防ぐ仕組みによって発生するものです。

このエラーを回避するには、以下のファイルを削除してから、再度pipコマンドを実行してください。

$ sudo rm -rf /usr/lib/python3.x/EXTERNALLY-MANAGED

あるいは、各ディストリビューションのパッケージマネージャーを使って直接インストールすることも可能です。

$ sudo apt install powerline [Debian / Ubuntu / Mint の場合]
$ sudo yum install powerline [RHEL / CentOS / Fedora / Rocky / AlmaLinux の場合]
$ sudo emerge -a sys-apps/powerline [Gentoo Linux の場合]
$ sudo apk add powerline [Alpine Linux の場合]
$ sudo pacman -S powerline [Arch Linux の場合]
$ sudo zypper install powerline [OpenSUSE の場合]

LinuxへのPowerlineフォントのインストール方法

Powerlineは、開発者向けの特殊な矢印やシンボルを表示するために独自のグリフ(字形)を使用します。そのため、シンボルフォントまたはパッチ適用済みフォントをあらかじめシステムにインストールしておく必要があります。

pipでPowerlineをインストールした場合は、最新版のシンボルフォントとfontconfig設定ファイルを以下の手順で配置してください。

$ wget https://github.com/powerline/powerline/raw/develop/font/PowerlineSymbols.otf
$ wget https://github.com/powerline/powerline/raw/develop/font/10-powerline-symbols.conf
$ sudo mv PowerlineSymbols.otf ~/.local/share/fonts/
$ sudo fc-cache -vf ~/.local/share/fonts/
$ sudo mv 10-powerline-symbols.conf ~/.config/fontconfig/conf.d/

パッケージマネージャーでPowerlineをインストールした場合は、次のコマンドでフォントを追加できます。

$ sudo apt install fonts-powerline [Debian / Ubuntu / Mint の場合]
$ sudo yum install powerline-fonts [RHEL / CentOS / Fedora / Rocky / AlmaLinux の場合]
$ sudo emerge -a sys-apps/powerline-fonts [Gentoo Linux の場合]
$ sudo apk add powerline-fonts [Alpine Linux の場合]
$ sudo pacman -S powerline-fonts [Arch Linux の場合]
$ sudo zypper install powerline-fonts [OpenSUSE の場合]

PowerlineでBashのカラープロンプトを有効にする

pipでPowerlineをインストールした場合、~/.bashrcファイルに以下の行を追加することで、bashシェルとVimエディタでPowerlineを有効化できます。

export TERM="screen-256color"

bashシェルでPowerlineをデフォルトで有効にするには、以下のスニペットを~/.bashrcに追記します。

まず、次のコマンドでインストール済みPowerlineの格納場所を確認します。

$ pip show powerline-status
Name: powerline-status
Version: 2.7
Summary: The ultimate statusline/prompt utility.
Home-page: https://github.com/powerline/powerline
Author: Kim Silkebaekken
License: MIT
Location: /home/tecmint/.local/lib/python3.11/site-packages

Powerlineの実際のインストール先がわかったら、以下の行のパスをお使いの環境に合わせて書き換えてください。

powerline-daemon -q
POWERLINE_BASH_CONTINUATION=1
POWERLINE_BASH_SELECT=1
. /home/tecmint/.local/lib/python3.11/site-packages/powerline/bindings/bash/powerline.sh

パッケージマネージャーでインストールした場合は、次のコマンドだけで有効化できます。

$ source /usr/share/powerline/bindings/bash/powerline.sh

一度ログアウトして再ログインすると、下図のようなPowerlineステータスラインが表示されます。

PowerlineでVimとシェルを強化!カスタムステータスライン&プロンプトの導入ガイド

▲ Bashで有効化されたPowerlineステータスライン

ディレクトリを移動してみてください。「パンくずリスト」風のプロンプトが現在の位置を示すように変化します。

また、実行待ちのバックグラウンドジョブも確認できます。さらに、リモートのLinuxマシンにPowerlineをインストールしておけば、SSH接続時にプロンプトへホスト名が自動的に追加されるのも便利なポイントです。

PowerlineでVimのカラーステータスラインを有効にする

Vimをメインエディタとして使っている方にとって嬉しいことに、Vim専用の強力なPowerlineプラグインも用意されています。有効にするには、~/.vimrcに以下の行を追加します。

python3 from powerline.vim import setup as powerline_setup
python3 powerline_setup()
python3 del powerline_setup
set laststatus=2

これでVimを起動すると、スタイリッシュな新しいステータスラインが表示されます。

PowerlineでVimとシェルを強化!カスタムステータスライン&プロンプトの導入ガイド

▲ Vimで有効化されたPowerlineステータスライン

まとめ

Powerlineを活用すれば、複数のアプリケーションにカラフルで美しいステータスラインとプロンプトを設定でき、コーディング環境がぐっと快適になります。本ガイドが皆さんのお役に立てば幸いです。質問や追加のアイデアがあれば、ぜひコメント欄でお知らせください。

  1. シェルスクリプトでヒアドキュメント(Heredoc)を使いこなす方法

    ヒアドキュメント(Heredoc)とは、特別なコードブロックとして扱われる入力やファイルストリームのリテラルのことです。このコードブロックはコマンドへ渡されて処理されます。ヒアドキュメントはUNIXシェルに由来する機能で、sh、tcsh、ksh、bash、zsh、cshなど主要なLinuxシェルで利用できます。さらに、Perl、Ruby、PHPといった他のプログラミング言語でも同様の機能がサポートされています。 ヒアドキュメントの基本構造 ヒアドキュメントは、2つの山括弧 (<<) の後にデリミタ(区切りトークン)を続けて記述します。そして、開始時に使ったのと同じデリミタでコードブ

  2. NetHogsで実現! Linuxのプロセス別ネットワーク帯域使用量をリアルタイム監視する方法

    Linux向けのオープンソースネットワーク監視ツールは数多く存在します。たとえば、iftopコマンドで帯域使用状況を監視したり、netstatやssコマンドでインターフェース統計レポートを確認したり、topコマンドでシステム上の実行中プロセスを監視したりすることができます。 しかし、「プロセスごとのネットワーク帯域使用量をリアルタイムで把握したい」というニーズがあるならば、選ぶべきはNetHogs一択といえるでしょう。 NetHogsとは何か? NetHogsは、Linuxのtopコマンドに似た操作性を持つオープンソースのコマンドラインツールで、各プロセスやアプリケーションが消費して