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最初に、またはスクリプトに画面のクリアを追加します。