私はそれを使用していますレンジャーズ私のファイルシステムを見つけてください。
cd
Rangerを離れずにフォルダに入ることができるショートカットはありますか?(Rangerでナビゲートして見つけたフォルダの場所を含む開いたbashのように)?
答え1
答え2
別の方法は、基本シェルを「フォロー」することです。ranger(1)
新しいディレクトリに移動してranger(1)
終了した後(または停止、通常はctrl+ z)、デフォルトのシェルがすでにranger(1)
終了していたのと同じディレクトリにあるようにファイルシステムを囲みます。
これを行うには、ranger(1)
コマンドの前に次を追加してシェル「ソース」を取得します。言葉 .
(例:ドットまたはピリオド)または言葉 source
いくつかの殻に。
. ranger
ranger(1)
これで、シェルはファイルシステムに従います。
ranger
これはコマンド(Pythonスクリプト)に組み込まれていますbash(1)
ファイルのインポート時に読み込むスクリプトです。以下でのみ機能することに注意してください。bash(1)
互換性のあるケースです。
この組み込みのbashスクリプトは、このファイルを取得して実行できます。出るとレンジャーの最後の位置に移動します。最初のパラメータは ranger を実行するコマンドを指定し、デフォルトは「ranger」です。 (ファイル自体ではありません!)他のパラメータはレンジャーに渡されます。
これが好ましい使用パターンになったら、それをシェル初期化スクリプトranger(1)
に追加します。alias
alias ranger='. ranger'
答え3
:cd /path/to/folder
すでに Ranger にいる場合でも使用できます。
更新:この回答が提供されてから質問が編集され、無効になりました。
答え4
私の解決策は、ここの他の解決策よりも派手で動きやすい部分が多いです。
アイデアは、ユーザーがS
(「シェル」への一般的なバインディング)キーを押すと、それを現在のディレクトリを一時ファイルに書き込むRangerコマンドにマップすることです。
次に、一時ファイルが存在することを確認するシェル関数(私の場合は機能しzsh
ますが)でレンジャーをラップします。bash
存在する場合は、cd
そのディレクトリに移動してファイルを削除します。
シェル関数は現在シェルで実行されるためする現在のディレクトリを変更します。
ここの他の答えよりも少し複雑ですが、静止ranger
インスタンスを残すことなくうまく機能します。
rc.conf
したがって、次の行を追加してください。
map S quit_and_cd
commands.py
カスタム Ranger コマンドを生成するファイルから次のコマンドを生成します。
import os
from ranger.api.commands import Command
class quit_and_cd(Command):
def execute(self):
with open("/tmp/cd_ranger", "w") as f:
f.write(os.path.abspath(self.fm.thisdir.path))
# same as quitall_bang (:quitall!)
self.fm.exit()
次に、シェルの開始(.zshrc
または.bashrc
)でrangerという関数を作成します。
ranger () {
local LOGFILE='/tmp/cd_ranger'
# `command ranger` to launch ranger itself,
# instead of causing an infinite loop with
# this function calling itself
command ranger "$@" || exit $?
if [[ -f "${LOGFILE}" ]]
then
cd "$(cat "${LOGFILE}")"
rm -f "${LOGFILE}"
fi
}