Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
165
Help us understand the problem. What is going on with this article?
@ssh0

コマンドラインで動かすファイルマネージャrangerの設定

More than 5 years have passed since last update.

LinuxもしくはMacで使うことの出来る、CLIファイルマネージャであるrangerの紹介と、使いやすくする設定を紹介します。

追記(2015/06/13 21:01)

基本的な設定方法をまとめたので、こちらもご覧ください。

追記ここまで

ranger.rc.conf.png

picture.png

まず、rangerそのものについてですが、vimライクなキーアサインでも動かすことができ、設定ファイルも読みやすく、挙動も安定しているので、CLIで動くファイルマネージャを探しているのなら、迷わずこれでいいと思います。なにより軽いので、GUIでファイルマネージャを使うよりは軽快で、一度このスピードになれてしまうと、もう戻れない感覚だと思います。

詳細な説明については、rangerのWikiを見てもらうか、英語ですが以下の動画を見てもらえば分かるのではないかと思います。以下では、個人的に便利だと感じた使い方と、設定について述べていこうと思います。

インストール

for apt-package(Ubuntu, Debian, )

sudo apt-get install ranger w3m lynx highlight atool mediainfo xpdf caca-utils
ranger --copy-config=all

for Mac

brew install ranger w3m lynx highlight atool mediainfo xpdf libcaca imlib2
ranger --copy-config=all

ref:

基本のキーアサイン

以下に基本的なキーアサインを書いておきます。これだけ押さえていれば、大体普通の作業をするのには困らないと思います。とってもVim的なキーバインドなので、慣れている人であれば、すぐに使えるようになると思います。

