2012-12-06 45 views
6

我想用Vim代替PyRoom/TextRoom來分心寫作。提到VimRoom的This post已經可以告訴我如何獲得大部分設置。如何在Vim中禁用退格鍵和刪除鍵?

我只錯過了如何啓用TextRoom風格流量模式:

如何禁用退格鍵和刪除鍵(快捷方式不一樣d $)?

+0

殘障backspace如何促進「分心免費」寫作?只是做錯別字,並離開他們,因爲它是分心糾正自己?一些背景理由會改善這個問題。 – Kaz

+1

@Kaz這是關於流量。當你寫散文的時候,不停地寫作並不要去想每一個單詞或者你犯的錯誤。我們的目標是讓流暢的思想從頭腦中傳遞到文本,而不會停下腳步。我從來沒有嘗試過編寫代碼,但同樣的「進入流程」-idea也可能是真實的。 – mcbetz

回答

12

您可以將它們映射到特殊<Nop>目標禁用個別鍵:

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

(假設你只希望他們在插入模式中被禁用。)

+0

完全解答了我的問題! – mcbetz

-1

可以流動而不VIM,通過使在原始模式下讀取tty的shell腳本,並且不允許大多數控制字符(包括backspace和DEL),並且迴響兩次:一次直接傳送到終端,一次傳送到標準輸出,以便將工作重定向到文件。

#!/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可輕鬆處理該程序)。根本不聰明,只是基本的shell腳本。 – Kaz

相關問題