쉘 모드 및 용어 모드에서 PWD가 변경 될 때 기본 디렉토리 자동 업데이트


12

원인 옵션이나 패키지가 있습니까 default-directory작업 디렉토리에서 변경하는 경우 업데이트 할 shell-mode과는 term-mode? 즉,를 사용할 때 cd솔루션은이 특정 명령과 다른 몇 가지를 찾는 것보다 더 강력해야합니다. 실제로 $PWD모든 명령 후의 값을 확인해야 한다고 생각합니다.

더 중요한 것은 로컬 디렉토리 로 처음 생성 된 shell-mode또는 term-mode버퍼 내부에서 원격 컴퓨터에 연결할 때도 작동해야한다는 것입니다 default-directory. 이것이 실제로 필요한 기능입니다. 프로그래밍 방식으로 터미널에 입력 한 명령이 원격 컴퓨터에서 실행되는지 여부를 프로그래밍 할 수 있습니다. 해당 정보를 올바르게 설정 default-directory하고 얻을 수있는 방법이 있다면 그 정보를 얻고 싶습니다. 이 작업을 수행하는 도구는 위에서 설명한대로 로컬에서도 작동합니다.


당신은 조사 했습니까 dirtrack-mode? 원하는 것을 할 수있는 고리가 있습니다.
J David Smith

답변:


12

귀하의 질문의 첫 부분은로 할 수 있다고 생각합니다 dirtrack-mode. 먼저 현재 작업 디렉토리를 포함하도록 쉘 프롬프트를 설정합니다. 다음으로, 추출 방법을 dirtrack-list알려주는 정규식으로 설정 dirtrack-mode하십시오. 예 : PS1Bash에서 이것을 다음 과 같이 설정 했습니다.

export PS1="[\h:\w] $ "

그리고 이맥스에서 나는 설정 dirtrack-list하고 켭니다 dirtrack-mode:

(set-variable 'dirtrack-list '("^.*[^ ]+:\\(.*\\)]" 1 nil))
(dirtrack-mode 1)

( 이 위대한 블로그 게시물 에서 가져 왔습니다 .)

그 후, 나는 마음대로 디렉토리를 바꿀 수 있고, default-directory갈수록 바뀐다. 셸에서 프롬프트를 같은 방식으로 설정 한 원격 컴퓨터에 SSH로 연결하는 경우에도 작동합니다 cd /etc/apache2. 원격 컴퓨터에서로 변경 default-directory됩니다 /etc/apache2. 그러나 이는 로컬 시스템입니다. 원격 시스템의 경우 로컬 시스템에서 default-directory여전히 설정됩니다 ./etc/apache2

질문의 두 번째 부분을 이해하면 다른 컴퓨터에 SSH를 연결할 때 default-directory와 같이 설정하려고 remote-machine:/etc/apache2합니다. 사용하는 경우 SSH - 엘을 , 당신은 실행 ssh-directory-tracking-mode이 작업을 할 수 있습니다. 예를 들어, M-x sshcd to /etc/apache2, run을 실행 C-x C-f하면 다음 과 같은 프롬프트가 표시됩니다.

Find Files or Url: /scp:aardvark@remote-machine:/etc/apache2

수동으로 'Mx ssh-directory-tracking-mode'를 실행할 수 있지만 ssh-mode의 후크로 설정하는 것이 더 편리합니다.

(setq ssh-mode-hook 'ssh-directory-tracking-mode)

추가 정보:


2
훌륭한 답변, 감사합니다! 필자가 작성한 패키지가이를 개선 할 수있는 기능을 키 웠기 때문에 실제로 이것에 관심이 있습니다. 그것은이다 with-editorMagit의 다음 릴리스에 의해 사용될 것이다. Magit 자체는 with-editorshell-mode/ -support를 사용하지 않으므로 term-mode릴리스 전에 이것을 통합하지 않을 것입니다. 그러나 Magit 릴리스가 완료되면 다른 정보에 다시 집중할 수있게되면 제공 한 정보를 통해 훨씬 쉽게 수행 할 수 있습니다.
tarsius

with-editorMagit 외부에서 시작하는 방법은 다음과 같습니다 ( emacs.stackexchange.com/questions/27/…) . 그리고 저를 이끌어 Magit 문제는이 질문을 물어 : github.com/magit/magit/issues/1638를 .
tarsius
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.