È possibile scorrere senza vim, facendo una script di shell che leggono dal tty in modalità raw e non consentono la maggior parte dei caratteri di controllo, inclusi backspace e DEL, ed echeggia le cose due volte: una volta direttamente sul terminale e una volta sullo standard output in modo da poter reindirizzare il lavoro su un file.
#!/bin/sh
saved_tty=$(stty -g < /dev/tty)
bail()
{
stty $saved_tty < /dev/tty
exit $?
}
trap bail EXIT INT
stty raw -echo < /dev/tty
while true ; do
ch=$(dd bs=1 count=1 < /dev/tty 2> /dev/null)
code=$(printf "%d" "'$ch")
if [ $code -eq 4 ] ; then
printf "\r\n" > /dev/tty
printf "\n"
break
elif [ $code -eq 13 -o $code -eq 10 ] ; then
printf "\r\n" > /dev/tty
printf "\n"
elif [ $code -ge 32 -a $code -lt 127 ] ; then
printf "%s" "$ch" > /dev/tty
printf "%s" "$ch"
fi
done
Salva questo come flow
, chmod a+x flow
e proprio:
$ flow > file.txt
Backspace and del not allowed
here just type and type.
Then hit Ctrl-D when you're done; no Enter
required.
$ flow
ffoorrggoott ttoo rreeddiirreecctt!!
Se avete bisogno di uno schermo vuoto, clear
prima o aggiungere compensazione schermo allo script.
Come fa un backspace disabilitato a promuovere la scrittura "distraction free"? Basta fare errori di battitura e lasciarli perché è fonte di distrazione correggere te stesso? Alcune motivazioni di fondo migliorerebbero questa domanda. – Kaz
@ Kaz Riguarda il flusso. Quando scrivi la prosa, è una buona idea continuare a scrivere e non pensare a ogni singola parola o errore che fai. L'obiettivo è quello di fluire e portare il flusso di idee dalla tua testa al testo, senza fermarti lungo la strada. Non l'ho mai provato per scrivere codice, ma lo stesso "entra in circolazione", anche l'idea potrebbe essere vera. – mcbetz