Всякий раз, когда я редактирую скрипт оболочки в emacs и набираю три шеврона, чтобы перенаправить необработанную строку в stdin, emacs вставляет символы 'EOF' и новую строку между ними, поэтому
cat <<< 'some string'
становится
cat <<EOF
< 'some string'
Я могу вернуться и удалить дополнительные символы, чтобы получить буфер в нужном мне состоянии, но это очень неприятное поведение, и, похоже, это происходит только в режиме сценария оболочки, который обычно является единственным разом, когда я набираю этот шаблон. Есть ли способ отключить это поведение?
bash
shell-mode
Erik
источник
источник
<<<
сC-3 <
.sh-mode-hook
не работал для меня, ноsh-set-shell-hook
сделал.Глюкас в точности верен, но в дополнение к его ответу у меня есть этот фрагмент кода, который я использовал сам, чтобы сделать здесь вставку документа немного умнее.
Этот совет в сочетании с
sh-electric-here-document-mode
включенным делает так, что если вы наберете два шеврона, будет создан автоматический документ, но если следующий набранный вами символ - другой шеврон, он вернется, и у вас останется только <<<.Конечно , это означает , что если вы на самом деле хотите , чтобы начать здесь документ с шевроном, вам нужно сырье вставить его, C-q<. Так что это зависит от того, что вы делаете больше, если вы делаете больше здесь строк, чем здесь документов, это может быть приятно иметь, даже если вы этого не сделаете, редко вы захотите начать здесь документ с шевроном и быть неудобным.
источник