CLI で ranger ファイラーを使うことのメモ

シンプルで多機能、カスタマイザブルな Linux TUI ファイラー

rangerとは

マウスでやる GUI のファイルマネージャ(ファイル管理ソフト)はマウスだけでほとんどの事ができるし、片手だけでできてしまうのもいい。けれどオブジェクトにマウスカーソルを合わせて、という操作そのものは、軽快で素早いということとはベクトルが違う。

それに対しコンソール版のファイルマネージャ(TUI ファイルマネージャ)は、マウスで使うものではないからこその操作体系に加えて、小サイズゆえの軽さ、起動時間の早さがあいまって、とっても軽快。

そのひとつ、 ranger は vimライクなキーバインディングのファイラーソフトだ。

http://ranger.nongnu.org/

TUIファイラーと言えば Midnight Commander のような2画面構成のものを連想しやすいと思うが、ranger の基本状態はシンプルで独特な1画面・3列表示という画面構成だ。これは慣れると非常に扱いやすいのだが、新バージョンでは2画面ファイラーとして使うことも可能になった。

ほかにも、タブを切り替えながら使えたり、画像、動画、pdf、書庫などのプレビュアーとしても使え、ファイルタイプに応じてアプリを起動する独自のファイルランチャーをも備えている。また、設定次第では git のステータスを端的に表示するようなことまでできてしまう。

X window の端末エミュレータでも動くわけだから GUI ファイラーなんていらなくなってしまうかもしれない。言い過ぎだろうか。

私はこの ranger をよく使っているけれど、使い込むうちに豊富な機能の使い方は整理しておくのがいいと感じ、この通りに ranger を使うことのメモにした。

rangerのインストール

パッケージマネージャでインストールする

パッケージマネージャでインストールできれば依存関係も解決してくれるから、当たり前のように手間がかからなくていい(もっとも、基本的な依存は Python と less だけのようだけれど)。

Arch Linux のバイナリリポジトリには community/ranger があり、最新バージョンの登録も早いから、これを利用する。

$ sudo pacman -S ranger

他に Ubuntu 16.04 LTS で試してみたところ、APTリポジトリに ranger はあるけれど、ちょっと古いバージョンの 1.7 が登録されてあった。もちろんそれでも便利に使えるのだけれど、Ver.1.8 より古いと最初に触れた2画面(多画面)ファイラーとしての機能とかが使えない。

ここはひとつ、最新安定版をダウンロードして使うのがいいかと思われる。

マニュアルインストール

ranger は Python で実装されており、公式では Python 2.7 と Python 3.1〜3.4 上で動作確認がとられているもよう(私のところでは 3.5 と 3.6 でも大丈夫)。 Ubuntu 16.04 ではまだデフォルトが Python 2.7 のようだが、 ranger を使うにおいてはそのままでも問題ない。

次に ranger 本体のインストール。

以下のページの ranger-stable.tar.gz が最新ステーブルだ。これをダウンロードしてインストールする。

http://ranger.nongnu.org/download.html

README では以下のようなやり方が示されていた。

$ wget -O - http://nongnu.org/ranger/ranger-stable.tar.gz | tar xzf -
$ cd ./ranger-?.?.?
$ sudo make install

上記のようにインストールした後でrangerをアンインストールしたいならば、解凍ディレクトリに作成された install_log.txt をもとにファイルを削除する。

  • pip install

    だがもし pip がインストールされているならばもっと簡単に、

    $ sudo pip install http://nongnu.org/ranger/ranger-stable.tar.gz
    

    というようにインストールしてしまうのもいい。昨今の Python 事情ではモジュール管理に pip がベターのようだし、アンインストールも pip uninstall ですむ。

    なお、 PyPI に ranger という名前の登録があるが、それはここで扱うファイルマネージャの ranger とは違う別のものなのであった。

rangerをちょっといじってみる

インストールできたら、ちょっといじってみる。

端末エミュレータで ranger コマンドを実行する。

$ ranger

ranger の画面はシンプルな3列構成で、言われる通りにミニマリスティックな雰囲気。真ん中の列にカレントディレクトリが表示されて、その左は上位ディレクトリ、右はカレントでカーソルが指すディレクトリの内容(もしくはファイルのプレビューや情報)が表示される。

ranger_filer_ss01.png

キー操作は vim ライクなものだ。

h j k l で ←↓↑→カーソル、 gg で最初にジャンプ、 G で最後にジャンプ。

