Ranger を使用してファイルシステム内を移動しています。
レンジャーを離れずにcd
をフォルダーに入れるショートカットはありますか(レンジャーをナビゲートして見つけたフォルダーの場所を含むオープンbashの場合)?
既にレンジャーにいる場合は、:cd /path/to/folder
を使用することもできます。
更新:この回答が提供されてから質問が編集されたため、無効になりました。
他の方法で行うこともでき、ranger-cd
を使用して、レンジャーを閉じた後にbashのディレクトリを自動的に変更する このスクリプトを使用 。
function ranger-cd {
local IFS=$'\t\n'
local tempfile="$(mktemp -t tmp.XXXXXX)"
local ranger_cmd=(
command
ranger
--cmd="map Q chain Shell echo %d > "$tempfile"; quitall"
)
${ranger_cmd[@]} "$@"
if [[ -f "$tempfile" ]] && [[ "$(cat -- "$tempfile")" != "$(echo -n `pwd`)" ]]; then
cd -- "$(cat "$tempfile")" || return
fi
command rm -f -- "$tempfile" 2>/dev/null
}
シェルは、キーバインディングキャピタルQでレンジャーを終了したときにのみディレクトリを変更します(これを変更する場合は、map Q
を参照してください)。
私はそれを使っています
alias r=ranger-cd
このスクリプトを他のことにも適用できます。レンジャーを終了し、このディレクトリのvimセッションに切り替えます。
別のアプローチは、ファイルシステムの周りに基本的なシェルを「フォロー」する ranger(1)
にすることです。これにより、新しいディレクトリに移動した後、ranger(1)
が終了(または中断)します。 ctrl+z)基盤となるシェルはすでにranger(1)
が終了したのと同じディレクトリにあります。
これを行うには、コマンドの前にWord_.
_を付けて、シェルの「ソース」ranger(1)
を作成します(つまり、ドットまたはピリオド文字)またはWordsource
一部のシェルでは。
_. ranger
_
これで、シェルがファイルシステムを「追跡」しますranger(1)
。
これは、ranger
コマンド(python script))に埋め込まれた bash(1)
スクリプトがファイルをソースするときに読み取られるため、機能します。 bash(1)
互換シェルでのみ機能することに注意してください。
スクリプト内のコメントブロック から:
この埋め込みbashスクリプトは、このファイルをソースとして実行できます。レンジャーの終了後、レンジャーの最後の場所に移動します。最初の引数は、レンジャーを実行するコマンドを指定します。デフォルトは単に「レンジャー」です。 (このファイル自体ではありません!)他の引数はレンジャーに渡されます。
これがranger(1)
を使用する優先モードになる場合は、シェル初期化スクリプトでalias
として追加してください。
rangercd () {
tmp="$(mktemp)"
ranger --choosedir="$tmp" "$@"
if [ -f "$tmp" ]; then
dir="$(cat "$tmp")"
rm -f "$tmp"
if [ -d "$dir" ]; then
if [ "$dir" != "$(pwd)" ]; then
cd "$dir"
fi
fi
fi
}
bindkey -s '^o' 'rangercd\n'