2012-12-06 5 views
6

저는 PyRoom/TextRoom 대신 주의력없는 자유로운 쓰기를 위해 Vim을 사용하고 싶습니다. VimRoom을 언급 한 This post은 이미 대부분의 설정을 가져 오는 방법을 보여줍니다.Vim에서 백 스페이스를 비활성화하고 키를 삭제하는 방법은 무엇입니까?

가 난 단지 TextRoom 스타일의 흐름 모드를 활성화하는 방법을 그리워 :

어떻게 키가 백 스페이스를 해제하고 삭제할 수 있습니다 (하지 d 개 $ 같은 바로 가기)?

+0

비활성화 된 백 스페이스는 "주의 산만 함"을 어떻게 촉진합니까? 오타를 남기고 그대로두면 자신을 교정하기가 쉽지 않으니까요? 어떤 배경 근거는이 질문을 향상시킬 것입니다. – Kaz

+1

@ 카즈 그것은 흐름에 관한 것입니다. 산문을 쓸 때 글쓰기를 계속하고 모든 단어 나 실수를 생각하지 않는 것이 좋습니다. 목표는 눈물을 흘리며 길에서 자신을 멈추지 않고 머리에서 텍스트로 아이디어의 흐름을 가져 오는 것입니다. 나는 코드를 작성하려고 시도한 적이 없지만 동일한 "흐름에 들어감"- 입수가 사실 일 수도 있습니다. – mcbetz

답변

12

당신은 특별한 <Nop> 대상에 매핑하여 개인 키를 비활성화 할 수 있습니다

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

+0

완전히 내 질문에 답변했습니다. – mcbetz

-1

당신이함으로써, 정력없이 흐를 수 (만 삽입 모드에서이를 사용할 수 원하는 당신을 가정.) 셸 스크립트는 원시 모드에서 tty를 읽고 백 스페이스와 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 

저장이 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 첫 번째 또는 스크립트에 화면 클리어를 추가합니다.

+0

영리한 동안이 질문에 실제로 대답하지 않습니다. – jskulski

+0

@jskulski X-Y 문제. 질문은 X를 묻지 만 실제 문제는 Y입니다.이 답변은 Y : 텍스트의 "흐름"입력을 허용하는 프로그램의 구현을 설명합니다 (나중에 Vim으로 쉽게 마사지 할 수 있음). 영리하지 않고 기본 쉘 스크립팅 만합니다. – Kaz

관련 문제