나는 그것을 사용하고 있다레인저스내 파일 시스템을 찾아보세요.
cd
Ranger를 떠나지 않고도 폴더에 들어갈 수 있는 바로가기가 있나요 ?(Ranger에서 탐색하여 찾은 폴더 위치가 포함된 열린 bash에서와 같이)?
답변1
답변2
또 다른 방법은 기본 쉘을 "따르게"하는 것입니다.ranger(1)
새 디렉토리로 이동하고 ranger(1)
종료한 후(또는 정지, 일반적으로 ctrl+ z) 기본 쉘이 이미 ranger(1)
종료했던 동일한 디렉토리에 있도록 파일 시스템을 둘러쌉니다.
이렇게 하려면 ranger(1)
명령 앞에 다음을 추가하여 셸 "소스"를 가져옵니다.단어 .
(예: 점 또는 마침표) 또는단어 source
일부 껍질에.
. ranger
ranger(1)
이제 쉘은 파일 시스템을 "따릅니다" .
ranger
이는 명령(파이썬 스크립트)에 내장 된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
}