「Ranger」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(6人の利用者による、間の18版が非表示)
4行目: 4行目:
 
[[en:Ranger]]
 
[[en:Ranger]]
 
[[fr:ranger]]
 
[[fr:ranger]]
[[zh-CN:Ranger]]
+
[[zh-hans:Ranger]]
 
{{Related articles start}}
 
{{Related articles start}}
 
{{Related|Midnight Commander}}
 
{{Related|Midnight Commander}}
 
{{Related|vifm}}
 
{{Related|vifm}}
 
{{Related articles end}}
 
{{Related articles end}}
'''ranger''' は Python で書かれているテキストベースのファイルマネージャです。ディレクトリは3つのカラムに分けて表示されます。キーストロークやブックマーク、マウスやコマンド履歴を使ってディレクトリを移動することができます。選択したファイルは自動的にプレビューが表示されディレクトリは中身が表示されます。
+
[http://ranger.nongnu.org/ ranger] は Python で書かれているテキストベースのファイルマネージャです。ディレクトリは3つのカラムに分けて表示されます。キーストロークやブックマーク、マウスやコマンド履歴を使ってディレクトリを移動することができます。選択したファイルは自動的にプレビューが表示されディレクトリは中身が表示されます。
   
 
ranger の特徴: vi スタイルのキーバインド、ブックマーク、選択、タグ、タブ、コマンド履歴、シンボリックリンクを作成可能、複数あるコンソールモード、タスク表示。''ranger'' のコマンドやキーバインドはカスタマイズすることができ、外部スクリプトを呼び出すこともできます。よく似たファイルマネージャに [[Vifm]] があり、2つのペインと vi スタイルのキーバインドを使用しますが、機能の数はやや劣ります。
 
ranger の特徴: vi スタイルのキーバインド、ブックマーク、選択、タグ、タブ、コマンド履歴、シンボリックリンクを作成可能、複数あるコンソールモード、タスク表示。''ranger'' のコマンドやキーバインドはカスタマイズすることができ、外部スクリプトを呼び出すこともできます。よく似たファイルマネージャに [[Vifm]] があり、2つのペインと vi スタイルのキーバインドを使用しますが、機能の数はやや劣ります。
15行目: 15行目:
 
== インストール ==
 
== インストール ==
   
{{Pkg|ranger}} は[[公式リポジトリ]]から[[インストール]]できます。開発版を使いたい場合は [[AUR]] から {{AUR|ranger-git}} をインストールしてください。{{ic|scope.sh}} によるファイルプレビューの使用など、任意の依存パッケージは ranger-git の [https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=ranger-git PKGBUILD] に説明があります
+
{{Pkg|ranger}} は[[公式リポジトリ]]から[[インストール]]できます。開発版を使いたい場合は [[AUR]] から {{AUR|ranger-git}} をインストールしてください。
   
 
== 使用方法 ==
 
== 使用方法 ==
25行目: 25行目:
 
! キー !! コマンド
 
! キー !! コマンド
 
|-
 
|-
| {{ic|?}} || マニュアルを開く
+
| {{ic|?}} || マニュアルを開く、キーバインド・コマンド・設定を表示
 
|-
 
|-
| {{ic|1?}} || キーバンド表示
+
| {{ic|l}}, {{ic|Enter}} || ファ起動
 
|-
 
|-
| {{ic|2?}} || コマンド表示
+
| {{ic|j}}, {{ic|k}} || 現在のディレクトリ内のファイル選ぶ
 
|-
 
|-
  +
| {{ic|h}}, {{ic|l}} || 上または下の階層のディレクトリへ移動
| {{ic|3?}} || 設定を表示
 
|-
 
| {{ic|l}}, {{ic|Enter}} || ファイルを起動
 
 
|}
 
|}
   
