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

cd $(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()" | tee $(readlink /proc/$$/fd/1))

(растущий на ответе 4485)

Это - большой ввод, поэтому сделайте псевдоним:

alias tee2tty='tee $(readlink /proc/$$/fd/1)'

Затем просто звоните cd $(python -c ... | tee2tty)

Это, конечно, требует, чтобы Вы уже знали то, что Вы хотите сделать с выводом, но имеет преимущество вызова команды только однажды.

11
05.09.2011, 11:58
6 ответов

Нет на самом деле никакой потребности в пользовательском 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.)

12
27.01.2020, 19:57
  • 1
    Также: sh-mode-hook не работал на меня, но sh-set-shell-hook сделал. –  Felipe Lema 20.05.2016, 19:37

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

(defun my-here-string() 
  "Insert <<< (eg. for a bash here-string)" 
  (interactive)
  (insert "<<<"))
(global-set-key (kbd  "C-<") 'my-here-string)
2
27.01.2020, 19:57
  • 1
    Спасибо, интересное решение, но я все еще предпочитаю ответ @Tom, потому что я полагаю что завершение неправильный при файле сценария удара. –  enzotib 05.09.2011, 19:37

Связать < кому: self-insert-command в режиме удара и затем это вставит только символ.

По умолчанию это связывается с sh-maybe-here-document когда в режиме удара и что функция делает автовставку.

Вот способ оживиться ключ:

(add-hook 'sh-set-shell-hook 'my-disable-here-document)

(defun my-disable-here-document ()
  (local-set-key "<" 'self-insert-command))
6
27.01.2020, 19:57
  • 1
    Можно ли дать еще некоторую информацию о том, что точно вставить в init файл? Извините, но я - пользователь emacs's новичка. –  enzotib 05.09.2011, 13:04
  • 2
    я добавил простой пример к своему ответу. Это отключает автоматическую вставку в каждом виде оболочки, не только колотят, но и probaly, это - то, что Вы хотите так или иначе. –  Tom 05.09.2011, 13:31
  • 3
    , Это решение больше не работает (протестированный на emacs 24.3), потому что < связывается с self-insert-command по умолчанию. –  T. Verron 20.02.2015, 17:34

Введите <C-q <<

1
27.01.2020, 19:57
  • 1
    Это короче, чем мое обходное решение и возможно полезно для других ситуаций также, но не точно, что я искал. Спасибо так или иначе. –  enzotib 05.09.2011, 14:48

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

2
27.01.2020, 19:57

После взгляда на: 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.")
1
27.01.2020, 19:57

Теги

Похожие вопросы