2012-12-06 19 views
6

Vim'i PyRoom/TextRoom yerine dikkat dağıtıcı yazma için kullanmak istiyorum. VimRoom'dan bahseden This post, bana çoğu ayarı nasıl alacağımı gösterebilirdi.Vim'de backspace ve delete tuşları nasıl iptal edilir?

Sadece TextRoom tarzı akış modunu etkinleştirmek için nasıl özledim:

nasıl anahtarları geri tuşuna devre dışı bırakmak ve silebilirsiniz (değil d $ gibi kısayolları)?

+0

Engellenmiş bir arka alan "dikkat dağıtıcı" yazmayı nasıl destekliyor? Sadece yazım hataları yap ve onları bırak, çünkü kendini düzeltmek için dikkat dağıtıcı mı? Bazı arka plan gerekçeleri bu soruyu artıracaktır. – Kaz

+1

@Kaz Akışla ilgili. Düzyazı yazarken, yazmayı ve yaptığınız her kelimeyi veya hatayı düşünmemek için iyi bir fikirdir. Amaç akan şeylerden kurtulmak ve kafanızdan fikir akışını, yol boyunca durmadan, metne taşımaktır. Kod yazmak için hiç denemedim, ama aynı "akışa gir" -deyin de doğru olabilir. – mcbetz

cevap

12

Sen özel <Nop> hedefe eşleştirerek tek tek tuşları devre dışı bırakabilirsiniz:

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

+0

Tamamen sorumu yanıtladı! – mcbetz

-1

Bir yaparak, vim olmadan akabilir (sadece ekleme modunda onları devre dışı istediğimi varsayarsak.) ham modda tty'den okuyan ve backspace ve DEL dahil olmak üzere çoğu kontrol karakterine izin vermeyen kabuk komut dosyaları ve ikişer ikişer yankılanır: doğrudan bir kez terminale ve bir kez standart çıkışa, böylece işinizi bir dosyaya yönlendirebilirsiniz.

#!/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 

kaydet bu flow, chmod a+x flow ve tıpkı:

$ 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!! 

boş bir ekran gerektiriyorsa, clear birinci veya komut dosyasına ekran temizlenmesini ekleyin.

+0

Akıllı olsa da, bu sorulan soruya gerçekten cevap vermiyor. – jskulski

+0

@jskulski X-Y sorunu. Soru X için sorar, fakat asıl problem Y'dir. Bu cevap Y: Adresinin, metnin "akış" girişine izin veren (daha sonra Vim ile kolayca masaj yapılabilen) bir programın uygulanmasıdır. Hiç akıllı değil, sadece basit kabuklu betik. – Kaz

İlgili konular