Intereting Posts

Как отключить emacs здесь завершение документа

При редактировании файла сценария bash с emacs и попытке ввести <<< , во втором < emacs вставить шаблон для данного документа, как в следующем примере:

 <<EOF EOF 

Это не желаемый результат, потому что я бы ввел буквальный <<< .

На данный момент я прибегаю к вводу < < < , а затем удалению пробелов, но я предпочитаю, чтобы мне разрешалось вводить его напрямую.

На самом деле нет необходимости в том, что функция Tom-s- my-disable-here-document перезаписывает ключи. Эта функция может быть включена и отключена с помощью sh-electric-here-document-mode :

 (add-hook 'sh-mode-hook (lambda () (sh-electric-here-document-mode -1))) 

(Он также может быть переключен для активного буфера через Mx sh-electric-here-document-mode .)

Привяжите < к self-insert-command в режиме bash, а затем вставьте только символ.

По умолчанию он привязан к 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)) 

Если единственная причина, по которой вы хотите отключить поведение « здесь-doc», заключается в том, что она не позволяет вам вставлять здесь-строку <<<, тогда привязка C-< к функции, которая содержит (insert "<<<") будет работать, и по-прежнему разрешить шаблон aut here-doc

 (defun my-here-string() "Insert <<< (eg. for a bash here-string)" (interactive) (insert "<<<")) (global-set-key (kbd "C-<") 'my-here-string) 

Тип < Cq <<

Я вводил <<< как M-3 < в режиме оболочки.

Посмотрев на: 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 Cc $ and Cc < .") (defvar sh-mode-map (let ((map (make-sparse-keymap))) (define-key map (if sh-use-prefix "\Cc<" "<") (local-set-key "<" 'self-insert-command)) map) "Keymap used in Shell-Script mode.")