テキストファイルにカーソルを合わせると右カラムに内容がプレビューされる。 i を押せば画面全体でプレビュー。もう一度 i でもどる。

ファイルとディレクトリのコピペは、 yy でコピー、あるいは dd で切り取って、 pp でペースト。 SPACE キーで複数を選択してからコピペしたりもできる。

検索するには / に続けて検索文字列を入力し ENTER でファイル名検索。 n でその次を検索、 N で前を検索。

タブ機能を使ってみよう。 gn で新規タブを作成すると、右上にタブが番号で示される。 TAB キーを押すとタブを切り替えられる。

タブを二つ設けた状態で ~ キーを押すとそれぞれのカレントディレクトリの内容が2画面に並んで表示される。こうすると一方のタブ窓で yy してから TAB で他方の窓へ切り替えて pp でペースト、といった具合に2画面ファイラーのように扱える。

ここでさらに gn を押してタブを増やせば3画面になるし、4画面も5画面もいける。ハイビジョン比率がありがたいマルチ画面機能なのだ。

もう一度 ~ を押せばもとの1画面3列のやつにもどる。

q でタブを閉じる。 q を押してタブがなくなれば ranger が終了する。タブをひとつずつ消さずとも Q を押せば一気に終了できる。

ヘルプは ?m だ(man page を表示)。 ?k で操作キー一覧が見られる。

rangerの使い方

rangerの操作モードは、起動後の標準画面(ブラウザ)、ページャ及びヘルプ表示、コマンドのコンソール、タスクビューの4つだ。

