如何在Vim中禁用退格键和删除键?

时间:2012-12-06 10:07:49

标签: vim

我想使用Vim进行无干扰的写作而不是PyRoom / TextRoom。提到VimRoom的This post已经可以告诉我如何获得大部分设置。

我只想念如何启用TextRoom样式流模式:

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

2 个答案:

答案 0 :(得分:15)

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

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

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

答案 1 :(得分:-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或将屏幕清除添加到脚本中。