Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Vim中禁用退格和删除键?_Vim - Fatal编程技术网

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

如何在Vim中禁用退格和删除键?,vim,Vim,我想使用Vim进行无干扰的写作,而不是使用PyRoom/TextRoom,其中提到了VimRoom,可以告诉我如何获得大多数设置 我只想知道如何启用文本室样式的流模式: 如何禁用退格和删除键(而不是像d$这样的快捷键)?您可以通过将单个键映射到特殊的目标来禁用它们: :inoremap <BS> <Nop> :inoremap <Del> <Nop> :inoremap :重新映射 (假设您只希望在插入模式下禁用它们。)您可以在没有vim的情况

我想使用Vim进行无干扰的写作,而不是使用PyRoom/TextRoom,其中提到了VimRoom,可以告诉我如何获得大多数设置

我只想知道如何启用文本室样式的流模式:


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

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

:inoremap <BS> <Nop>
:inoremap <Del> <Nop>
:inoremap
:重新映射

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

您可以在没有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

如果您需要一个空白屏幕,
首先清除
或将屏幕清除添加到脚本中。

完全回答了我的问题!禁用退格如何促进“无分心”写作?只是打错字并留下它们,因为纠正自己会分散注意力?一些背景理论可以改善这个问题。@Kaz这是关于流程的。当你写散文时,保持写作,不要想你犯的每一个字或每一个错误,这是一个好主意。我们的目标是让你的思想源源不断地流淌到文字中,而不是一路上让自己停滞不前。我从来没有在编写代码时尝试过它,但同样的“进入流程”想法也可能是正确的。虽然很聪明,但这并不能真正回答所问的问题。@jskulski X-Y问题。问题是问X,但真正的问题是Y。这个答案解决了Y:一个允许文本“流动”输入的程序的实现(之后可以很容易地用Vim进行处理)。一点也不聪明,只是基本的shell脚本。
$ 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!!