2012-12-06 22 views
6

PyRoom/TextRoomではなく、気を散らすことのない書き込みにVimを使用したいと思います。 VimRoomに言及しているThis postは、ほとんどの設定を取得する方法をすでに示している可能性があります。Vimでバックスペースと削除キーを無効にする方法は?

私だけTextRoomスタイルフローモードを有効にする方法を欠場:

は、どのように私はバックスペースを無効にして、キー(Dの$などのないショートカット)を削除することができますか?

+0

無効にされたバックスペースは「気を散らすことなく」書き込みをどのように促進しますか?あなた自身を訂正するために気を散らすので、単にタイプミスをしてそれらを残しますか?いくつかの背景根拠がこの問題を改善するだろう。 – Kaz

+1

@Kazそれは流れについてです。散文を書くときは、執筆を続けて、あなたが作るすべての単語や間違いを考えないことが良い考えです。目的は流れて、途中で自分を止めることなく、あなたの頭の中のアイデアの流れをテキストに持っていくことです。私はコードを書いてみたことはありませんでしたが、同じ "get into flow" -ideaも真実かもしれません。 – mcbetz

答えて

12

あなたは特別な<Nop>ターゲットにそれらをマッピングすることによって、個々のキーを無効にすることができます

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

(あなたが唯一の挿入モードでそれらを無効にしたいと仮定。)

+0

完全に私の質問に答えました! – mcbetz

-1

あなたが行うことで、vimをせずに流れることができます。シェルスクリプトは、rawモードでttyから読み込み、バックスペースやDELを含むほとんどの制御文字を許可せず、ターミナルに一度、標準出力に一回、作業をファイルにリダイレクトできるように2回エコーします。

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

+0

賢い間に、これは本当に質問された質問に答えるものではありません。 – jskulski

+0

@jskulski X-Y問題。質問はXを要求しますが、実際の問題はYです。この答えはY:テキストの "フロー"入力を可能にするプログラムの実装です(後でVimで簡単にマッサージすることができます)。基本的なシェルスクリプティングだけでは賢明ではありません。 – Kaz

関連する問題