以前にLinux - コマンドラインで動かすファイルマネージャrangerの設定 - Qiitaというエントリを書いたのですが、後日もっと詳しく使い方の説明が欲しいとのお言葉をいただいたので、基本的な設定の仕方をまとめておこうと思います。rangerの基本的な使い方に関しては、上のリンクか、インストールしてヘルプを読んでみてください。
筆者の環境:
- OS: Ubuntu trusty x86_64
- Kernel: 3.13.0-85-lowlatency
- DE: GNOME
- WM: XMonad
- Terminal: urxvt
$ ranger --version
ranger-master 1.7.2
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2]
rangerって何?
![screen_001.png](https://qiita-image-store.s3.amazonaws.com/0/54869/6260f1bf-21dc-e177-e8f6-8d7b4d493961.png)
設定ファイルの準備
インストールの仕方は、以前書いた上のエントリを参照してもらうとして、ただインストールしただけでは、このアプリケーションの本来の力を発揮できません。まずするべきことは、設定ファイルを準備することです。
$ ranger --copy-config=all
と実行します。こうすることで、デフォルトの設定が書かれた設定ファイルのひな形が~/.config/ranger
にコピーされ、このディレクトリ内の設定ファイルを変更することで、自分好みにカスタマイズすることができます。これらのファイルが作成されていることが分かったら、とりあえず中身を読んでみると、何が設定できるかが分かると思います。
ファイル名 | 設定内容 |
---|---|
rc.conf | ranger起動時に設定されるオプション、コマンドの設定 |
rifle.conf | ファイル起動時に使用するアプリケーションの設定 |
scope.sh | ファイルのプレビュー表示の設定 |
rc.confを設定する
man ranger
:
と入力すると、コマンドモードに入り、様々なコマンドを実行することができますが、ここで例えば
:set draw_borders true
画像のプレビュー表示
![screen_002.png](https://qiita-image-store.s3.amazonaws.com/0/54869/254c0df1-8fa1-fe75-63ee-738962048fdb.png)
set preview_images true
としてください。端末内で画像を表示することができるウェブブラウザw3mをインストールしていて、w3mimgpreviewというコマンドが実行できる状態になっている必要があります。
また、MacでiTerm2を使っている人は
set preview_images_method w3m
git clone https://github.com/hut/ranger.git
cd ranger
sudo make install
rifle.confを設定して、ファイルを開くアプリケーションを設定する
これは、必ずやっておく必要があるでしょう。rifle.confの中では、あるファイルタイプのファイルを選択して開くときに、どのアプリケーションで優先的に開くかを設定することができます。普通にEnterキーやl
キーでファイルを開くときは最も優先度の高いアプリケーションでファイルが開かれ、r
キーを押せば、可能な開き方がすべて表示され、その番号を入力してEnterキーを押せば、プログラムを指定して開くことができます。
![screen_002.png](https://qiita-image-store.s3.amazonaws.com/0/54869/a1fcd593-051d-2f86-64fd-e0d72ec46a28.png)
<condition1>, <condition2>, ... = command
の形式で書かれており、この<condition>
に合致したとき右辺のコマンドが実行されます。どのような条件があるかは、設定ファイルのコメントを読んでもらうか、実際に設定ファイル内に書かれている他の設定を見てみてください。
例えばrifle.confの中の"Misc"というセクションに、
#-------------------------------------------
# Misc
#-------------------------------------------
# Define the "editor" for text files as first action
mime ^text, label editor = $EDITOR -- "$@"
mime ^text, label pager = "$PAGER" -- "$@"
mine ^text
、つまりmineタイプが正規表現^text
に一致するという条件にあう時、$EDITOR -- "$@"
、つまり環境変数$EDITOR
で指定したエディタで開くというコマンドを行います。$@
は選択されたファイルすべてが引数に代入されることを意味しています。
その他にlabel
を指定しておけば、rangerの中でr
キーを押したときに番号以外にこのラベルでもアプリケーションを選択することができます。また、flag
を指定することで、現在の端末で直接コマンドとして実行するのではなく、バックグラウンドで実行(flag
f
)したり、別の端末を開いて実行(flag t
)したり、root権限をつけて実行(flag r
)させることができます。
また、ファイル実行の優先度は、この設定ファイル内の上から順に優先度が高くなっているので、デフォルトで起動するアプリケーションを変えたいだけで、その起動の設定が既に書かれているのであれば、他の設定よりファイルの上に位置するように並べ替えてあげるだけで大丈夫です。特にhtmlの開き方なんかは、マイナーなブラウザを入れているとそれで開くように設定されているので、注意が必要です。
参考に
●dotfiles/rifle.conf at master · ssh0/dotfiles
scope.shでプレビュー表示の設定
scope.shに指定する方法でプレビュー表示を行わせたい場合には、rc.confでset use_preview_script true
としてください。
さて、プレビュー機能は外部のコマンドを用いて実現しているので、これらのパッケージが入っていないとプレビュー表示はできません。
scope.shの中では
try <command> && { dump | ... }
<command>
を提供しているパッケージを調べてインストールすれば、プレビュー表示ができるようになります。先ほどの4には、aptでのパッケージ名が書かれてありましたので、参考にしてみてください。
バージョン1.7以降で使えるようになった動画のサムネイル表示ですが、ffmpegthumbnailerというコマンドが必要です。
sudo apt-get install ffmpegthumbnailer
![screen_003.png](https://qiita-image-store.s3.amazonaws.com/0/54869/cdf2b37c-d008-b464-42a9-da8ff8b27f21.png)
i
キーを押せば画面いっぱいを使って表示させることができますし、zp
キーでプレビューの表示・非表示をトグルすることができます。
画像のプレビュー表示に関する注意
rc.confの該当箇所にも書いてあるように、xtermとurxvtでtmuxを使用しない時にしか画像のプレビューは保証されていないので、tmuxと併用するときには注意が必要です(たまに表示されなかったり、別のウィンドウまで画像が残ったり、他のペインに侵食したり…) 自分の場合、tmuxの一つのウィンドウにはranger一つだけが配置されるようにすれば、この問題は気にならなくなりました。同じセッション内に複数rangerが起動している場合などは、画像が表示されないようです。ここらへんは要調査ですし、早くtmux内でもうまく表示されるようになればいいなぁと思うところです。 またurxvtなどを使っていて、画像がうまく表示されない場合、~
/.Xdefaults
でURxvt*.depth
の項目をコメントアウトしてください。
! For showing img in ranger with w3mimgdisplay, disable this
! URxvt*.depth: 32
参考:
w3m/ranger images don't work on urxvt / Applications & Desktop Environments / Arch Linux Forums
それから、枠が非表示のときは問題が起こることが多いそうなので、なんだかうまく画像が配置されていない時は、
set draw_borders true
してみてください。
参考:
筆者のscope.sh(特に変更されていません)
まとめ
さて、これくらいで基本的な設定は終わりかと思います。後は、以前の記事にもあげたように、サブシェルの入れ子の中に入らないようにする設定やq
で抜けたディレクトリにautocdする設定を書いたり、rifle.confに自分でコマンドを登録していったりすれば、さらに使い勝手をよくすることができると思います。これを機にコマンドラインの良さがいろんな人に伝わればいいなぁ。