ブラウザ

  • ブラウザの基本操作

    rangerを起動すると現れる標準画面(ブラウザ)の主なキー操作は以下の通り。

    操作キー 機能 他のキー
    j カーソル1行下 <down>
    k カーソル1行上 <up>
    h 上層へ移動 <left>
    l 開く <right> / <enter>
    E エディタで開く  
    i ページャで開く/プレビュー画像を大きく表示  
    r アプリを指定して開く  
    H 戻る  
    L 進む  
    C-f 1ページ下へスクロール  
    C-b 1ページ上へスクロール  
    gg カーソルを最初の行へ移動  
    G カーソルを最後の行へ移動  
    C-l 画面を再描画  
    ~ マルチペインとシングルペインの切り替え  
    gn タブを新規作成 C-n
    <tab> タブを切り替える gt / M-<right>
    S-<tab> タブを切り替える(逆方向) gT / M-<left>
    M-<番号> タブ番号指定切替え(無ければ作る)  
    C-w タブを閉じる gc
    q タブを閉じる(タブが無くなればranger終了) ZZ
    uq 直前に閉じたタブを復活  
    Q rangerを終了(強制終了) ZQ
    C-[ キャンセル <esc>

    ranger は多機能なので、いきなり全てのキーボードコマンドを憶えるなんてできない。でも使ってみるとわかるが、 g やら z やらを押すとその次に押すべき文字の一覧が画面下方にポップアップするので、慣れないうちはいくらかの救けにはなるだろう。難しいことなんかないかもしれない。

    ranger_filer_ss02.png

    テキストファイル上で l (あるいは <enter> または E )を押すと環境変数 $EDITOR に設定されたテキストエディタでオープンしてくれる。多くの 環境 では vim か nano が定義されているだろうが(もちろんEmacsだって有り得る)、そうでなければ ranger のデフォルトでは nano を使うようだ。

    ~ キーを押すとシングルペインビューとマルチペインビューを切り替える。マルチペインは Ver.1.8 からの新機能で、タブの内容を1画面に並べて表示するモード。簡単な使い方のところでも触れたが、タブが2つであれば MC のような2画面ファイラーと同じようになる。

  • 表示 / フィルタ

    表示に関する主な機能は以下の通り。

    操作キー 機能 他のキー
    R 表示内容をリロード  
    zh 隠しファイルを表示する/しない C-h
    zf フィルタをかけて表示  
    Mi 表示モード fileinfo  
    Mf 表示モード filename  
    Mt 表示モード metatitle  
    Mm 表示モード mtime  
    Mp 表示モード permissions  
    Ms 表示モード sizemtime  

    標準設定ではドットはじまりのファイルは表示されていないが zh で表示をトグルできる。

    フィルタ表示するには、 zf を押すと最下行に :filter と表示され入力が促されるので、フィルタの文字列を入力して <enter> 。フィルタ状態にあるディレクトリでは最下行のステータス欄右寄りに f-'hogehoge' などと表示される。フィルタを解除するにはもう一度 zf <enter>

  • ソート

    ソートは o コマンド。2文字目が大文字で逆順となる。

    操作キー 並べる順番
    ob / oB basename (ファイル名順)
    oe / oE extension (拡張子名順)
    ot / oT type (type順)
    oa / oA atime (atime順)
    oc / oC ctime (ctime順)
    om / oM mtime (mtime順)
    os / oS size (サイズ順)
    on / oN natural (ディレクトリエントリ順)
    oz random (ランダム?)
    or reverse (逆順にする)

    ソートで逆順にするには2文字目を大文字にするのだけれど、後から or を押しても同じ結果になる。つまり、ファイル名逆順にソートするには oB と押すが、 obor でも同じ結果にはなる。Shiftキー押したくないときに。

    ソートした時にディレクトリを優先するか否か、あるいは大文字を優先するか否かの設定を以下のキーで行える。

    操作キー 並べる順番
    zd ディレクトリを先に並べて表示する/しない
    zs 大文字を先に並べて表示する/しない
  • ジャンプとブックマーク

    軽快とはいえカーソルだけでディレクトリをたどるのは大変。以下の通り各ディレクトリへジャンプするキーがある。

    操作キー 機能 他のキー
    gh ホームディレクトリへジャンプ  
    g/ / gr
    gd /dev  
    ge /etc  
    gm /media  
    gM /mnt  
    go /opt  
    gs /srv  
    gu /usr  
    gv /var  
    '' 直前のディレクトリへジャンプ  
    gl カレントディレクトリのリンクを辿る  
    gL カーソル対象ファイルのリンクを辿る  
    f インクリメンタルサーチ  

    主なディレクトリについては g のコマンドに登録されてある。

    直前のディレクトリへのジャンプは '' (シングルクォートを2回)。

    gl と gL はシンボリックリンクのターゲットへジャンプする。これらは地味に便利。この機能はそれぞれ、 glcd $(readlink -f .)gLcd $(dirname $(readlink -f <file>)) と同じことのように考えられる。

    インクリメンタルサーチは f に続けて検索したい文字列を入力していくと、カレントのディレクトリ上に候補を見つけた時点でジャンプする。

    またブックマークを扱うことができ、よく使うディレクトリを設定しておいて素早くジャンプできる。

    操作キー 機能
    m<key> <key> にブックマークする (<key>: 任意の1文字)
    '<key> <key> のブックマークにジャンプ
    um<key> <key> のブクマを削除する

    扱い方は less と似た要領で、マークしたいディレクトリを表示してから m を押し、続いて任意の1文字を押すとブックマーク登録できる。呼び出したい時は ' の後に登録に使った1文字を入力する。

    ブックマークは ~/.config/ranger/bookmarks に保存されてあって、rangerを終了しても憶えていてくれる。

    なお '` (バッククォート)は同じと man page に書かれてあるから、押しやすい方を使うといい。

  • ファイル名検索

    カレントのディレクトリ内でファイル名の検索ができる。 / を押すと、最下行のコンソールに :search と入力された状態でコマンドモードになるので、続けて文字列を入力し <enter> で順方向に検索。 nN で再検索する。

    操作キー 機能
    / ファイル検索(文字列入力)
    n 順方向に検索
    N 逆方向に検索
  • 選択

    <space> で複数のファイルを選択して、コピーや切り取りを行える。選択したファイルは黄色い太字になって視覚に訴える。

    キー 機能
    <space> ファイルを選択
    v すべて選択 または 選択対象を反転
    V 範囲を選択
    uv 選択を全て解除

    <space> での選択は

  • コピペ

    コピペコマンドは以下の通り。 d コンボが切り取り、 y コンボがコピー、 p コンボがペースト。

    操作キー 機能
    dd 対象を切り取り状態にする
    dr 対象の切り取り状態をキャンセル
    ud 切り取り状態を全てキャンセル
    yy 対象をコピー状態にする
    yr 対象のコピー状態をキャンセル
    uy コピー状態を全てキャンセル
    pp ペースト (同名ファイルがあれば別名でペースト)
    po ペースト (同名ファイルは上書き)
    pl シンボリックリンクを作成
    pL シンボリックリンクを作成(相対リンク)

    切り取り状態にする、というのはつまり、 dd を押した時点では何も起きないけれど pp でペーストを指示した時点でもとのファイルが切り取られてアクションが起きる、ということを端的に示したつもりの表現。なお dd するとファイル名の色が暗く変わるので状態がわかる(カーソルをはずしてみるといい)。

    ここで pp せずに ud を押せば全ての切り取り候補をキャンセルできる。コピーについても同様だ。ちなみにキャンセルキーの uduy は同じ機能で、どっちをどっちで使ってもいいようだ。

    ペーストの pp では、同名のファイルがある場合はファイル名末尾に __1 などと付け加えてペーストしてくれるので、上書きされることはない。ある意味安心できるかもしれないが、困ったことも起こるだろう。だから上書きしちゃっていいんだよという場合は po

    pl はもとのファイルのシンボリックリンクを作成してくれる。ここでちょっと注意したいのは、 dd した後に pl するともとのファイルはそのままにシンボリックリンクが作られるが、切り取り状態はキャンセルされていないので、それを忘れてうっかり pp するとたいへんだ。ここらへん、ちょっとわかりにくいところでもある。あやまってファイルをポトッと落とさないように気をつけたい。シンボリックリンク作成には、せめて dd でなく yy を使うようにしたほうがいいのだろう。

  • ファイル名のコピペ

    xsel コマンドがあると、以下のコマンドが有効になり、ファイル名のコピペができるようになる。

    操作キー 機能
    yp フルパス名をコピーする
    yn ファイル名をコピーする
    yd ディレクトリ名をコピーする

    あらかじめ名前をコピーしたいファイルの上で yp などとやって、コンソールで Shift+Insert などでペーストしたりする。

  • リネーム / ディレクトリ作成 / 削除

    検索やフィルタなどもそうだったが、これらのコマンドは最下行に表示されるコンソールでコマンドを実行する。コマンド入力までをキーコマンドにしてあり、コンソール入力に続けて <enter> で実行される(コマンドとコンソールについてはその項を参照のこと)。

    操作キー コマンド 機能 他のキー
    a :rename リネーム / 拡張子の前にカーソル  
    A   リネーム / ファイル名末尾にカーソル  
    I   リネーム / ファイル名先頭にカーソル  
    cw   リネーム / ファイル名なし  
    <f7> :mkdir ディレクトリ作成  
    dD :delete 削除 <del> / <f8>

    リネームコマンドはいくつかあるが、 vim の aAIcw に似ている。

    削除は、対象が複数の場合は確認してくる。

  • ファイルアクセス権の編集(chmod)

    chmod は数値指定とシンボル指定の両タイプで指定が可能。

    数値指定は数値の後に = でいい。つまり、コマンドラインで chmod 755 filename とやっている事は、カーソルをあわせて(あるいは複数選択して) 755= と入力するだけででいい。非常に楽だ。

    操作キー 機能
    <num>= chmod 数値指定

    シンボル指定は、付与が + で削除が - 、何れかを最初に押して続くコンボで権限の内容を指定する。コマンドで使うシンボルと同じなので直感的かと思う。

    ところで、このキーコマンドの数は48もあり、そのまま表にすると分かりにくい。そこで下記のように表してみた。

    キーA   他のキー
    + u (所有者) に権限付与 +u
    +g g (グループ) に権限付与  
    +o o (他のユーザ) に権限付与  
    +a a (全て) に権限付与  
    - u (所有者) から権限削除 -u
    -g g (グループ) から権限削除  
    -o o (他のユーザ) から権限削除  
    -a a (全て) から権限削除  
    キーB  
    r 読み込み権限
    w 書き込み権限
    x 実行権限
    X 何れか実行権限ありなら追加/削除
    s セットID
    t スティッキービット

    上の表のキーAに続けて下の表のキーBを組み合わせて実行する。

    例えば chmod u+x filename すなわち所有者に実行権限を付与する場合は +x とする。 chmod g+x なら +gxchmod o-x なら -ox という具合。

  • ディレクトリ使用量の表示(du)

    ディレクトリ内の使用量を調べたい時に使う du コマンドだが、ranger ではその名の通りに du と入力すればカレントディレクトリ内の各ディレクトリの使用量をページャで表示してくれる。

    操作キー 機能
    du du
  • タグ

    ファイルにタグ付けできる。

    タグは全て1文字で、ファイル名の左に表示される。目印にしてもいいし、マクロの %t で使ったりもする。

    操作キー 機能
    t タグ * をつける/はずす
    "<tag> タグ <tag> をつける/はずす (<tag>: 任意の1文字)
    ut タグをはずす

    t でデフォルトのタグをつける。デフォルトのタグは * だ。 " につづけて任意の1文字を入力すると任意のタグをつけられる。例えば "m とすれば m というタグがファイル名の左に表示されるだろう。

    何れも、同じタグのついたファイルではタグをはずし、そうでなければタグ付けする。

    だから、複数選択してからタグ付けキーを押すと、同名タグは反転することになる。

    同じディレクトリ内のタグ設定されたいくつかのファイルを全て解除したいときは、 vut とすればいい。

    なお、タグ情報は ~/.config/ranger/tagged に保存されており、 ranger を終了しても憶えていてくれる。

  • サブシェルとコマンド
    操作キー 機能
    S 現在のディレクトリでサブシェルを起動
    : コマンド

    S を押すと表示中のディレクトリでサブシェルを起動してくれる。コマンドラインで処理したい時に使う。 exit で戻る。

    サブシェルでは ranger をさらに起動でき、またさらにサブシェルを起動してまた ranger を、というようにネストして実行可能だ。 ranger はディレクトリ移動が便利なものだからいくつもネストしてしまって、気付いたら終了させるまで延々と exit … なんてことになる。これを避けるための工夫があるので、後述する。

    コロン : (セミコロン ; でもいい)で vim のようにコマンドが使える。例えば :q <enter> でタブを閉じるなど。詳細はコマンドの項を参照のこと。

  • タスクビューとログ表示
    操作キー 機能
    w タスクビュー
    W ログ表示

    タスクビューではrangerのバックグラウンドタスクが一覧され、タスクの停止などが行える。タスクビューの項を参照のこと。

    ログ画面では、画面最下行に現れたメッセージを一覧でみられる。

  • ヘルプ

    ? (あるいは <f1> )を押すと最下行にヘルプメニューが表示される。

    操作キー 機能 他のキー
    ?m マニュアル (man page) を表示 <f1>m
    ?k キーバインディング一覧を表示 <f1>k
    ?c コマンド一覧を表示 <f1>c
    ?s セッティング内容を表示 <f1>s
    gR RANGERDIR (rangerがあるところ)へジャンプする  
    g? ドキュメントディレクトリ( /usr/share/doc/ranger )へジャンプする  

    ヘルプ画面の操作はページャの項を参照のこと。

    g? でrangerのドキュメントを収めたディレクトリへジャンプしてくれる。ここにはちょっとこった使い方のヒントがあったり、お宝箱のようだ。

コマンドとコンソール

ブラウザで : を押すと vim のようにコマンドモードになり、最下行のコマンドコンソールに入力が促される。

コンソール入力中のキーバインドは以下の通り、 readline ライクなもの。

操作キー 機能 他のキー
C-f カーソルを右へ <right>
C-b カーソルを左へ <left>
C-n 履歴を辿る <down>
C-p 履歴を遡る <up>
C-a カーソルを行頭へ  
C-e カーソルを行末へ  
C-d Delete(カーソル位置の文字を削除) <delete>
C-h Backspace(カーソル直前の文字を削除) <backspace>
C-m 実行 <enter>
C-c コンソールを閉じる  

例えば :q <enter> でタブ終了、 :help <enter> でヘルプといった具合。

キーバインドされていない機能もコマンドモードで呼び出せる。

コマンド一覧は ?c で見ることができる。

なお、セミコロン ; でも コロン : 同様になる。 US-ASCII キーボードなんかで Shift が面倒だからリマップ、という必要はない。

  • :shell

    :shell に続けてシェルコマンドを書いて実行することができる。 S でシェルに抜けてやってもいいが、コンソール実行の方が手っ取り早いことが多い。

    :shell は多用するので、あらかじめ :shell (とオプション)を入力しておいてくれるキーが登録されている。

    操作キー コマンド 機能
    ! :shell  
    @ :shell %s 選択したものを対象にする
    # :shell -p 出力をページャで表示

ページャ

ブラウザ画面にて、テキストファイル上で i を押すと簡易ページャ表示となる。

ranger_filer_ss_pager01.png

ranger_filer_ss_pager02.png

このページャ表示での主な操作は以下の通り。

操作キー 機能 他のキー
j 1行下へスクロール <Down>
k 1行上へスクロール <Up>
C-f 下へページスクロール  
C-b 上へページスクロール  
C-l 画面を再描画  
g 最初へ  
G 最後へ  
E 編集  
q ページャを閉じる <Esc>

ヘルプ画面では上記ページャ同様のキー操作に加えて / で検索ができる。

後述するが必要なアプリが起動できれば、画像や書庫なども i でプレビュー表示されるようになる。

タスクビュー

ブラウザで w を押すとタスクビュー画面になる。

ranger で行うバックグラウンドタスクがこの画面に一覧表示される。

操作キー 機能 他のキー
j カーソルを1行下 <Down>
k カーソルを1行上 <Up>
C-f 下へページスクロール f / <space>
C-b 上へページスクロール b
C-l 画面を再描画  
J タスクを1行下げる <Pagedown>
K タスクを1行上げる <Pageup>
dd タスクを中止する <delete>
g 最初へ <home>
G 最後へ <end>
q タスクビューを終了 w / <Esc>

JK でタスクの順番を変えられる。また dd を押すとそのタスクを終了させる。

大きいサイズのファイルコピーをとりやめたいなどは、ここで行う。

rangerのカスタマイズ

カスタマイズの準備

カスタマイズは ~/.config/ranger 下に置いた設定ファイルに書いて行う。ゼロから書くのは大変なので、起動オプションの --copy-config=all でデフォルト設定されたファイルを作成し、これを書き換えるようにする。

$ ranger --copy-config=all
creating: /home/toshitake/.config/ranger/rifle.conf
creating: /home/toshitake/.config/ranger/commands.py
creating: /home/toshitake/.config/ranger/commands_full.py
creating: /home/toshitake/.config/ranger/rc.conf
creating: /home/toshitake/.config/ranger/scope.sh

rangerの設定は rc.conf に書く。また、ファイルランチャーとしての機能は rifle.conf に設定する。

scope.sh は ranger のプレビュー機能を実現するシェルスクリプトで、これがあれば後は必要なアプリをインストールするだけでプレビュー出来るようになる(後述)。

なお、ファイルが既に存在する場合は上書きをしない。試しにやってみた(以下は rc.conf のみ指定してみたもの)。

$ ranger --copy-config=rc
already exists: /home/toshitake/.config/ranger/rc.conf

プレビュー

テキストファイルについてはそのままでもプレビューされるようになっているでしょう。これに加えて、必要な外部コマンドを揃えれば書庫ファイルやPDFファイル、メディアファイルの情報が右のカラムに表示されるようになる。また、テキストのソースコードを色付きで見やすくプレビューすることも可能となる。

  • ファイル情報のプレビュー

    以下が各種ファイルの情報プレビューに利用できる外部コマンド。

    コマンド 機能
    highlight ソースコードを色分け表示
    lynx / elinks htmlプレビュー
    atool 圧縮書庫管理
    pdftotext PDFプレビュー
    mediainfo 動画やオーディオファイルの情報

    atool は圧縮書庫の管理ツールで、圧縮形式それぞれのネイティブツールを必要とする。ドキュメントでは以下のアーカイブツールのインストールを求めている。

    bzip2 / cpio / gzip / lha / lzma / lzop / p7zip / tar / ace / rar / zip

    なので、これらもインストールしてしまう。

    Arch Linux では以下をインストール。

    $ sudo pacman -S highlight lynx elinks poppler mediainfo
    $ sudo pacman -S atool bzip2 cpio gzip lhasa xz lzop p7zip tar unace unrar zip unzip
    

    Ubuntuでのインストールは以下。16.04で試した。

    $ sudo apt install highlight lynx elinks poppler-utils mediainfo
    $ sudo apt install atool bzip2 cpio gzip lhasa lzma lzop p7zip tar unace unrar zip unzip
    

    これでソースコードは色付きで、書庫やPDFなどは中身のリストや情報がプレビューされるようになる。

    ranger_filer_ss_preview_code.png

    ranger_filer_ss_pager_code.png

    ほかに、transmission-cli があれば torrent ファイルをプレビューできるようになるようだ。

  • 画像のプレビュー

    画像をプレビューするには w3m が必要となる。

    まずはインストール。

    $ sudo pacman -S w3m
    
    $ sudo apt install w3m-img
    

    次に ~/.config/ranger/rc.conf をエディタで開いて set preview_imagesfalse になっているところを true にする。

    # Use one of the supported image preview protocols
    set preview_images true
    

    また、枠線を表示しない設定だとプレビュー画像の一部が縞になってうまく表示されないので、枠線を表示するように設定する。 set draw_bordersfalsetrue にする。

    # Draw borders around columns?
    set draw_borders true
    

    これで画像ファイルのプレビュー表示が可能になったはず。

    ranger_filer_ss_preview_image.png

    なお、わたしのところでは枠線表示で不具合を回避できているけれど、現状ではまだいまひとつ不具合が発生するケースがあるようで、端末エミュレータを透過表示に設定しているとうまく表示されないとか、あるいは tmux では表示が乱れやすい、 GNU Screen なら大丈夫だったよ、などといったことが言われているもよう。

  • 動画のプレビュー

    mediainfo によって動画の情報を表示するようにしたけれど、 ffmpegthumbnailer をインストールして scope.sh に手を加えるとプレビューに動画のサムネールを表示できるようになる。

    まずは ffmpegthumbnailer (長い名前)をインストールする。

    ## Ubuntu
    $ sudo pacman -S ffmpegthumbnailer
    
    ## Arch Linux
    $ sudo apt install ffmpegthumbnailer
    

    次に、 ~/.config/ranger/scope.sh を開くと、

    # Image preview for videos, disabled by default:
    # video/*)
    #     ffmpegthumbnailer -i "$path" -o "$cached" -s 0 && exit 6 || exit 1;;
    

    となっているところがある。コメントの下の2行をアンコメントしてあげる。

    # Image preview for videos, disabled by default:
    video/*)
        ffmpegthumbnailer -i "$path" -o "$cached" -s 0 && exit 6 || exit 1;;
    

    これで動画のサムネールがプレビューされるようになる。

    動画ファイルにカーソルをのせると、ちょっと考えてから画像を表示してくれる。サムネールはキャッシュされるので、2回めからは即座に表示されるようになる。

    ※ ranger Ver.1.7.1 で確認。

カラーテーマを変更する

ranger にはあらかじめ4種類のカラーテーマが用意されており、設定ファイルに記述して取り替える。すなわち、 ~/.config/ranger/rc.confcolorscheme の値を defaultjunglesnowsolarized の4つの何れかに書き換える。

以下それらのスクリーンショッツ(但私は端末エミュレータの配色を gruvbox にしてるんでちょっと色褪せた感じになっているとはおもうけれど)。

  • default
    # Which colorscheme to use?  These colorschemes are available by default:
    # default, jungle, snow, solarized
    set colorscheme default
    

    ranger_filer_ss_colorscheme1_default.png

  • jungle
    set colorscheme jungle
    

    ranger_filer_ss_colorscheme2_jungle.png

  • snow
    set colorscheme snow
    

    ranger_filer_ss_colorscheme3_snow.png

  • solarized
    set colorscheme solarized
    

    ranger_filer_ss_colorscheme4_solarized.png

rangerの多重起動を避ける工夫

ranger はディレクトリの移動が便利なのでつい、サブシェルを起動した状態でさらに ranger を実行し、またさらにサブシェルでまたまた、という風にやってしまう事が多い。そうやってネストしていった後では何度も exit して戻る羽目に陥る。それはそれで大変なので、そうならないような工夫をする。

次の2行を .bashrc.zshrc などに追記する。

ranger () {[ -n "$RANGER_LEVEL" ] && exit || command ranger "$@"}
[ -n "$RANGER_LEVEL" ] && PS1="(RANGER) ${PS1}"

1行めのファンクションは ranger を起動すると定義される $RANGER_LEVEL をみて、ネストしそうになったら exit するに止めてネストを避けるもの。 ArchWiki を参考にした。

2行めはプロンプトの頭へ ranger 内のシェルである旨を表示するもの。1行めで ranger はネストしなくなるものの、他のコマンドについてはその限りでないので、プロンプトに表示して注意を促す。

これは g? でジャンプした先 /usr/share/doc/rangerexamples ディレクトリに置いてある bash_subshell_notice.sh を参考にした。ここにpはほかにも便利なものがあるので活用したい。

Revisions

  • [2017-01-12 Thu] コマンドモードとchmodやduなどの説明を追加。
  • [2017-03-24 Fri] インストールを少し詳細に
スポンサードリンク