emacs로 bash 스크립트 파일을 편집하고 입력하려고 할 <<<
때 두 번째 <
emacs에서 다음 예제와 같이 here 문서의 템플리트를 삽입하십시오.
<<EOF
EOF
리터럴을 입력하기 때문에 원하는 출력이 아닙니다 <<<
.
지금은을 입력 < < <
한 다음 공백을 삭제하는 데 의존 하지만 직접 입력하는 것을 선호합니다.
답변
실제로 Tom의 커스텀 my-disable-here-document
함수가 키를 리 바인드 할 필요가 없습니다 . 이 기능은 다음을 사용하여 활성화 및 비활성화 할 수 있습니다 sh-electric-here-document-mode
.
(add-hook 'sh-mode-hook
(lambda ()
(sh-electric-here-document-mode -1)))
(을 통해 활성 버퍼로 전환 할 수도 있습니다 M-x sh-electric-here-document-mode
.)
답변
바인딩 <
에 self-insert-command
떠들썩한 파티 모드에서 다음 만 문자를 삽입합니다.
기본적으로 sh-maybe-here-document
bash 모드 에 있을 때 바인딩 되며 해당 함수는 자동 삽입을 수행합니다.
키를 리바운드하는 방법은 다음과 같습니다.
(add-hook 'sh-set-shell-hook 'my-disable-here-document)
(defun my-disable-here-document ()
(local-set-key "<" 'self-insert-command))
답변
here-doc 동작 을 사용하지 않으려는 유일한 이유 는 here-string <<< 을 삽입 할 수 없기 C-<
때문에 포함하는 함수에 바인딩 (insert "<<<")
하면 작동하며 여전히 자동 here-doc 템플리트를 허용합니다.
(defun my-here-string()
"Insert <<< (eg. for a bash here-string)"
(interactive)
(insert "<<<"))
(global-set-key (kbd "C-<") 'my-here-string)
답변
쉘 모드에서와 <<<
같이 입력 M-3<합니다.
답변
유형 < C-q < <
답변
http://web.mit.edu/dosathena/sandbox/emacs-19.28/lisp/sh-script.el을 살펴본 후이
솔루션을 생각해 냈습니다.
;; disable the automatic EOF generation in Shell Mode
(defvar sh-use-prefix nil
"If non-nil when loading, `$' and `<' will be C-c $ and C-c < .")
(defvar sh-mode-map
(let ((map (make-sparse-keymap)))
(define-key map (if sh-use-prefix "\C-c<" "<")
(local-set-key "<" 'self-insert-command))
map)
"Keymap used in Shell-Script mode.")