key operation
h,j,k,l or 矢印キー 上下左右移動
lor Enter ファイルを開く/ディレクトリ内に入る
r 起動するアプリケーションを指定
Space ファイルを選択
v すべて選択(選択反転)
V 選択モード(範囲選択)
y<char> yank & 何か操作
yy 選択されているファイルをコピー
yp 選択されているファイルのフルパスをコピー(xselが必要)
d<char> cut & 何か操作
dd 選択されたファイルを切り取り
p<char> 貼り付け + オプション
pp 切り取り、コピーしたファイルを貼り付け
Delete 削除(rm)
g<char> <char>で指定された動きをする
gn or Ctrl+n 新しいタブを開く
gc or Ctrl+w タブを閉じる
gt or Ctrl+Tab 次のタブへ移動
gT or Ctrl+Shift+Tab 前のタブへ移動
Alt+<n> 番号<n>のタブへ移動(ない場合は作成)
z<char> オプションのトグル
zh 隠しファイルの表示/非表示のトグル
m<char> 現在のディレクトリを<char>キーでブックマーク
`<char> ブックマークされたディレクトリに飛ぶ
`` 最近開いたディレクトリに飛ぶ
cw ファイル名を編集
A ファイル名を編集(現在のファイル名が入った状態)
/ インクリメンタルサーチ
S 現在のディレクトリでサブシェルに入る
: コマンド入力モードに入る(Ctrl+cで抜ける)
! 現在のディレクトリでシェルコマンドを実行する
q rangerを終了
? マニュアルを表示
1? キーバインディングを表示
2? コマンドのヘルプを表示
3? 現在の設定値を表示

設定ファイル

rangerの設定ファイルは、Linuxなら~/.config/ranger以下にあります。

screen_003.png

rc.confではオプションとキーバインディングを、rifle.confでは、各ファイルタイプについて、どのプログラムを用いて開くかを設定できます。元々の設定ファイルがよく書かれているので、ある程度英語が読めれば、簡単に設定が出来ると思います。

scope.shでは、

# ranger supports enhanced previews.  If the option "use_preview_script"
# is set to True and this file exists, this script will be called and its
# output is displayed in ranger.  ANSI color codes are supported.

とあるように、オプションでプレビュー表示をオンにしたとき(set preview_files true)に、ファイルタイプにあわせてどのようなプログラムを使ってプレビュー表示をさせるかを設定することができます。

また、colorscheme以下に自分で定義したカラースキームを置き、モジュールとして読み込むようにしてあげると、カラースキームを変更することができます。デフォルトでは"default","jungle","snow"が使えます。

自分の設定ファイル晒しときますね。

rangerに関連して設定しておくといいもの

サブシェルのネストを防止する

rangerを使っていると、cdコマンドを使って移動するより断然早くディレクトリ間を移動できるので、どんどんSでシェルで抜けてまたrangerを開いて・・・としていくことになるかと思います。さて、一段落したので端末を閉じましょう、というときに、exitとすると、rangerが立ち上がります。!?となるかもしれませんが、Sはサブシェルを開いてその中で作業するものなので、気がついたらどんどんネストしていた、という事態に簡単に陥ります。これを解決する簡単な方法は、~/.zshrcなどに、以下のように関数を登録しておくことです。(Start new ranger instance only if it's not running in current shell)

function ranger() {
    if [ -z "$RANGER_LEVEL" ]; then
        /usr/local/bin/ranger $@
    else
        exit
    fi
}

rangerはサブシェルを立ち上げるときに環境変数$RANGER_LEVELにゼロでない値を入れていくので、これによって既にサブシェルの中にいるときにrでrangerを起動しようとしたときには一回そのサブシェルを閉じることでrangerの画面に戻るようにしたものが上のスクリプトの意味するところです。

また、これと全く同じようにすれば、自分が今サブシェルにいるかどうかを判定することができるので、プロンプトにこれを表示させれば便利ですね。

# Compatible with ranger 1.5.3 through 1.7.*
#
# Change the prompt when you open a shell from inside ranger
#
# Add this line to your .bashrc for it to work.

[ -n "$RANGER_LEVEL" ] && PS1="$PS1"'(in ranger) '

を参照にすると、サブシェル以下にいないときは

screen_001.png

のように表示されるのに対し、rangerからSで抜けた後は

screen_002.png

とプロンプトが表示されて、今自分がrangerの作ったサブシェルの中にいるかどうか分かるようにできます。


(追記:2015/06/02)

rangerのGitHubリポジトリの/exampleには便利そうなスクリプトが用意されているので、あわせて紹介します。

最後に抜けたディレクトリに自動でcd(bash_automatic_cd.sh)

例えば、bash_automatic_cd.shを、.bashrc.zshrcに書いておけば(あるいはsourceコマンドで読みこめば)、ranger-cdという新しい関数がシェルの中で使えるようになります。うまくいかないときは、このスクリプトの中でrangerの実行ファイルのパスが書いてありますが、それが正しいか確認してみてください。シェルの中でranger-cdとすると、普通にrangerが起動しますが、最後にqで抜けたところに自動でcdしてくれ、完全にcdの移動の代わりとしてだけでも使うことが容易になります。ranger-cdを実行した元のディレクトリに戻りたいときにはcd -で大丈夫です。

いいか?俺はemacsを使ってるんだ!という方向け(rc_emacs.conf)

emacs版キーバインド、あります。rangerでは(多分)すべてのキーバインドが自分で設定できるようになっているので、設定ファイルの該当箇所をemacsライクに書き換えれば(というか上のファイルをコピペすれば)、何も怖いことはありません。どれくらいemacsライクかは分かりません。

vimの中からでも使えます。(vim_file_chooser.vim)

vim_file_chooser.vimというスクリプトファイルがあります。これをvimrcの下の方に書いておけば、vimの中で<Leader>+r(<Leader>はデフォルトでは\)と押せば、その場でrangerが立ち上がり、目当てのテキストファイルにすぐにたどり着くことができます。既に他のVimプラグインのファイラーを使ってらっしゃる方には必要ないかもしれませんが、一応できますよということで。(vim-quickrunと同じキーバインドなので、変えたほうがいいかもです。)

まとめ

以上、簡単ですがCLIファイルマネージャrangerの紹介と、その設定についてまとめました。ターミナル上で動かすことのメリットはたくさんあると思うので、ちょっとした日々の操作にも、ぜひ使ってみるといいと思います。皆さんのコマンドライン生活が豊かになりますように!

165
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ssh0
[興味]物理/数学/Python/Linux/ShellScript 編集リクエスト、コメント、フォロー等はお気軽に。
team-lab
最新のテクノロジーを活用したシステムやデジタルコンテンツの開発を行うウルトラテクノロジスト集団

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
165
Help us understand the problem. What is going on with this article?