Ilekroć edytuję skrypt powłoki w emacsie i wpisuję trzy szewrony, aby przekierować nieprzetworzony ciąg na standardowe wejście, emacs wstawia znaki „EOF” i nową linię między nimi, więc
cat <<< 'some string'
staje się
cat <<EOF
< 'some string'
Mogę cofnąć się i usunąć dodatkowe znaki, aby uzyskać bufor w żądanym stanie, ale jest to bardzo wstrętne zachowanie i wydaje się, że dzieje się to tylko w trybie skryptu powłoki, który zwykle jest jedynym czasem, kiedy wpisuję ten wzorzec. Czy istnieje sposób na wyłączenie tego zachowania?
bash
shell-mode
Erik
źródło
źródło
<<<
pomocąC-3 <
.sh-mode-hook
nie działało dla mnie, ale działałosh-set-shell-hook
.glucas ma dokładnie rację, ale aby uzupełnić swoją odpowiedź, mam ten fragment kodu, którego użyłem, aby sprawić, by wstawianie dokumentów było trochę mądrzejsze.
Ta rada w połączeniu z
sh-electric-here-document-mode
włączoną sprawi, że jeśli wpiszesz dwa szewrony, utworzony zostanie tutaj automatyczny dokument, ale jeśli następny znak, który wpiszesz, będzie innym szewronem, zostanie on cofnięty i pozostanie tylko <<<.Oczywiście oznacza to, że jeśli rzeczywiście chcą rozpocząć tutaj doc z Chevron, musisz się surowy wkładka nim C-q<. To zależy od tego, co robisz więcej, jeśli wykonasz więcej tutaj łańcuchów niż tutaj dokumentów, to może być miło mieć, nawet jeśli nie, rzadko zdarza się, że chcesz zacząć tutaj dokument z szewronem i być niewygodnym.
źródło