2017-05-17 1 views
2

Während ich Emacs benutze, um ein Bash Shell Skript (#!/Bin/sh) zu bearbeiten, versuche ich immer "< < <" einzugeben, auf der dritten Klammer platziere 'EOF' direkt nach der Klammer, und legt zwei Wagenrücklauf am Ende der Zeile und schreibt wieder ‚EOF‘, wie unten:Emacs fügt EOF für "<<<" ein

resiline=$(grep -w -n "$searchstring" input/*) 
    resifile=$(cut -d \: -f 1 <<<EOF $resiline) 

EOF 

Warum es dies tut und wie verhindere ich von ihm, das zu tun?

+1

Hier-Dokumente mit zwei Pfeilen wie '<<' und nicht '<<<' was für hier-Strings gedacht ist, gibt es wieder ein Shell-spezifisches Feature. – Inian

Antwort

2

Dies geschieht, weil sh-electric-here-document-mode aktiviert ist. Um es interaktiv zu deaktivieren, tun Sie einfach M-xsh-electric-here-document-mode.

In Emacs 24 wurde dieser untergeordnete Modus standardmäßig von sh-mode aktiviert, aber Sie könnten sh-mode-hook verwenden, um es wieder zu deaktivieren.

In Emacs 25 sh-mode-hook enthält sh-electric-here-document-mode standardmäßig (statt sh-mode es direkt aufrufen), so dass Sie es via entfernen:
Mxcustomize-optionRETsh-mode-hookRET