탭 완성을 위해 아이비를 사용하도록 eshell을 설정하려면 어떻게해야합니까?


16

나는 이멕스가 어떤 종류의 완성을 사용하는 거의 모든 곳 을 얻기에 충분 ivy하다는 것을 매우 좋아 합니다. 그러나 이것은 탭 완성 에 사용하도록 설정되지 않았습니다 . 나는 수료 후보 목록을 좋아하지만 UI를 선택 하는 것을 선호 합니다. 수상자 후보생을 위해 무엇을 재사용 하고 '아이비'에게 넘길 수있는 방법이 있습니까?(ivy-mode 1)ivycompleteing-readeshellivyeshellivyeshell

답변:


11

이것은 잘 작동합니다 :

(define-key eshell-mode-map (kbd "<tab>") 'completion-at-point)

왜 위의 기본값이 아닌지 모르겠습니다. 하지만 난 단지 사용 shell-mode하고 term-mode어쨌든.


3
(add-hook 'eshell-mode-hook '(lambda ()감싸 야 할 것을 추가해야 할 것입니다 .
Timm

고마워, 내가 가진 것보다 조금 더 깔끔합니다. 이것이 기본값이 아닌 이유는 아마도 과거의 누군가 pcomplete가 표준 완성 UI보다 선호했기 때문일 것입니다 .
Omar

6

나는 초기 테스트에 작업 OK 보인다 뭔가 발견 : 기본적으로 바인딩 <tab>에를 pcomplete-std-complete,하지만 기능은 어떤 이유로 상호 작용하지 않기 때문에, 당신은 그것을 포장해야합니다

(define-key eshell-mode-map (kbd "<tab>")
  (lambda () (interactive) (pcomplete-std-complete)))

pcompete-std-complete시도가 기록 완료 사용하는 pcomplete표준 완료 UI와 ivy기본적으로 우선합니다 (아주 최근의 업데이트를, 그들은 버퍼 eshell에 가까운 점에서 좋은 오버레이 오른쪽에 나타납니다!).

의 소스 코드의 주석 pcomplete-completions-at-point(이 pcomplete-std-complete에 따라 다름) 잠재적 인 문제의 몇 가지를 언급 :

;; FIXME: it only completes the text before point, whereas the
;; standard UI may also consider text after point.
;; FIXME: the `pcomplete' UI may be used internally during
;; pcomplete-completions and then throw to `pcompleted', thus
;; imposing the pcomplete UI over the standard UI.

<tab>입력 줄 끝을 제외하고는 누르지 않는다고 생각하기 때문에 첫 번째 것이 나에게 영향을 미치지 않을 것이라고 생각 합니다. 지금까지 두 번째 문제 표면을 보지 못했습니다.

편집 : eshell의 단점에 익숙하지 않은 사람들 (이것은 완곡 어입니다), 위에서 제안한 것처럼 eshell의 키를 리 바인드하려면 추가해야합니다.이 파일을 init 파일에 넣어야합니다.

(add-hook 'eshell-mode-hook
  (lambda () 
    (define-key eshell-mode-map (kbd "<tab>")
      (lambda () (interactive) (pcomplete-std-complete)))))

당신이 낭비 키 바인딩 - 인 - 어 - 후크 안티 패턴에 대해 나에게 소리하기 전에, 내가 eshell가와의 키맵을 선언 있다고 설명하자 (defvar eshell-mode-map nil)다음 않는 (setq-local eshell-mode-map (sparse-keymap))내부 eshell-mode! (이 코드에는 도움이 ;; FIXME: What the hell!?됩니다.) 다시 eshell-mode실행 한 후에야 키를 리 바인드 할 수 없습니다 ! 따라서 후크.


또한 테스트 helm하지는 않았지만 이미 eshell탭 완성에 방해가되지 않으면 이 수정 사항이에 적용된다고 생각합니다 helm.
Omar

:) 팁 주셔서 감사합니다
Chakravarthy Raghunandan

"그가 무엇을 할 것인가!"라는 의견이 제 하루를 맞이했습니다.
GergelyPolonkai
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.