「Ranger」の版間の差分
(→イメージのマウント: 同期) |
|||
(6人の利用者による、間の31版が非表示) | |||
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- |
+ | [[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" |
||
25行目: | 30行目: | ||
! キー !! コマンド |
! キー !! コマンド |
||
|- |
|- |
||
− | | {{ic|?}} || マニュアルを開く |
+ | | {{ic|?}} || マニュアルを開く、キーバインド・コマンド・設定を表示 |
|- |
|- |
||
− | | {{ic| |
+ | | {{ic|l}}, {{ic|Enter}} || ファイルを起動 |
|- |
|- |
||
− | | {{ic| |
+ | | {{ic|j}}, {{ic|k}} || 現在のディレクトリ内のファイルを選ぶ |
|- |
|- |
||
+ | | {{ic|h}}, {{ic|l}} || 上または下の階層のディレクトリへ移動 |
||
− | | {{ic|3?}} || 設定を表示 |
||
− | |- |
||
− | | {{ic|l}}, {{ic|Enter}} || ファイルを起動 |
||
|} |
|} |
||
55行目: | 58行目: | ||
設定に関する詳細は [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}} というコマンドでゴミ箱を空にすることもできます。 |
||
=== コマンドの定義 === |
=== コマンドの定義 === |
||
− | + | 上記の例の続きに、以下のエントリを {{ic|~/.config/ranger/commands.py}} に追加することでゴミ箱 ({{ic|~/.Trash}}) を空にできます: |
|
{{bc|<nowiki> |
{{bc|<nowiki> |
||
71行目: | 90行目: | ||
</nowiki>}} |
</nowiki>}} |
||
− | + | 使用するには {{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行目: | 103行目: | ||
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行目: | 118行目: | ||
has xdg-open, flag f = xdg-open "$1" |
has xdg-open, flag f = xdg-open "$1" |
||
+ | == ヒントとテクニック == |
||
− | == Tips and tricks == |
||
=== 圧縮ファイル === |
=== 圧縮ファイル === |
||
+ | 以下のコマンドでは {{Pkg|atool}} を使ってアーカイブの操作を行います。 |
||
− | These commands use {{Pkg|atool}} to perform archive operations. |
||
==== アーカイブの解凍 ==== |
==== アーカイブの解凍 ==== |
||
+ | 次のコマンドは、選択したアーカイブ元のディレクトリへ抽出します。 |
||
− | 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> |
||
109行目: | 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(_): |
||
121行目: | 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'] |
||
130行目: | 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) |
||
143行目: | 166行目: | ||
==== 圧縮 ==== |
==== 圧縮 ==== |
||
+ | 次のコマンドを使用すると、ユーザーは現在のディレクトリにあるいくつかのファイルをマークしてから {{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行目: | 206行目: | ||
外付けドライブは [[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}} を押して隠しファイルを切り替えることもできます。 |
||
=== イメージのマウント === |
=== イメージのマウント === |
||
− | 以下のコマンドではイメージのマウントに [[CDemu]] を使用し、仮想ドライブを特定の場所 (この例では '/media/virtualrom') にマウントするために [[autofs]] などのシステムを利用します。マウントパスはあなたの設定に合わせて変更するようにしてください。 |
+ | 以下のコマンドではイメージのマウントに [[CDemu]] を使用し、仮想ドライブを特定の場所 (この例では '/media/virtualrom') にマウントするために [[autofs]] などのシステムを利用します。'''マウントパスはあなたの設定に合わせて変更するようにしてください。''' |
ranger から cdemud 仮想ドライブにイメージをマウントするには、イメージファイルを選択してコンソールに ':mount' と入力します。実際のマウントには設定によって多少時間がかかるので、カスタムローダーを使ってマウントディレクトリがマウントされるまで待機してからタブ 9 で裏で開くようにします。 |
ranger から cdemud 仮想ドライブにイメージをマウントするには、イメージファイルを選択してコンソールに ':mount' と入力します。実際のマウントには設定によって多少時間がかかるので、カスタムローダーを使ってマウントディレクトリがマウントされるまで待機してからタブ 9 で裏で開くようにします。 |
||
244行目: | 277行目: | ||
=== 現在のフォルダを新しいタブで開く === |
=== 現在のフォルダを新しいタブで開く === |
||
− | + | ホームを新しいタブで開くショートカットは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行目: | 313行目: | ||
==== パスの同期 ==== |
==== パスの同期 ==== |
||
− | + | 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}} は使えません。以下のような実行可能属性を付与したスクリプトを作成します: |
{{hc|ranger-launcher.sh|<nowiki> |
{{hc|ranger-launcher.sh|<nowiki> |
||
263行目: | 323行目: | ||
</nowiki>}} |
</nowiki>}} |
||
− | シェルの設定の''できるだけ最後''に以下を追加してください: |
+ | シェルの設定の ''できるだけ最後'' に以下を追加してください: |
{{hc|.''shell''rc|<nowiki> |
{{hc|.''shell''rc|<nowiki> |
||
269行目: | 329行目: | ||
</nowiki>}} |
</nowiki>}} |
||
+ | これで {{ic|RANGERCD}} 変数が設定されている場合のみ {{ic|ranger-cd}} が起動します。この変数を unset するようにしてください。そうしないとターミナルからサブシェルを起動したときに自動的に {{ic|ranger}} が再起動してしまいます。 |
||
− | This will launch {{ic|ranger-cd}} only if the {{ic|RANGERCD}} variable is set. It is important to unset this variable again, otherwise launching a subshell from this terminal will automatically relaunch {{ic|ranger}}. |
||
− | ==== |
+ | ==== Ranger インスタンスのネスト防止 ==== |
+ | カレントディレクトリで {{ic|S}} を使ってシェルを起動し、シェルを終了すると ranger インスタンスに戻ります。 |
||
− | 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: |
||
+ | しかし、既に ranger がシェルにいることを忘れて再び ranger を起動すると、ranger が ranger を実行している状態になってしまいます。 |
||
− | {{hc|shellcd|<nowiki> |
||
− | #!/bin/sh |
||
− | export AUTOCD="$(realpath "$1")" |
||
+ | これを防ぐには、[[自動起動#シェルのログイン/ログアウト時|シェルスタートアップファイル]] に次の関数を作成します。 |
||
− | $SHELL |
||
− | </nowiki>}} |
||
+ | ranger() { |
||
− | and - as before - add this to at the very end of your shell configuration: |
||
+ | if [ -z "$RANGER_LEVEL" ]; then |
||
− | |||
+ | /usr/bin/ranger "$@" |
||
− | {{hc|shellrc|<nowiki> |
||
− | cd "$AUTOCD" |
||
− | </nowiki>}} |
||
− | |||
− | Now you can change your shell binding for ranger: |
||
− | |||
− | {{hc|rc.conf| |
||
− | map S shell shellcd %d |
||
− | }} |
||
− | |||
− | Alternatively, you can make use of your shell history file if it has any. For instance, you could do this for [[zsh#ディレクトリスタック|zsh]]: |
||
− | |||
− | {{hc|shellcd|<nowiki> |
||
− | ## Prepend argument to zsh dirstack. |
||
− | BUF="$(realpath "$1") |
||
− | $(grep -v "$(realpath "$1")" "$ZDIRS")" |
||
− | echo "$BUF" > "$ZDIRS" |
||
− | |||
− | zsh |
||
− | </nowiki>}} |
||
− | |||
− | Change ZDIRS for your dirstack. |
||
− | |||
− | ==== ranger が現在のシェルで動いていない場合にのみ ranger の新しいインスタンスを起動 ==== |
||
− | |||
− | [[自動起動#シェル|シェルのスタートアップファイル]]に以下を記述してください: |
||
− | |||
− | rg() { |
||
− | if [ -z "$RANGER_LEVEL" ] |
||
− | then |
||
− | ranger |
||
else |
else |
||
exit |
exit |
||
fi |
fi |
||
} |
} |
||
− | |||
− | Execute {{ic|rg}} to start or restore ranger. |
||
== トラブルシューティング == |
== トラブルシューティング == |
||
333行目: | 357行目: | ||
== 参照 == |
== 参照 == |
||
− | * [https://bbs.archlinux.org/viewtopic.php?id=93025 BBS |
+ | * [https://bbs.archlinux.org/viewtopic.php?id=93025 BBS スレッド] |
− | * [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/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 メーリングリスト] |
||
− | * [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 チュートリアル] |
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