PyRoom/TextRoom の代わりに、気を散らさずに書くために Vim を使用したいと考えています。VimRoom について言及しているこの投稿では、ほとんどの設定を取得する方法を既に説明できました。
TextRoom スタイルのフロー モードを有効にする方法が欠けているだけです。
バックスペースと削除キー (d$ のようなショートカットではない) を無効にするにはどうすればよいですか?
PyRoom/TextRoom の代わりに、気を散らさずに書くために Vim を使用したいと考えています。VimRoom について言及しているこの投稿では、ほとんどの設定を取得する方法を既に説明できました。
TextRoom スタイルのフロー モードを有効にする方法が欠けているだけです。
バックスペースと削除キー (d$ のようなショートカットではない) を無効にするにはどうすればよいですか?
<Nop>
個々のキーを特別なターゲットにマッピングすることで無効にすることができます:
:inoremap <BS> <Nop>
:inoremap <Del> <Nop>
(挿入モードでのみ無効にしたいと仮定します。)
raw モードで tty から読み取り、バックスペースや DEL を含むほとんどの制御文字を許可しないシェル スクリプトを作成することで、vim なしでフローできます。1 回は端末に直接、もう 1 回は標準出力にエコーします。作業をファイルにリダイレクトできます。
#!/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
これを として保存し、次のようflow
にchmod a+x flow
します。
$ 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!!
空白の画面が必要な場合は、clear
最初に、またはスクリプトに画面のクリアを追加します。