「Ranger」の版間の差分
(→ファイルをごみ箱に移動: スペースを削除) |
(→イメージのマウント: 同期) |
||
(2人の利用者による、間の12版が非表示) | |||
1行目: | 1行目: | ||
{{DISPLAYTITLE:ranger}} |
{{DISPLAYTITLE:ranger}} |
||
[[Category:ファイルマネージャ]] |
[[Category:ファイルマネージャ]] |
||
+ | [[Category:コンソールアプリケーション]] |
||
[[ar:Ranger]] |
[[ar:Ranger]] |
||
+ | [[de:Ranger]] |
||
[[en:Ranger]] |
[[en:Ranger]] |
||
+ | [[es:Ranger]] |
||
[[fr:ranger]] |
[[fr:ranger]] |
||
[[zh-hans:Ranger]] |
[[zh-hans:Ranger]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
+ | {{Related|lf}} |
||
{{Related|Midnight Commander}} |
{{Related|Midnight Commander}} |
||
+ | {{Related|nnn}} |
||
{{Related|vifm}} |
{{Related|vifm}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
− | [ |
+ | [https://ranger.github.io/ ranger] は Python で書かれているテキストベースのファイルマネージャです。ディレクトリは3つのカラムに分けて表示されます。キーストロークやブックマーク、マウスやコマンド履歴を使ってディレクトリを移動することができます。選択したファイルは自動的にプレビューが表示されディレクトリは中身が表示されます。 |
ranger の特徴: vi スタイルのキーバインド、ブックマーク、選択、タグ、タブ、コマンド履歴、シンボリックリンクを作成可能、複数あるコンソールモード、タスク表示。''ranger'' のコマンドやキーバインドはカスタマイズすることができ、外部スクリプトを呼び出すこともできます。よく似たファイルマネージャに [[Vifm]] があり、2つのペインと vi スタイルのキーバインドを使用しますが、機能の数はやや劣ります。 |
ranger の特徴: vi スタイルのキーバインド、ブックマーク、選択、タグ、タブ、コマンド履歴、シンボリックリンクを作成可能、複数あるコンソールモード、タスク表示。''ranger'' のコマンドやキーバインドはカスタマイズすることができ、外部スクリプトを呼び出すこともできます。よく似たファイルマネージャに [[Vifm]] があり、2つのペインと vi スタイルのキーバインドを使用しますが、機能の数はやや劣ります。 |
||
15行目: | 20行目: | ||
== インストール == |
== インストール == |
||
− | {{Pkg|ranger}} は[[公式リポジトリ]]から[[インストール]]できます。開発版を使いたい場合は [[AUR]] から {{AUR|ranger-git}} をインストールしてください。 |
+ | {{Pkg|ranger}} は [[公式リポジトリ]] から [[インストール]] できます。開発版を使いたい場合は [[AUR]] から {{AUR|ranger-git}} をインストールしてください。 |
== 使用方法 == |
== 使用方法 == |
||
− | ranger を起動するには、まず[[アプリケーション一覧#ターミナルエミュレータ|ターミナル]]を起動して、そこから {{ic|ranger}} を実行してください。 |
+ | ranger を起動するには、まず [[アプリケーション一覧#ターミナルエミュレータ|ターミナル]] を起動して、そこから {{ic|ranger}} を実行してください。 |
{| class="wikitable" |
{| class="wikitable" |
||
54行目: | 59行目: | ||
設定に関する詳細は [http://ranger.nongnu.org/ranger.1.html man ranger] を見て下さい。 |
設定に関する詳細は [http://ranger.nongnu.org/ranger.1.html man ranger] を見て下さい。 |
||
− | === ファイルを |
+ | === ファイルをゴミ箱に移動 === |
− | {{ic|DD}} を使用して |
+ | {{ic|DD}} を使用してゴミ箱ディレクトリ {{ic|~/.local/share/Trash/files/}} にファイルを移動するキーバインドを追加するには、設定ファイルを次のように変更します。 |
{{hc|~/.config/ranger/rc.conf|<nowiki> |
{{hc|~/.config/ranger/rc.conf|<nowiki> |
||
68行目: | 73行目: | ||
map DD shell gio trash %s |
map DD shell gio trash %s |
||
− | '' |
+ | ''ゴミ箱'' の中を見たり、空にするには通常、{{Pkg|nautilus}} のようなグラフィカルファイルマネージャがサポートしていますが、{{ic|gio list trash://}} というコマンドでゴミ箱の中を見て、{{ic|gio trash--empty}} というコマンドでゴミ箱を空にすることもできます。 |
=== コマンドの定義 === |
=== コマンドの定義 === |
||
101行目: | 106行目: | ||
=== ファイルプレビューでのカラーハイライト === |
=== ファイルプレビューでのカラーハイライト === |
||
− | {{Pkg|python-pygments}} パッケージをインストールし、 |
+ | {{Pkg|python-pygments}} パッケージをインストールし、{{ic|/usr/share/doc/ranger/config/scope.sh}} を {{ic|~/.config/ranger/scope.sh}} にコピーして、ranger の設定ファイル内の変数 {{ic|PYGMENTIZE_STYLE}} を必要に応じて編集します。サポートされているテーマの完全なリストは {{ic|pygmentize -L style}} から取得できます。 |
=== ファイルの関連付け === |
=== ファイルの関連付け === |
||
121行目: | 126行目: | ||
==== アーカイブの解凍 ==== |
==== アーカイブの解凍 ==== |
||
− | + | 次のコマンドは、選択したアーカイブ元のディレクトリへ抽出します。 |
|
{{bc|<nowiki> |
{{bc|<nowiki> |
||
127行目: | 132行目: | ||
from ranger.core.loader import CommandLoader |
from ranger.core.loader import CommandLoader |
||
− | class |
+ | class extract_here(Command): |
def execute(self): |
def execute(self): |
||
− | """ |
+ | """ extract selected files to current directory.""" |
− | + | cwd = self.fm.thisdir |
|
+ | marked_files = tuple(cwd.get_selection()) |
||
− | |||
− | if not copied_files: |
||
− | return |
||
def refresh(_): |
def refresh(_): |
||
139行目: | 142行目: | ||
cwd.load_content() |
cwd.load_content() |
||
− | one_file = |
+ | one_file = marked_files[0] |
cwd = self.fm.thisdir |
cwd = self.fm.thisdir |
||
original_path = cwd.path |
original_path = cwd.path |
||
− | au_flags = ['- |
+ | au_flags = ['-x', cwd.path] |
au_flags += self.line.split()[1:] |
au_flags += self.line.split()[1:] |
||
au_flags += ['-e'] |
au_flags += ['-e'] |
||
148行目: | 151行目: | ||
self.fm.copy_buffer.clear() |
self.fm.copy_buffer.clear() |
||
self.fm.cut_buffer = False |
self.fm.cut_buffer = False |
||
− | if len( |
+ | if len(marked_files) == 1: |
descr = "extracting: " + os.path.basename(one_file.path) |
descr = "extracting: " + os.path.basename(one_file.path) |
||
else: |
else: |
||
− | descr = "extracting files from: " + os.path.basename( |
+ | descr = "extracting files from: " + os.path.basename( |
+ | one_file.dirname) |
||
− | obj = CommandLoader(args=['aunpack'] + au_flags \ |
||
+ | obj = CommandLoader(args=['aunpack'] + au_flags |
||
− | + [f.path for f in copied_files], descr=descr) |
||
+ | + [f.path for f in marked_files], descr=descr, |
||
+ | read=True) |
||
obj.signal_bind('after', refresh) |
obj.signal_bind('after', refresh) |
||
161行目: | 166行目: | ||
==== 圧縮 ==== |
==== 圧縮 ==== |
||
− | 次のコマンドを使用すると、ユーザーは現在のディレクトリにあるいくつかのファイルをマークしてから {{ic|:compress ''パッケージの名前''}} パッケージ名で圧縮できます。現在のディレクトリの名前を取得し、拡張子に圧縮形式を追加することにより、いくつかの圧縮形式の提案をサポートします。 |
+ | 次のコマンドを使用すると、ユーザーは現在のディレクトリにあるいくつかのファイルをマークしてから {{ic|:compress ''パッケージの名前''}} パッケージ名で圧縮できます。現在のディレクトリの名前を取得し、拡張子に圧縮形式を追加することにより、いくつかの圧縮形式の提案をサポートします。{{pkg|atool}} をインストールする必要があります。インストールされていない場合、アーカイブを作成するときにエラーメッセージが表示されます。 |
{{bc|<nowiki> |
{{bc|<nowiki> |
||
204行目: | 209行目: | ||
=== 隠しファイル === |
=== 隠しファイル === |
||
− | 次のコマンドで隠しファイルの表示を切り替えることができます {{ic|:set show_hidden!}} または {{ic|:set show_hidden true}} を使用して隠しファイルを表示します。 これを永続的にするには、設定 |
+ | 次のコマンドで隠しファイルの表示を切り替えることができます {{ic|:set show_hidden!}} または {{ic|:set show_hidden true}} を使用して隠しファイルを表示します。 これを永続的にするには、設定ファイルに追加します。 |
{{hc|rc.conf|<nowiki> |
{{hc|rc.conf|<nowiki> |
||
214行目: | 219行目: | ||
=== イメージのマウント === |
=== イメージのマウント === |
||
− | 以下のコマンドではイメージのマウントに [[CDemu]] を使用し、仮想ドライブを特定の場所 (この例では '/media/virtualrom') にマウントするために [[autofs]] などのシステムを利用します。マウントパスはあなたの設定に合わせて変更するようにしてください。 |
+ | 以下のコマンドではイメージのマウントに [[CDemu]] を使用し、仮想ドライブを特定の場所 (この例では '/media/virtualrom') にマウントするために [[autofs]] などのシステムを利用します。'''マウントパスはあなたの設定に合わせて変更するようにしてください。''' |
ranger から cdemud 仮想ドライブにイメージをマウントするには、イメージファイルを選択してコンソールに ':mount' と入力します。実際のマウントには設定によって多少時間がかかるので、カスタムローダーを使ってマウントディレクトリがマウントされるまで待機してからタブ 9 で裏で開くようにします。 |
ranger から cdemud 仮想ドライブにイメージをマウントするには、イメージファイルを選択してコンソールに ':mount' と入力します。実際のマウントには設定によって多少時間がかかるので、カスタムローダーを使ってマウントディレクトリがマウントされるまで待機してからタブ 9 で裏で開くようにします。 |
||
278行目: | 283行目: | ||
=== PDF ファイルのプレビュー === |
=== PDF ファイルのプレビュー === |
||
+ | |||
PDF ファイルを画像に変換することで ranger で PDF ファイルをプレビューできます。Ranger は画像のプレビューを {{ic|~/.cache/ranger/}} に保存します。 |
PDF ファイルを画像に変換することで ranger で PDF ファイルをプレビューできます。Ranger は画像のプレビューを {{ic|~/.cache/ranger/}} に保存します。 |
||
307行目: | 313行目: | ||
==== パスの同期 ==== |
==== パスの同期 ==== |
||
− | 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> |
||
317行目: | 323行目: | ||
</nowiki>}} |
</nowiki>}} |
||
− | シェルの設定の''できるだけ最後''に以下を追加してください: |
+ | シェルの設定の ''できるだけ最後'' に以下を追加してください: |
{{hc|.''shell''rc|<nowiki> |
{{hc|.''shell''rc|<nowiki> |
||
325行目: | 331行目: | ||
これで {{ic|RANGERCD}} 変数が設定されている場合のみ {{ic|ranger-cd}} が起動します。この変数を unset するようにしてください。そうしないとターミナルからサブシェルを起動したときに自動的に {{ic|ranger}} が再起動してしまいます。 |
これで {{ic|RANGERCD}} 変数が設定されている場合のみ {{ic|ranger-cd}} が起動します。この変数を unset するようにしてください。そうしないとターミナルからサブシェルを起動したときに自動的に {{ic|ranger}} が再起動してしまいます。 |
||
− | ==== |
+ | ==== Ranger インスタンスのネスト防止 ==== |
+ | カレントディレクトリで {{ic|S}} を使ってシェルを起動し、シェルを終了すると ranger インスタンスに戻ります。 |
||
− | 前の方法を使用すると、最後に参照したパスのシェルに切り替えることができます。ただし、いくつかの理由(多くの開かれたタブ、進行中のコピーなど)のために ranger を終了したくない場合があります。ranger sessionを失うことなく、ranger(デフォルトではS)からシェルを開始できます。残念ながら、シェルは現在のフォルダーに自動的に切り替わりません。繰り返しますが、これは実行可能スクリプトで解決できます。 |
||
+ | しかし、既に ranger がシェルにいることを忘れて再び ranger を起動すると、ranger が ranger を実行している状態になってしまいます。 |
||
− | {{hc|shellcd|<nowiki> |
||
− | #!/bin/sh |
||
− | export AUTOCD="$(realpath "$1")" |
||
+ | これを防ぐには、[[自動起動#シェルのログイン/ログアウト時|シェルスタートアップファイル]] に次の関数を作成します。 |
||
− | $SHELL |
||
− | </nowiki>}} |
||
+ | ranger() { |
||
− | 前と同様に、シェル構成の最後にこれを追加します: |
||
+ | if [ -z "$RANGER_LEVEL" ]; then |
||
− | |||
+ | /usr/bin/ranger "$@" |
||
− | {{hc|shellrc|<nowiki> |
||
− | cd "$AUTOCD" |
||
− | </nowiki>}} |
||
− | |||
− | これで、レンジャーのシェルバインディングを変更できます: |
||
− | |||
− | {{hc|rc.conf| |
||
− | map S shell shellcd %d |
||
− | }} |
||
− | |||
− | もしくは、シェルの history ファイルを利用することもできます。例えば、[[zsh#ディレクトリスタック|zsh]] の場合: |
||
− | |||
− | {{hc|shellcd|<nowiki> |
||
− | ## Prepend argument to zsh dirstack. |
||
− | BUF="$(realpath "$1") |
||
− | $(grep -v "$(realpath "$1")" "$ZDIRS")" |
||
− | echo "$BUF" > "$ZDIRS" |
||
− | |||
− | zsh |
||
− | </nowiki>}} |
||
− | |||
− | ZDIRS はあなたのディレクトリスタックに置き換えてください。 |
||
− | |||
− | ===== シンプルな方法 ===== |
||
− | |||
− | {{hc|rc.conf|<nowiki> |
||
− | map S shell bash -c "cd %d; bash" |
||
− | </nowiki>}} |
||
− | 上記の設定は他のシェルでも使えます。(デフォルト設定のように) シェルを実行するかわりに、シェルの中で {{ic|cd}} を実行してから、インタラクティブシェルを起動して使用できるようにしています。 |
||
− | |||
− | ==== ranger が現在のシェルで動いていない場合にのみ ranger の新しいインスタンスを起動 ==== |
||
− | |||
− | [[自動起動#シェル|シェルのスタートアップファイル]]に以下を記述してください: |
||
− | |||
− | rg() { |
||
− | if [ -z "$RANGER_LEVEL" ] |
||
− | then |
||
− | ranger |
||
else |
else |
||
exit |
exit |
||
fi |
fi |
||
} |
} |
||
− | |||
− | {{ic|rg}} を実行して ranger を起動・復帰してください。 |
||
== トラブルシューティング == |
== トラブルシューティング == |
||
396行目: | 360行目: | ||
* [http://dotshare.it/category/fms/ranger/ DotShare.it の設定] |
* [http://dotshare.it/category/fms/ranger/ DotShare.it の設定] |
||
* [https://github.com/hut/ranger GitHub] |
* [https://github.com/hut/ranger GitHub] |
||
+ | * [https://github.com/ranger/ranger/wiki/Official-user-guide オフィシャルユーザーガイド] |
||
* [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 メーリングリスト] |
2023年12月30日 (土) 23:02時点における最新版
関連記事
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/ranger
に colorschemes
サブフォルダを作成してください:
$ 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 を使ってアーカイブの操作を行います。
アーカイブの解凍
次のコマンドは、選択したアーカイブ元のディレクトリへ抽出します。
import os from ranger.core.loader import CommandLoader class extract_here(Command): def execute(self): """ extract selected files to current directory.""" cwd = self.fm.thisdir marked_files = tuple(cwd.get_selection()) def refresh(_): cwd = self.fm.get_directory(original_path) cwd.load_content() one_file = marked_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(marked_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 marked_files], descr=descr, read=True) 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]
外付けドライブ
外付けドライブは udev や udisks で自動的にマウントさせることができます。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つ存在します (g
n
と Ctrl+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
上記の例では poppler の pdftoppm
ユーティリティを使って画像プレビューを作成しています。ghostscript や imagemagick など他の方法も利用可能です。
シェルの小技
パスの同期
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 インスタンスのネスト防止
カレントディレクトリで S
を使ってシェルを起動し、シェルを終了すると ranger インスタンスに戻ります。
しかし、既に ranger がシェルにいることを忘れて再び ranger を起動すると、ranger が ranger を実行している状態になってしまいます。
これを防ぐには、シェルスタートアップファイル に次の関数を作成します。
ranger() { if [ -z "$RANGER_LEVEL" ]; then /usr/bin/ranger "$@" else exit fi }
トラブルシューティング
画像のプレビューでブロックノイズ
カラムのボーダーをなくすと画像プレビューでストライプが見えることがあります [1]。~/.config/ranger/rc.conf
に以下を設定:
set draw_borders true