55行目: 53行目:
   
 
設定に関する詳細は [http://ranger.nongnu.org/ranger.1.html man ranger] を見て下さい。
 
設定に関する詳細は [http://ranger.nongnu.org/ranger.1.html man ranger] を見て下さい。
  +
  +
=== ファイルをゴミ箱に移動 ===
  +
  +
{{ic|DD}} を使用してゴミ箱ディレクトリ {{ic|~/.local/share/Trash/files/}} にファイルを移動するキーバインドを追加するには、設定ファイルを次のように変更します。
  +
  +
{{hc|~/.config/ranger/rc.conf|<nowiki>
  +
...
  +
map DD shell mv %s /home/${USER}/.local/share/Trash/files/
  +
...
  +
</nowiki>}}
  +
  +
または、 {{Pkg|glib2}} パッケージで提供されている GIO コマンドラインツールを使用します。
  +
  +
map DD shell gio trash %s
  +
  +
''ゴミ箱'' の中を見たり、空にするには通常、 {{Pkg|nautilus}} のようなグラフィカルファイルマネージャがサポートしていますが、 {{ic|gio list trash://}} というコマンドでゴミ箱の中を見て、 {{ic|gio trash--empty}} というコマンドでゴミ箱を空にすることもできます。
   
 
=== コマンドの定義 ===
 
=== コマンドの定義 ===
   
Continuing the above example, add the following entry to {{ic|~/.config/ranger/commands.py}} to empty the trash directory {{ic|~/.Trash}}.
+
上記の例の続きに、以下のエントリを {{ic|~/.config/ranger/commands.py}} に追加することでゴミ箱 ({{ic|~/.Trash}}) を空にできます:
   
 
{{bc|<nowiki>
 
{{bc|<nowiki>
71行目: 85行目:
 
</nowiki>}}
 
</nowiki>}}
   
To use it, type {{ic|:empty}} and {{ic|Enter}} with tab completion as desired.
+
使用するには {{ic|:empty}} と入力して {{ic|Enter}} を押してください。タブ補完も使えます。
   
  +
{{Warning|{{ic|[^.]}} がこのコマンドの本質的部分です。書き忘れると {{ic|..*}} にマッチする全ファイル・ディレクトリ、すなわちホームディレクトリが全て削除されます。}}
{{Warning|{{ic|[^.]}} is an essential part of the above command. Without it, all files and directories of the form {{ic|..*}} will be deleted, wiping out everything in your home directory.}}
 
   
 
=== カラースキーム ===
 
=== カラースキーム ===
84行目: 98行目:
   
 
set colorscheme ''newscheme''
 
set colorscheme ''newscheme''
  +
  +
=== ファイルプレビューでのカラーハイライト ===
  +
  +
{{Pkg|python-pygments}} パッケージをインストールし、 {{ic|/usr/share/doc/ranger/config/scope.sh}} を {{ic|~/.config/ranger/scope.sh}} にコピーして、 ranger の構成ファイル内の変数 {{ic|PYGMENTIZE_STYLE}} を必要に応じて編集します。サポートされているテーマの完全なリストは {{ic|pygmentize -L style}} から取得できます。
   
 
=== ファイルの関連付け ===
 
=== ファイルの関連付け ===
95行目: 113行目:
 
has xdg-open, flag f = xdg-open "$1"
 
has xdg-open, flag f = xdg-open "$1"
   
  +
== ヒントとテクニック ==
== Tips and tricks ==
 
   
 
=== 圧縮ファイル ===
 
=== 圧縮ファイル ===
103行目: 121行目:
 
==== アーカイブの解凍 ====
 
==== アーカイブの解凍 ====
   
  +
以下のコマンドは圧縮ファイルをコピー (yy) して適切なディレクトリで {{ic|:extracthere}} を実行します:
The following command implements archive extraction by copying (yy) one or more archive files and then executing {{ic|:extracthere}} on the desired directory.
 
   
 
{{bc|<nowiki>
 
{{bc|<nowiki>
143行目: 161行目:
 
==== 圧縮 ====
 
==== 圧縮 ====
   
  +
次のコマンドを使用すると、ユーザーは現在のディレクトリにあるいくつかのファイルをマークしてから {{ic|:compress ''パッケージの名前''}} パッケージ名で圧縮できます。現在のディレクトリの名前を取得し、拡張子に圧縮形式を追加することにより、いくつかの圧縮形式の提案をサポートします。 {{pkg|atool}} をインストールする必要があります。インストールされていない場合、アーカイブを作成するときにエラーメッセージが表示されます。
The following command allows the user to compress several files on the current directory by marking them and then calling {{ic|:compress ''package name''}}. It supports name suggestions by getting the basename of the current directory and appending several possibilities for the extension. You need to have {{pkg|atool}} installed. Otherwise you will see an error message when you create the archive.
 
   
 
{{bc|<nowiki>
 
{{bc|<nowiki>
183行目: 201行目:
   
 
外付けドライブは [[udev]] や [[udisks]] で自動的にマウントさせることができます。{{ic|gm}} (go, media) を押すことで {{ic|/media}} にマウントされたドライブに簡単にアクセスできます。
 
外付けドライブは [[udev]] や [[udisks]] で自動的にマウントさせることができます。{{ic|gm}} (go, media) を押すことで {{ic|/media}} にマウントされたドライブに簡単にアクセスできます。
  +
  +
=== 隠しファイル ===
  +
  +
次のコマンドで隠しファイルの表示を切り替えることができます {{ic|:set show_hidden!}} または {{ic|:set show_hidden true}} を使用して隠しファイルを表示します。 これを永続的にするには、設定を構成ファイルに追加します。
  +
  +
{{hc|rc.conf|<nowiki>
  +
set show_hidden true
  +
</nowiki>}}
  +
  +
または、{{ic|zh}} を押して隠しファイルを切り替えることもできます。
   
 
=== イメージのマウント ===
 
=== イメージのマウント ===
244行目: 272行目:
 
=== 現在のフォルダを新しいタブで開く ===
 
=== 現在のフォルダを新しいタブで開く ===
   
You may have noticed there are two shortcuts for opening a new tab in home ({{ic|g}}{{ic|n}} and {{ic|Ctrl+n}}). Let us rebind {{ic|Ctrl+n}}:
+
ホームを新しいタブで開くショートカットは2つ存在します ({{ic|g}}{{ic|n}} {{ic|Ctrl+n}}){{ic|Ctrl+n}} のバインドを変更する場合:
 
{{hc|rc.conf|<nowiki>
 
{{hc|rc.conf|<nowiki>
 
map <c-n> eval fm.tab_new('%d')
 
map <c-n> eval fm.tab_new('%d')
 
</nowiki>}}
 
</nowiki>}}
  +
  +
=== PDF ファイルのプレビュー ===
  +
PDF ファイルを画像に変換することで ranger で PDF ファイルをプレビューできます。Ranger は画像のプレビューを {{ic|~/.cache/ranger/}} に保存します。
  +
  +
まず、画像プレビューを有効化してください:
  +
  +
{{hc|~/.config/ranger/rc.conf|<nowiki>
  +
# Use one of the supported image preview protocols
  +
set preview_images true
  +
</nowiki>}}
  +
  +
Ranger は {{Pkg|w3m}} などを使って画像をプレビューします。利用可能な方法については {{ic|~/.config/ranger/rc.conf}} を見てください。
  +
  +
そして、以下の pdf プレビューコマンドを追加してください:
  +
  +
{{hc|~/.config/ranger/scope.sh|<nowiki>
  +
# Image previews, if enabled in ranger.
  +
if [ "$preview_images" = "True" ]; then
  +
case "$mimetype" in
  +
application/pdf)
  +
pdftoppm -jpeg -singlefile "$path" "${cached//.jpg}" && exit 6;;
  +
esac
  +
fi
  +
</nowiki>}}
  +
  +
上記の例では {{Pkg|poppler}} の {{ic|pdftoppm}} ユーティリティを使って画像プレビューを作成しています。{{Pkg|ghostscript}} や {{Pkg|imagemagick}} など他の方法も利用可能です。
   
 
=== シェルの小技 ===
 
=== シェルの小技 ===
253行目: 307行目:
 
==== パスの同期 ====
 
==== パスの同期 ====
   
''ranger'' はシェル[[Bash/関数|関数]] {{ic|/usr/share/doc/ranger/examples/bash_automatic_cd.sh}} を提供しています。{{ic|ranger}} ではなく {{ic|ranger-cd}} を実行すると、最後に閲覧したフォルダに自動的に ''cd'' されます。
+
Ranger はシェル[[Bash/関数|関数]] {{ic|/usr/share/doc/ranger/examples/bash_automatic_cd.sh}} を提供しています。{{ic|ranger}} ではなく {{ic|ranger-cd}} を実行すると、最後に閲覧したフォルダに自動的に ''cd'' されます。
   
グラフィカルランチャーから ranger を起動した場合 ({{ic|$TERMCMD -e ranger}} など、TERMCMD は X ターミナル)、{{ic|ranger-cd}} は使えません。実行可能属性を付与したスクリプトを作成して:
+
グラフィカルランチャーから Ranger を起動した場合 ({{ic|$TERMCMD -e ranger}} など、TERMCMD は X ターミナル)、{{ic|ranger-cd}} は使えません。実行可能属性を付与したスクリプトを作成して:
   
 
{{hc|ranger-launcher.sh|<nowiki>
 
{{hc|ranger-launcher.sh|<nowiki>
273行目: 327行目:
 
==== ranger からシェルを起動 ====
 
==== ranger からシェルを起動 ====
   
  +
前の方法を使用すると、最後に参照したパスのシェルに切り替えることができます。ただし、いくつかの理由(多くの開かれたタブ、進行中のコピーなど)のために ranger を終了したくない場合があります。ranger sessionを失うことなく、ranger(デフォルトではS)からシェルを開始できます。残念ながら、シェルは現在のフォルダーに自動的に切り替わりません。繰り返しますが、これは実行可能スクリプトで解決できます。
With the previous method you can switch to a shell in last browsed path simply by leaving ranger. However you may not want to quit ranger for several reasons (numerous opened tabs, copy in progress, etc.).
 
You can start a shell from ranger ({{ic|S}} by default) without losing your ranger session. Unfortunately, the shell will not switch to the current folder automatically. Again, this can be solved with an executable script:
 
   
 
{{hc|shellcd|<nowiki>
 
{{hc|shellcd|<nowiki>
283行目: 336行目:
 
</nowiki>}}
 
</nowiki>}}
   
  +
前と同様に、シェル構成の最後にこれを追加します:
and - as before - add this to at the very end of your shell configuration:
 
   
 
{{hc|shellrc|<nowiki>
 
{{hc|shellrc|<nowiki>
289行目: 342行目:
 
</nowiki>}}
 
</nowiki>}}
   
  +
これで、レンジャーのシェルバインディングを変更できます:
Now you can change your shell binding for ranger:
 
   
 
{{hc|rc.conf|
 
{{hc|rc.conf|
307行目: 360行目:
   
 
ZDIRS はあなたのディレクトリスタックに置き換えてください。
 
ZDIRS はあなたのディレクトリスタックに置き換えてください。
  +
  +
===== シンプルな方法 =====
  +
  +
{{hc|rc.conf|<nowiki>
  +
map S shell bash -c "cd %d; bash"
  +
</nowiki>}}
  +
上記の設定は他のシェルでも使えます。(デフォルト設定のように) シェルを実行するかわりに、シェルの中で {{ic|cd}} を実行してから、インタラクティブシェルを起動して使用できるようにしています。
   
 
==== ranger が現在のシェルで動いていない場合にのみ ranger の新しいインスタンスを起動 ====
 
==== ranger が現在のシェルで動いていない場合にのみ ranger の新しいインスタンスを起動 ====
321行目: 381行目:
 
}
 
}
   
  +
{{ic|rg}} を実行して ranger を起動・復帰してください。
Execute {{ic|rg}} to start or restore ranger.
 
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
333行目: 393行目:
 
== 参照 ==
 
== 参照 ==
   
* [https://bbs.archlinux.org/viewtopic.php?id=93025 BBS thread]
+
* [https://bbs.archlinux.org/viewtopic.php?id=93025 BBS スレッド]
* [http://dotshare.it/category/fms/ranger/ DotShare.it configurations]
+
* [http://dotshare.it/category/fms/ranger/ DotShare.it の設定]
* [http://github.com/hut/ranger GitHub]
+
* [https://github.com/hut/ranger GitHub]
 
* [https://www.digitalocean.com/community/tutorials/installing-and-using-ranger-a-terminal-file-manager-on-a-ubuntu-vps Installing and using ranger]
 
* [https://www.digitalocean.com/community/tutorials/installing-and-using-ranger-a-terminal-file-manager-on-a-ubuntu-vps Installing and using ranger]
 
* [https://lists.nongnu.org/mailman/listinfo/ranger-users メーリングリスト]
 
* [https://lists.nongnu.org/mailman/listinfo/ranger-users メーリングリスト]
* [http://nongnu.org/ranger 公式ウェブサイト]
 
 
* [http://bloerg.net/2012/10/17/ranger-file-manager.html Ranger チュートリアル]
 
* [http://bloerg.net/2012/10/17/ranger-file-manager.html Ranger チュートリアル]

2021年4月13日 (火) 13:06時点における版

関連記事

ranger は Python で書かれているテキストベースのファイルマネージャです。ディレクトリは3つのカラムに分けて表示されます。キーストロークやブックマーク、マウスやコマンド履歴を使ってディレクトリを移動することができます。選択したファイルは自動的にプレビューが表示されディレクトリは中身が表示されます。

ranger の特徴: vi スタイルのキーバインド、ブックマーク、選択、タグ、タブ、コマンド履歴、シンボリックリンクを作成可能、複数あるコンソールモード、タスク表示。ranger のコマンドやキーバインドはカスタマイズすることができ、外部スクリプトを呼び出すこともできます。よく似たファイルマネージャに Vifm があり、2つのペインと vi スタイルのキーバインドを使用しますが、機能の数はやや劣ります。

インストール

ranger公式リポジトリからインストールできます。開発版を使いたい場合は AUR から ranger-gitAUR をインストールしてください。

使用方法

ranger を起動するには、まずターミナルを起動して、そこから ranger を実行してください。

キー コマンド
? マニュアルを開く、キーバインド・コマンド・設定を表示
l, Enter ファイルを起動
j, k 現在のディレクトリ内のファイルを選ぶ
h, l 上または下の階層のディレクトリへ移動

設定

起動後、ranger~/.config/ranger ディレクトリを作成します。デフォルト設定をこのディレクトリにコピーしたいときは次のコマンドを実行してください:

ranger --copy-config=all
  • rc.conf - スタートアップコマンドとキーバインド
  • commands.py - : で起動するコマンド
  • rifle.conf - 特定のファイルを起動した時に使われるアプリケーション

デフォルトファイルもロードされるので rc.conf にはデフォルトファイルとの差異部分だけを記述します。commands.py には、ファイル全体をインクルードしない場合、一番最初に以下の行を記述します:

from ranger.api.commands import *

作成したディレクトリ ~/.Trash/DD でファイルを移動するキーバインドを追加するには、~/.config/ranger/rc.conf に以下を追記します:

map DD shell mv -t /home/${USER}/.Trash %s

設定に関する詳細は man ranger を見て下さい。

ファイルをゴミ箱に移動

DD を使用してゴミ箱ディレクトリ ~/.local/share/Trash/files/ にファイルを移動するキーバインドを追加するには、設定ファイルを次のように変更します。

~/.config/ranger/rc.conf
...
map DD shell mv %s /home/${USER}/.local/share/Trash/files/
...

または、 glib2 パッケージで提供されている GIO コマンドラインツールを使用します。

map DD shell gio trash %s

ゴミ箱 の中を見たり、空にするには通常、 nautilus のようなグラフィカルファイルマネージャがサポートしていますが、 gio list trash:// というコマンドでゴミ箱の中を見て、 gio trash--empty というコマンドでゴミ箱を空にすることもできます。

コマンドの定義

上記の例の続きに、以下のエントリを ~/.config/ranger/commands.py に追加することでゴミ箱 (~/.Trash) を空にできます:

class empty(Command):
    """:empty

    Empties the trash directory ~/.Trash
    """

    def execute(self):
        self.fm.run("rm -rf /home/myname/.Trash/{*,.[^.]*}")

使用するには :empty と入力して Enter を押してください。タブ補完も使えます。

警告: [^.] がこのコマンドの本質的部分です。書き忘れると ..* にマッチする全ファイル・ディレクトリ、すなわちホームディレクトリが全て削除されます。

カラースキーム

~/.config/rangercolorschemes サブフォルダを作成してください:

$ mkdir ~/.config/ranger/colorschemes

それから新しい newscheme.py を上記のフォルダにコピーします。~/.config/ranger/rc.conf ファイルからデフォルトカラースキームを変更してください:

set colorscheme newscheme

ファイルプレビューでのカラーハイライト

python-pygments パッケージをインストールし、 /usr/share/doc/ranger/config/scope.sh~/.config/ranger/scope.sh にコピーして、 ranger の構成ファイル内の変数 PYGMENTIZE_STYLE を必要に応じて編集します。サポートされているテーマの完全なリストは pygmentize -L style から取得できます。

ファイルの関連付け

~/.config/ranger/rifle.conf を編集してください。先の行が早く実行されるので、ファイルの先頭に追記するようにしてください。例えば、tex ファイルを kile で開くには以下のエントリを記述します:

ext tex = kile "$@"

xdg-utils で全てのファイルを開くようにするには:

has xdg-open, flag f = xdg-open "$1"

ヒントとテクニック

圧縮ファイル

以下のコマンドでは atool を使ってアーカイブの操作を行います。

アーカイブの解凍

以下のコマンドは圧縮ファイルをコピー (yy) して適切なディレクトリで :extracthere を実行します:

import os
from ranger.core.loader import CommandLoader

class extracthere(Command):
    def execute(self):
        """ Extract copied files to current directory """
        copied_files = tuple(self.fm.copy_buffer)

        if not copied_files:
            return

        def refresh(_):
            cwd = self.fm.get_directory(original_path)
            cwd.load_content()

        one_file = copied_files[0]
        cwd = self.fm.thisdir
        original_path = cwd.path
        au_flags = ['-X', cwd.path]
        au_flags += self.line.split()[1:]
        au_flags += ['-e']

        self.fm.copy_buffer.clear()
        self.fm.cut_buffer = False
        if len(copied_files) == 1:
            descr = "extracting: " + os.path.basename(one_file.path)
        else:
            descr = "extracting files from: " + os.path.basename(one_file.dirname)
        obj = CommandLoader(args=['aunpack'] + au_flags \
                + [f.path for f in copied_files], descr=descr)

        obj.signal_bind('after', refresh)
        self.fm.loader.add(obj)

圧縮

次のコマンドを使用すると、ユーザーは現在のディレクトリにあるいくつかのファイルをマークしてから :compress パッケージの名前 パッケージ名で圧縮できます。現在のディレクトリの名前を取得し、拡張子に圧縮形式を追加することにより、いくつかの圧縮形式の提案をサポートします。 atool をインストールする必要があります。インストールされていない場合、アーカイブを作成するときにエラーメッセージが表示されます。

import os
from ranger.core.loader import CommandLoader

class compress(Command):
    def execute(self):
        """ Compress marked files to current directory """
        cwd = self.fm.thisdir
        marked_files = cwd.get_selection()

        if not marked_files:
            return

        def refresh(_):
            cwd = self.fm.get_directory(original_path)
            cwd.load_content()

        original_path = cwd.path
        parts = self.line.split()
        au_flags = parts[1:]

        descr = "compressing files in: " + os.path.basename(parts[1])
        obj = CommandLoader(args=['apack'] + au_flags + \
                [os.path.relpath(f.path, cwd.path) for f in marked_files], descr=descr)

        obj.signal_bind('after', refresh)
        self.fm.loader.add(obj)

    def tab(self):
        """ Complete with current folder name """

        extension = ['.zip', '.tar.gz', '.rar', '.7z']
        return ['compress ' + os.path.basename(self.fm.thisdir.path) + ext for ext in extension]

外付けドライブ

外付けドライブは udevudisks で自動的にマウントさせることができます。gm (go, media) を押すことで /media にマウントされたドライブに簡単にアクセスできます。

隠しファイル

次のコマンドで隠しファイルの表示を切り替えることができます :set show_hidden! または :set show_hidden true を使用して隠しファイルを表示します。 これを永続的にするには、設定を構成ファイルに追加します。

rc.conf
set show_hidden true

または、zh を押して隠しファイルを切り替えることもできます。

イメージのマウント

以下のコマンドではイメージのマウントに CDemu を使用し、仮想ドライブを特定の場所 (この例では '/media/virtualrom') にマウントするために autofs などのシステムを利用します。マウントパスはあなたの設定に合わせて変更するようにしてください。

ranger から cdemud 仮想ドライブにイメージをマウントするには、イメージファイルを選択してコンソールに ':mount' と入力します。実際のマウントには設定によって多少時間がかかるので、カスタムローダーを使ってマウントディレクトリがマウントされるまで待機してからタブ 9 で裏で開くようにします。

import os, time
from ranger.core.loader import Loadable
from ranger.ext.signals import SignalDispatcher
from ranger.ext.shell_escape import *

class MountLoader(Loadable, SignalDispatcher):
    """
    Wait until a directory is mounted
    """
    def __init__(self, path):
        SignalDispatcher.__init__(self)
        descr = "Waiting for dir '" + path + "' to be mounted"
        Loadable.__init__(self, self.generate(), descr)
        self.path = path

    def generate(self):
        available = False
        while not available:
            try:
                if os.path.ismount(self.path):
                    available = True
            except:
                pass
            yield
            time.sleep(0.03)
        self.signal_emit('after')

class mount(Command):
    def execute(self):
        selected_files = self.fm.thisdir.get_selection()

        if not selected_files:
            return

        space = ' '
        self.fm.execute_command("cdemu -b system unload 0")
        self.fm.execute_command("cdemu -b system load 0 " + \
                space.join([shell_escape(f.path) for f in selected_files]))
 
        mountpath = "/media/virtualrom/"

        def mount_finished(path):
            currenttab = self.fm.current_tab
            self.fm.tab_open(9, mountpath)
            self.fm.tab_open(currenttab)

        obj = MountLoader(mountpath)
        obj.signal_bind('after', mount_finished)
        self.fm.loader.add(obj)

現在のフォルダを新しいタブで開く

ホームを新しいタブで開くショートカットは2つ存在します (gnCtrl+n)。Ctrl+n のバインドを変更する場合:

rc.conf
map <c-n>  eval fm.tab_new('%d')

PDF ファイルのプレビュー

PDF ファイルを画像に変換することで ranger で PDF ファイルをプレビューできます。Ranger は画像のプレビューを ~/.cache/ranger/ に保存します。

まず、画像プレビューを有効化してください:

~/.config/ranger/rc.conf
# Use one of the supported image preview protocols
set preview_images true

Ranger は w3m などを使って画像をプレビューします。利用可能な方法については ~/.config/ranger/rc.conf を見てください。

そして、以下の pdf プレビューコマンドを追加してください:

~/.config/ranger/scope.sh
# Image previews, if enabled in ranger.
if [ "$preview_images" = "True" ]; then
    case "$mimetype" in
        application/pdf)
             pdftoppm -jpeg -singlefile "$path" "${cached//.jpg}" && exit 6;;
    esac
fi

上記の例では popplerpdftoppm ユーティリティを使って画像プレビューを作成しています。ghostscriptimagemagick など他の方法も利用可能です。

シェルの小技

パスの同期

Ranger はシェル関数 /usr/share/doc/ranger/examples/bash_automatic_cd.sh を提供しています。ranger ではなく ranger-cd を実行すると、最後に閲覧したフォルダに自動的に cd されます。

グラフィカルランチャーから Ranger を起動した場合 ($TERMCMD -e ranger など、TERMCMD は X ターミナル)、ranger-cd は使えません。実行可能属性を付与したスクリプトを作成して:

ranger-launcher.sh
#!/bin/sh
export RANGERCD=true
$TERMCMD

シェルの設定のできるだけ最後に以下を追加してください:

.shellrc
$RANGERCD && unset RANGERCD && ranger-cd

これで RANGERCD 変数が設定されている場合のみ ranger-cd が起動します。この変数を unset するようにしてください。そうしないとターミナルからサブシェルを起動したときに自動的に ranger が再起動してしまいます。

ranger からシェルを起動

前の方法を使用すると、最後に参照したパスのシェルに切り替えることができます。ただし、いくつかの理由(多くの開かれたタブ、進行中のコピーなど)のために ranger を終了したくない場合があります。ranger sessionを失うことなく、ranger(デフォルトではS)からシェルを開始できます。残念ながら、シェルは現在のフォルダーに自動的に切り替わりません。繰り返しますが、これは実行可能スクリプトで解決できます。

shellcd
#!/bin/sh
export AUTOCD="$(realpath "$1")"

$SHELL

前と同様に、シェル構成の最後にこれを追加します:

shellrc
cd "$AUTOCD"

これで、レンジャーのシェルバインディングを変更できます:

rc.conf
map S shell shellcd %d

もしくは、シェルの history ファイルを利用することもできます。例えば、zsh の場合:

shellcd
## Prepend argument to zsh dirstack.
BUF="$(realpath "$1")
$(grep -v "$(realpath "$1")" "$ZDIRS")"
echo "$BUF" > "$ZDIRS"

zsh

ZDIRS はあなたのディレクトリスタックに置き換えてください。

シンプルな方法
rc.conf
map S shell bash -c "cd %d; bash"

上記の設定は他のシェルでも使えます。(デフォルト設定のように) シェルを実行するかわりに、シェルの中で cd を実行してから、インタラクティブシェルを起動して使用できるようにしています。

ranger が現在のシェルで動いていない場合にのみ ranger の新しいインスタンスを起動

シェルのスタートアップファイルに以下を記述してください:

rg() {
    if [ -z "$RANGER_LEVEL" ]
    then
        ranger
    else
        exit
    fi
}

rg を実行して ranger を起動・復帰してください。

トラブルシューティング

画像のプレビューでブロックノイズ

カラムのボーダーをなくすと画像プレビューでストライプが見えることがあります [1]~/.config/ranger/rc.conf に以下を設定:

set draw_borders true

参照