11

PyRoom/TextRoom の代わりに、気を散らさずに書くために Vim を使用したいと考えています。VimRoom について言及しているこの投稿では、ほとんどの設定を取得する方法を既に説明できました。

TextRoom スタイルのフロー モードを有効にする方法が欠けているだけです。

バックスペースと削除キー (d$ のようなショートカットではない) を無効にするにはどうすればよいですか?

4

2 に答える 2

19

<Nop>個々のキーを特別なターゲットにマッピングすることで無効にすることができます:

:inoremap <BS> <Nop>
:inoremap <Del> <Nop>

(挿入モードでのみ無効にしたいと仮定します。)

于 2012-12-06T10:26:21.703 に答える
-1

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

これを として保存し、次のようflowchmod 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最初に、またはスクリプトに画面のクリアを追加します。

于 2014-09-29T23:45:39.040 に答える