Bear Su's Blog

安裝 Powerline

因為注意到 vim-powerling 已經不再維護,而建議改用 Powerline 時,就想說來試試看。

在設定 Vim 的狀態列時沒什麼問題,但在設定 Shell 時就出現奇怪的情況了,好在後來有解決。

這篇紀錄我在 Mac OSX 安裝 Powerline 的步驟。

有任何錯誤或建議都歡迎告知:)

環境:

  • OS: OSX EI Capitan version 10.11
  • Shell: bash

安裝 Powerline


Powerline

美觀的狀態列

確認系統 python 版本是 2.7

$ python -V
Python 2.7.10

由於我還沒有安裝過 pip , python 安裝套件的指令,執行以下指令安裝:

$ sudo easy_install pip

pip 安裝 Powerline (由於權限問題,我無法安裝到系統目錄,所以我加上了 --user 選項,選擇安裝到使用者目錄底下)

$ pip install --user powerline-status

查看 Powerline 被安裝到哪個路徑

$ pip show powerline-status
--
Metadata-Version: 1.1
Name: powerline-status
Version: 2.2
Summary: The ultimate statusline/prompt utility.
Home-page: https://github.com/powerline/powerline
Author: Kim Silkebaekken
Author-email: kim.silkebaekken+vim@gmail.com
License: MIT
Location: /Users/bear/Library/Python/2.7/lib/python/site-packages
Requires:

# 以我的例子,我的使用者名稱是 bear
# 所以會安裝到 /Users/bear/Library/Python/2.7/lib/python/site-packages 目錄底下

安裝 Powerline 字型


這樣狀態列才不會變成亂碼

$ git clone https://github.com/Lokaltog/powerline-fonts.git
$ cd powerline-fonts/
$ ./install.sh

設定 Vim 狀態列


編輯 ~/.vimrc,加入以下設定,(請將 {path} 替換成 pip show powerline-status 所顯示的路徑)

# 在所有 window 中都顯示狀態列
set laststatus=2

# powerline 的相關設定
set rtp+={path}/powerline/bindings/vim
let g:minBufExplForceSyntaxEnable = 1
python from powerline.vim import setup as powerline_setup
python powerline_setup()
python del powerline_setup

螢幕截圖

Vim 狀態列

設定 Shell 狀態列


在這邊我遇到了一個詭異的情況,原本應該是 scripts 目錄下的檔案卻都跑到 Python 的 bin 目錄底下

# 原本應該有這個目錄,底下會有 powerline 相關的檔案
/Users/bear/Library/Python/2.7/lib/python/site-packages/scripts

# 但都跑到這目錄底下了
/Users/bear/Library/Python/2.7/bin

所以需要搬動檔案到正確的目錄,以我的例子:

以下 {path} 要換成執行pip show powerline-status 顯示的路徑

# 移動到安裝目錄
$ cd {path}

# 建立 scripts 目錄
$ mkdir scripts

# 將檔案移到 scripts 目錄下
$ mv ../../../bin/* ./scripts/

最後在 ~./.bash_profile 中加入以下設定,重新開啟終端機就會出現了絢麗的提示了(以下 {path} 要換成執行pip show powerline-status 顯示的路徑)

# Prompt
POWERLINE_INSTALL_PATH={path}
POWERLINE_SCRIPT=$POWERLINE_INSTALL_PATH/powerline/bindings/bash/powerline.sh
if [ -f $POWERLINE_SCRIPT ]; then
  $POWERLINE_INSTALL_PATH/scripts/powerline-daemon -q
  source $POWERLINE_SCRIPT
fi

另外客製化 Shell 狀態列的樣式,可以參考文件 (以下 {path} 要換成執行pip show powerline-status 顯示的路徑)

# 建立目錄
$ mkdir -p ~/.config/powerline/themes/shell

# 複製設定檔
$ cp {path}/powerline/config_files/themes/shell/default.json ~/.config/powerline/themes/shell/default.json

# 修改設定檔
$ vi ~/.config/powerline/themes/shell/default.json

以下是我的設定檔:

  • 使用者名稱前加上符號
  • 加入時間
  • 加上 git branch 提示
{
  "segments": {
    "left": [
      {
        "function": "powerline.segments.shell.mode"
      },
      {
        "function": "powerline.segments.common.net.hostname",
        "priority": 10
      },
      {
        "function": "powerline.segments.common.env.user",
        "before": "ⓑ ",
        "priority": 30
      },
      {
        "function": "powerline.segments.common.env.virtualenv",
        "priority": 50
      },
      {
        "function": "powerline.segments.common.time.date",
        "args": {
          "format": "%H:%M"
        },
        "priority": 10
      },
      {
        "function": "powerline.segments.shell.cwd",
        "priority": 10
      },
      {
        "function": "powerline.segments.shell.jobnum",
        "priority": 20
      },
      {
        "function": "powerline.segments.shell.last_pipe_status",
        "priority": 10
      },
      {
        "function": "powerline.segments.common.vcs.branch",
        "priority": 40
      }
    ]
  }
}

螢幕截圖

我的 Shell 狀態列

Vim-airline


後來有在網路上查到另外一個 vim-airline,與 Powerline 不同的是 vim-airline 是單純的 vim-plugin,如果只有 Vim 需要絢麗的狀態列的話,vim-airline 應該會是比較好的選擇。


參考:


如果覺得這篇文章對您有所幫助,歡迎贊助我一杯咖啡 ☕️

祝您有美好的一天 ❤️