11

我想用 Vim 代替 PyRoom/TextRoom 进行无干扰的写作。这篇提到 VimRoom 的帖子已经可以告诉我如何获得大多数设置。

我只是想念如何启用 TextRoom 风格的流模式:

如何禁用退格键和删除键(不是 d$ 之类的快捷方式)?

4

2 回答 2

19

您可以通过将它们映射到特殊<Nop>目标来禁用单个键:

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

(假设您只想在插入模式下禁用它们。)

于 2012-12-06T10:26:21.703 回答
-1

您可以在没有 vim 的情况下进行流程,方法是制作一个 shell 脚本,该脚本在原始模式下从 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

将此另存为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 回答