我想用 Vim 代替 PyRoom/TextRoom 进行无干扰的写作。这篇提到 VimRoom 的帖子已经可以告诉我如何获得大多数设置。
我只是想念如何启用 TextRoom 风格的流模式:
如何禁用退格键和删除键(不是 d$ 之类的快捷方式)?
您可以通过将它们映射到特殊<Nop>
目标来禁用单个键:
:inoremap <BS> <Nop>
:inoremap <Del> <Nop>
(假设您只想在插入模式下禁用它们。)
您可以在没有 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
将此另存为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
首先或将屏幕清除添加到脚本中。